Foros del Web » Programación para mayores de 30 ;) » Java »

Problema Login MD5 con Servlet

Estas en el tema de Problema Login MD5 con Servlet en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 30/06/2011, 08:51
 
Fecha de Ingreso: agosto-2008
Mensajes: 161
Antigüedad: 15 años, 7 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) );
    }

}
  #2 (permalink)  
Antiguo 30/06/2011, 13:29
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Problema Login MD5 con Servlet

La verdad es que veo varias cosas mal, aunque no he revisado mucho el código y puede que me equivoque en algo.

- Tu variable en el formulario se llama dniAdmin y sin embargo buscas dni.

- Supongo que estarás probando el login básico, porque no veo que estés ni encriptando ni desencriptando.

- No controlas las excepciones, por lo que es prácticamente imposible que te pueda redirigir a la página de error que pretendes. Por ejemplo un dni de 6 dígitos, peta y no te redirigirá a ningún lado.

- No deberías guardar los datos private String dni, pass,en el servlet. No entiendo por qué lo haces, pero decirte que el servlet se instancia una vez para todo el mundo.

http://www.adrformacion.com/cursos/j...tutorial3.html

Cita:
Instanciación y carga en memoria: se produce tras levantar Tomcat y leer el descriptor de despliegue web.xml de la aplicación a la que pertenece. Implica la creación, por parte del contenedor, de un objeto servlet mediante el método estático de java.lang.Class forName(String s) y el método newInstance() de Class.
A efectos prácticos es como si guardases esas variables como static.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: jsp-servlets, login, md5, servlet
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:35.