Siempre te mostrará contaseña incorrecta, porque a la variable
user nunca le asignas un valor, por ende, cuando haces if(user != "") nunca se cumplirá ya que user está vacío, y por consiguiente, se ejecutará la sentencia else en la que muestras 'contraseña incorrecta'.
Te voy a dar algunos consejillos.
1. No mezcles código de modelo/negocio en tus vistas. Los scriptlets son malísimos desde un punto de vista de principios de desarrollo de software. Debes tener una capa de abstracción, que en tu caso es una clase llamada DB.
2. En lugar de scriplets usar JSTL (etiquetas).
Por ejemplo, esta clase se encarga del acceso a datos (DAO):
Código Java:
Ver originalpublic class LoginDao {
String sql
= "SELECT usuario FROM tusuario WHERE " + "userPrincipalName = ? AND pwdLastSet = ?";
try (Connection con
= ConnectionHelper.
getConnection(); PrepareStatement pst = con.prepareStatement(sql)) {
// validas username y password si deseas
while(rs.next()) {
return rs.getString("username");
}
e.printStackTrace();
return "";
}
}
}
Y así la usas en tu JSP:
Código XML:
Ver original<!-- esto va en el top de tu página JSP -->
<jsp:useBean id="userDao" class="tuspaquetes.UserDao" />
<!-- crea una variable 'loginUsername' y le asigna el retorno de la
llamada al método login(String username, String password) -->
<c:set var="user"
value="#{userDao.login(request.getParameter('username'), request.getParameter('password')}" />
<!-- si loginUsername no está vacío, login correcto -->
<c:if test="#{!user.isEmpty()}">
<c:set var="userPrincipalName" value="#{user}" scope="session" />
<c:set var="logged" value="#{true}" scope="session" />
<c:redirect url="bienvenido.jsp" />
</c:if>
<!-- caso contrario -->
<c:otherwise>
<script>alert('Usuario o contraseña incorrectos');</script>
</c:otherwise>
Fíjate que el resultado de la llamada al método login, se lo asignamos a 'user', y esta misma variable la asignamos al scope session.
1. <c:set> Establece variables.
2. <c:if> If
3. <c:otherwise> Else
4. <jsp:useBean> Usar una clase en JSP (como hacer import)
5. <c:redirect> Redireccionar