Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/07/2011, 14:00
iovan
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: [Aporte] Registro y Login de usuarios con JSP,SERVLETS,MySQL

* Ahora crearemos 2 formularios HTML 1 para el ingreso de usuarios y el otro para el registro.

login.jsp
Código java:
Ver original
  1. <%@taglib prefix="t" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  3. <%-- En caso de que exista una sesion iniciada redirecciono a index.jsp. "NO tiene caso mostrar este formulario cuando hay una sesion iniciada --%>
  4. <t:if test="${sessionScope['sessionEmail']!=null}">
  5.    <% response.sendRedirect("index.jsp");%>
  6. </t:if>
  7. <!DOCTYPE html>
  8. <html>
  9.    <head>
  10.        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  11.        <title>Iniciar sesion</title>
  12.    </head>
  13.    <body>
  14.        <h1>Iniciar sesion</h1>
  15.        <p><a href="register.jsp">Registrarse</a></p>
  16.        <p style="color: #ff0000">${sessionScope['error']}</p>
  17.        <form action="Login" method="post">
  18.            <p> Email: <input type="text" name="email"></p>
  19.            <p> Contraseña: <input type="password" name="password"></p>
  20.            <p><input type="submit" value="Entrar"></p>
  21.        </form>
  22.    </body>
  23. </html>

register.jsp
Código java:
Ver original
  1. <%@taglib prefix="t" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  3. <%-- En caso de que exista una sesion iniciada redirecciono a index.jsp. "NO tiene caso mostrar este formulario cuando hay una sesion iniciada --%>
  4. <t:if test="${sessionScope['sessionEmail']!=null}">
  5.    <% response.sendRedirect("index.jsp");%>
  6. </t:if>
  7. <!DOCTYPE html>
  8. <html>
  9.    <head>
  10.        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  11.        <title>Registrarse</title>
  12.    </head>
  13.    <body>
  14.        <h1>Iniciar sesion</h1>
  15.        <p><a href="login.jsp">Iniciar Sesion</a></p>
  16.        
  17.        <p style="color: #ff0000">${sessionScope['error']}</p>
  18.        <form action="Register" method="post">
  19.            <p>Nombre: <input type="text" name="name"></p>
  20.            <p>Email: <input type="text" name="email"></p>
  21.            <p>Contraseña: <input type="password" name="password1"></p>
  22.            <p>Confirma contraseña <input type="password" name="password2"></p>
  23.            <p><input type="submit" value="Entrar"></p>
  24.        </form>
  25.    </body>
  26. </html>

En el atributo action de la etiqueta form de ambos formularios vemos el nombre de 2 servlets "Register" y "Login"

Ahora pasaremos a trabajar en la capa de control.

Creando los servlets "Register" y "Login" - Nuevo Paquete llamado "servlets".
Click derecho "sobre le paquete servlets" luego en new --> servlet


Register.java
Código java:
Ver original
  1. package servlets;
  2.  
  3. import beans.*;
  4. import clases.*;
  5. import java.util.regex.*;
  6. import java.io.*;
  7. import javax.servlet.ServletException;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. import javax.servlet.http.HttpSession;
  12.  
  13. public class Register extends HttpServlet {
  14.  
  15.     @Override
  16.     protected void doGet(HttpServletRequest request, HttpServletResponse response)
  17.             throws ServletException, IOException {
  18.         /* En este proyecto; este servlet no recibe ni debe recibir nada por GET,
  19.          * asi que si se lleva a entrar al servelt
  20.          * usando el metodo GET solamente redireccion al index.jsp
  21.          */
  22.         response.sendRedirect("index.jsp");
  23.     }
  24.    
  25.     @Override
  26.     protected void doPost(HttpServletRequest request, HttpServletResponse response)
  27.             throws ServletException, IOException {
  28.         HttpSession respuesta = request.getSession(true);
  29.         PrintWriter out = response.getWriter();
  30.         //Declaro e inicio las variables
  31.         String nombreUsuario = request.getParameter("name");
  32.         String emailUsuario = request.getParameter("email");
  33.         String password = request.getParameter("password1");
  34.         String confirm_password = request.getParameter("password2");
  35.         Pattern p = Pattern.compile("^([0-9a-zA-Z]([_.w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-w]*[0-9a-zA-Z].)+([a-zA-Z]{2,9}.)+[a-zA-Z]{2,3})$");
  36.         Matcher m = p.matcher(emailUsuario);
  37.         Validador v = new Validador();
  38.         Dao d = new Dao();
  39.         //Comienzo con las validaciones
  40.         /*
  41.          * Podemos hacer un monton de validaciones, por ejemplo:
  42.          * Campos no vacios, direccion de email valida, nombre de usuario y contraseña
  43.          * sin espacios y/o caracteres especiales.
  44.          */
  45.        
  46.         //campos vacios
  47.         if(nombreUsuario.isEmpty() || emailUsuario.isEmpty() || password.isEmpty() || confirm_password.isEmpty()){
  48.             respuesta.setAttribute("error", "Hay campos vacios");
  49.            
  50.         } else {
  51.             //No hay campos vacios, veo que la direccion de email sea válida
  52.             if(m.find()){
  53.                 respuesta.setAttribute("error", "La direccion de email no es correcta");
  54.                
  55.             } else {
  56.                 //La direccion de email si es correcta, verifico que la contraseña tambien lo sea
  57.                 if(v.isUsernameOrPasswordValid(password)){
  58.                     //Ahora verifico si la contraseña 1 y la contraseña 2 son iguales
  59.                     if(password.equals(confirm_password)){
  60.                         try {
  61.                             d.conectar();
  62.                                 if(d.isEmailRegistered(emailUsuario)){
  63.                                     respuesta.setAttribute("error", "Esta direccion de correo ya fue registrada");
  64.                                 } else {
  65.                                    
  66.                                     //Legado a este punto significa que todo esta correcto, por lo tanto ingreso a la DB
  67.                                     d.registerUser(emailUsuario, password, nombreUsuario);
  68.                                     respuesta.setAttribute("error", null);
  69.                                 }
  70.                            
  71.                             d.desconectar();
  72.                              
  73.                         } catch (Exception e) { out.println("Ocurrio la sig exception: " +e); }
  74.                        
  75.                        
  76.                        
  77.                     } else {
  78.                         respuesta.setAttribute("error", "Las contraseñas no son iguales");
  79.                        
  80.                     }
  81.                    
  82.                 } else {
  83.                     respuesta.setAttribute("error", "Contraseña no es válida");
  84.                    
  85.                 }
  86.                
  87.                
  88.             }
  89.         }
  90.        
  91.         response.sendRedirect("register.jsp");
  92.        
  93.     }
  94.  
  95. }

-> continua debajo
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.