Hola, no se porque no me esta fucionando esta pagina de login, pero aparetemente el codigo esta bien, tengo el Eclipse 3.2 con el paquete de WTP actualizado, lo corro en debug y estas son las pantallas que me tira paso a paso. Lo que no entiedo es porque sale del try de buscarElUsuarioYLaPass despues de la linea Class.forName(DRIVER); (imagen 009) y salta directo al jsp sin volver para formar el QUERY y revisar los registros de la BD, porfavor, que alguien me ayude, quiero terminar ocn este login porque ya no doy mas, quiero avanzar!!!
Espero que salgan bien.
Aca esta el codigo:
validarUsuario.jsp
Código:
<%@page language="java" contentType="text/html"%>
<jsp:useBean id="validadorUsuario" scope="session" class="com.consultas.accesoabase.ValidadorUsuario"/>
<jsp:setProperty name="validadorUsuario" property="*"/>
<% boolean mostrarFormulario = false;
boolean mostrarError = false;
if(validadorUsuario.getUsuario() == null){
mostrarFormulario = true;
} else {
mostrarFormulario = !validadorUsuario.isValid();
mostrarError = mostrarFormulario;
}
%>
<html>
<head>
<title>Loguin de usuario</title>
</head>
<body>
<%
if (mostrarFormulario) {
%>
<form name="formulario" method="post" action="validarUsuario.jsp">
<input type="text" name="usuario">
<input type="password" name="password">
<input type="submit" name="Ingresar">
</form>
<%
if (validadorUsuario.isError()) {
%>
<h1>Un problema en nuestros servidores impidió procesar su ingreso.</h1>
<h1>Por favor, contáctese con el Administrador del sitio.</h1>
<%
} else if(mostrarError) {
%>
<h1>El nombre y/o la contraseña ingresados son invalidos</h1>
<%
}
} else {
%>
<h1>Bievenido <jsp:getProperty name="validadorUsuario" property="usuario"/></h1>
<%
}
%>
</body>
</html>
validadorUsuario.java
Código:
package com.consultas.accesoabase;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class ValidadorUsuario {
private String usuario;
private String password;
private String nombre;
private boolean valido = false;
private boolean hayError = false;
private boolean buscarElUsuarioYLaPass() throws SQLException{
Connection coneccion = null;
PreparedStatement sentencia = null;
ResultSet resultado = null;
String DRIVER = "org.apache.derby.jdbc.EmbeddedDriver";
String URL = "jdbc:derby:e:\\Usuarios";
String QUERY = "SELECT PASSWORD, USUARIO FROM AGUSTIN.LOGIN WHERE USUARIO=?";
boolean existe = false;
try {
System.out.println("Cargando el driver..."); //agregado de prueba
Class.forName(DRIVER);
System.out.println("Cargado OK."); //agregado de prueba
System.out.println("Conectando..."); //agregado de prueba
coneccion = DriverManager.getConnection(URL);
System.out.println("URL: "+URL); //agregado de prueba
System.out.println("Preparando sentencia..."); //agregado de prueba
sentencia = coneccion.prepareStatement (QUERY);
sentencia.setString(1, usuario);
System.out.println("Sentencia: "+sentencia); //agregado de prueba
sentencia.executeUpdate();
System.out.println("Sentencia despues del Update: "+sentencia);//agregado de prueba
resultado = sentencia.executeQuery(QUERY);
if(coneccion!=null){
System.out.println("OK - Se conecto"); //agregado de prueba
}
if (resultado.next()&& password.equals(resultado.getString("PASSWORD"))){
nombre = resultado.getString("USUARIO");
existe = true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (resultado != null) resultado.close();
if (sentencia != null) sentencia.close();
if (coneccion != null) coneccion.close();
}
return existe;
}
//Getters y Setters
public String getUsuario(){
return usuario;
}
public void setUsuario(String u){
usuario = u;
}
public void setPassword(String u){
password = u;
}
public String getNombre(){
return nombre;
}
public boolean isValid(){
if(valido) return true;
try{
valido = buscarElUsuarioYLaPass();
hayError = false;
}catch(Exception e){
valido = false;
hayError = true;
}
return valido;
}
public boolean isError(){
return hayError;
}
}
Muchas gracias a quien pueda darme una mano
Feliz año