Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/06/2011, 08:51
una_xikilla
 
Fecha de Ingreso: agosto-2008
Mensajes: 161
Antigüedad: 15 años, 8 meses
Puntos: 0
Problema Login MD5 con Servlet

Hola!

Estoy intentando loguearme con un servlet pero al ejecutar mi código no me sale nada en la pantalla y no entiendo por qué.
Tengo un pequeño formulario en el que hay que meter el dni y contraseña.
Lo he metido también en el xml.
Por favor, que alguien me ayude ;(

Código:
<script type="text/javascript" src="MD5.js"> </script>

<form action="Login" method="post">
    <table width="545" height="206" border="0" align="center" bgcolor="#FFFF66">
            <tr>
              <td height="40" colspan="2" align="center" valign="middle" bgcolor="#FF0000" class="Pestanas">CONFIRMA QUE ERES EL ADMINISTRADOR INTRODUCIENDO LOS DATOS</td>
        </tr>
            <tr>
              <td height="2" colspan="2" align="right" bgcolor="#FF0000"><img src="imagenes/transparent-wedge.gif" width="100%" height="2" /></td>
            </tr>

            <tr>
              <td width="196" align="right" bgcolor="#FFFF66" class="Nota"><span class="tituloRegistro Estilo13">DNI *</span></td>
              <td width="564" align="left" valign="middle" bgcolor="#FFFF66"><label for="textfield"></label>
                  <input name="dniAdmin" type="text" id="dniAdmin" size="9" maxlength="9" /></td>
            </tr>
            <tr>
              <td align="right" bgcolor="#FFFF66" class="Nota">CONTRASE&Ntilde;A *</td>
              <td align="left" valign="middle" bgcolor="#FFFF66"><label for="textfield"></label>
                  <input name="contrasena" type="password" id="contrasena" size="30" /></td>
            </tr>

            <tr>
              <td height="40" colspan="2" align="center" valign="bottom">
              <input name="EnviarForm" type="submit" class="TextoNormal" id="EnviarForm" value="Enviar" />
                  <input name="LimpiarForm" type="reset" class="TextoNormal" id="label" value="Limpiar formulario" /></td>
            </tr>
                  </table>
    </form>
Login.java

Código:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.sql.*;

public class Login extends HttpServlet {

  private String dni, pass, //En pass se guarda la que ingreso el usuario
             AttNombre ="", AttAppe ="",  //Para guardar los datos que nos regrese la BD
            SQLEx = "", EX = "";
  public Integer Error=null; //Los errores que podamos tener 

   private Boolean lectorBD(String Dni, String Pass){
        Boolean estado = false;

            try{
               String MySQLDriver ="com.mysql.jdbc.Driver",
                        DriGetConn = "jdbc:mysql://localhost:3306/proyectocasarural",
                        //El nombre de usuario y la contraseña para entrar a BD
                       userBD = "root", passBD ="",
                       passMD5="";

                Class.forName(MySQLDriver);
                Connection conexion = DriverManager.getConnection
                        (DriGetConn, userBD, passBD);
                Statement query = conexion.createStatement(
                        ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
                ResultSet rs = query.executeQuery("SELECT nombre, apellido FROM administrador WHERE dni='" + Dni +"' AND contrasena='" + Pass +"'");
                rs.first();
              
                passMD5 = rs.getString("contrasena");
                if(this.passMatch(passMD5, Pass)){
                  
                    this.AttNombre = rs.getString("Nombre");
                    this.AttAppe = rs.getString("Apellidos");
                    rs.close();
                    estado = true;
                }else {
                    this.Error = 3;
                }
                query.close(); conexion.close();
            }catch(SQLException ex){
               this.SQLEx = "Se produjo una excepción durante la conexión: "+ ex.toString();
               this.Error = 4;
            }catch(Exception ex){
                this.EX = "Se produjo una excepción: "+ ex.toString();
                this.Error = 5;
            }
        
        return estado;
    }

  
    private Boolean passMatch(String passMD5, String pass){
        if(this.pass.equals(passMD5)){
            return true;
        }else{
            return false;
        }
    }
	
	private boolean validar(String parDni, String parPass){
        Boolean estado = false;
        String falta = null;
		
	  String num = parDni.substring(0,8);
	  String let = parDni.substring(8,9);
	  Integer numero = Integer.parseInt(num);
	  numero = numero % 23;
	  String letra="TRWAGMYFPDXBNJZSQVHLCKET";
	  letra=letra.substring(numero,numero+1);
	  if (letra==let) {
	  	if (!parPass.isEmpty()){
		 		estado = true;
                this.dni = parDni;
                this.pass = parPass;
		        this.lectorBD(dni, pass);
	   	}else{ falta="Tiene que escribir su contraseña";}
	  }else{falta="Dni erroneo";}
		return estado;
    }


    @Override
  public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
	
		Boolean estado;
		String URL = "/ConectaBD/postLog.jsp";
        estado= this.validar(request.getParameter("dni"), request.getParameter("contasena"));
		HttpSession sesion = request.getSession(true);
		if(estado){
        	sesion.setAttribute("nombre", this.AttNombre);
	        sesion.setAttribute("ape", this.AttAppe);
		}else{
			URL = URL + "?error=" + this.Error;
		}
        response.sendRedirect(response.encodeURL(URL) );
    }

}