* Ahora crearemos 2 formularios HTML 1 para el ingreso de usuarios y el otro para el registro.
login.jsp
Código java:
Ver original<%@taglib prefix="t" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%-- En caso de que exista una sesion iniciada redirecciono a index.jsp. "NO tiene caso mostrar este formulario cuando hay una sesion iniciada --%>
<t:if test="${sessionScope['sessionEmail']!=null}">
<% response.sendRedirect("index.jsp");%>
</t:if>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Iniciar sesion</title>
</head>
<body>
<h1>Iniciar sesion</h1>
<p><a href="register.jsp">Registrarse</a></p>
<p style="color: #ff0000">${sessionScope['error']}</p>
<form action="Login" method="post">
<p> Email: <input type="text" name="email"></p>
<p> Contraseña: <input type="password" name="password"></p>
<p><input type="submit" value="Entrar"></p>
</form>
</body>
</html>
register.jsp
Código java:
Ver original<%@taglib prefix="t" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%-- En caso de que exista una sesion iniciada redirecciono a index.jsp. "NO tiene caso mostrar este formulario cuando hay una sesion iniciada --%>
<t:if test="${sessionScope['sessionEmail']!=null}">
<% response.sendRedirect("index.jsp");%>
</t:if>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Registrarse</title>
</head>
<body>
<h1>Iniciar sesion</h1>
<p><a href="login.jsp">Iniciar Sesion</a></p>
<p style="color: #ff0000">${sessionScope['error']}</p>
<form action="Register" method="post">
<p>Nombre: <input type="text" name="name"></p>
<p>Email: <input type="text" name="email"></p>
<p>Contraseña: <input type="password" name="password1"></p>
<p>Confirma contraseña <input type="password" name="password2"></p>
<p><input type="submit" value="Entrar"></p>
</form>
</body>
</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 originalpackage servlets;
import beans.*;
import clases.*;
import java.util.regex.*;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class Register extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
/* En este proyecto; este servlet no recibe ni debe recibir nada por GET,
* asi que si se lleva a entrar al servelt
* usando el metodo GET solamente redireccion al index.jsp
*/
response.sendRedirect("index.jsp");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
HttpSession respuesta = request.getSession(true);
//Declaro e inicio las variables
String nombreUsuario
= request.
getParameter("name"); String emailUsuario
= request.
getParameter("email"); String password
= request.
getParameter("password1"); String confirm_password
= request.
getParameter("password2"); 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})$");
Matcher m = p.matcher(emailUsuario);
Validador v = new Validador();
Dao d = new Dao();
//Comienzo con las validaciones
/*
* Podemos hacer un monton de validaciones, por ejemplo:
* Campos no vacios, direccion de email valida, nombre de usuario y contraseña
* sin espacios y/o caracteres especiales.
*/
//campos vacios
if(nombreUsuario.isEmpty() || emailUsuario.isEmpty() || password.isEmpty() || confirm_password.isEmpty()){
respuesta.setAttribute("error", "Hay campos vacios");
} else {
//No hay campos vacios, veo que la direccion de email sea válida
if(m.find()){
respuesta.setAttribute("error", "La direccion de email no es correcta");
} else {
//La direccion de email si es correcta, verifico que la contraseña tambien lo sea
if(v.isUsernameOrPasswordValid(password)){
//Ahora verifico si la contraseña 1 y la contraseña 2 son iguales
if(password.equals(confirm_password)){
try {
d.conectar();
if(d.isEmailRegistered(emailUsuario)){
respuesta.setAttribute("error", "Esta direccion de correo ya fue registrada");
} else {
//Legado a este punto significa que todo esta correcto, por lo tanto ingreso a la DB
d.registerUser(emailUsuario, password, nombreUsuario);
respuesta.setAttribute("error", null);
}
d.desconectar();
} catch (Exception e
) { out.
println("Ocurrio la sig exception: " +e
); }
} else {
respuesta.setAttribute("error", "Las contraseñas no son iguales");
}
} else {
respuesta.setAttribute("error", "Contraseña no es válida");
}
}
}
response.sendRedirect("register.jsp");
}
}
-> continua debajo