Sesiones en Servlets y JSP. Ejemplo de login y logout

David Galisteo Cantero

Vamos a ver cómo manejar sesiones en Java con servlets y jsp’s, idóneo para hacer inicio de sesión en una aplicación web.

Bien, suponemos que ya tenemos creado nuestro proyecto web, vamos a crear un archivo jsp e introduciremos un formulario:

<form action="login" method="POST">
   <input type="text" name="user" value="usuario" />
   <input type="password" name="password" value="contraseña" />
   <input type="submit" value="Enviar" />
</form>

Al pulsar en el botón «Enviar», el navegador redigirá al servlet «login», encargado de validar los datos:

public class login extends HttpServlet {
   ... 
   //metodo encargado de la gestión del método POST
    protected void processRequestPOST(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        HttpSession sesion = request.getSession();
        String usu, pass;
        usu = request.getParameter("user");
        pass = request.getParameter("password");
        //deberíamos buscar el usuario en la base de datos, pero dado que se escapa de este tema, ponemos un ejemplo en el mismo código
        if(usu.equals("admin") && pass.equals("admin") && sesion.getAttribute("usuario") == null){
            //si coincide usuario y password y además no hay sesión iniciada
            sesion.setAttribute("usuario", usu);
            //redirijo a página con información de login exitoso
            response.sendRedirect("loginExito.jsp");
        }else{
            //lógica para login inválido
        }
    }
    
   //método encargado de la gestión del método GET
    protected void processRequestGET(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        //me llega la url "proyecto/login/out"
        String action=(request.getPathInfo()!=null?request.getPathInfo():"");
        HttpSession sesion = request.getSession();
        if(action.equals("/out")){
            sesion.invalidate();
            response.sendRedirect("/home.jsp");
        }else{
           
        }
    }
 ...
}

Una vez logueados correctamente, vamos a la página «loginExito.jsp», en esta, podemos mostrar el siguiente mensaje:

Bienvenido ${sessionScope.usuario}

Con esto último, accedo mediante EL (Expression Language) al contexto de sesión y extraigo el nombre de usuario.

Para «desloguear» vamos al método processRequestGET, donde tenemos la lógica encargada para ello, si vamos a la url «rutaProyecto/login/out» entraremos dentro del condicional y se invalidará nuestra sesión (logout).

Como apunte, si en algún lugar de nuestra aplicación necesitamos tener a un usuario logueado, ya sea en un panel de administración, por ejemplo, nuestra primera tarea será comprobar si hay una sesión iniciada, por ejemplo:

if(sesion.getAttribute("usuario") == null){
   //redirijo al login
}

Espero que os haya sido de ayuda.

HackSaludos!

Publicado el 24-02-2014

Donar

Si te ha sido de ayuda y quieres hacer una donación te lo agradeceremos :)

Compartelo!


32 comentarios

Deja un comentario

Comentanos

*

Ir arriba de la pagina