Está en la página 1de 5

Tec.

En Ingeniera en Sistemas

Gua Prctica No 8 Manejo de sesiones y cookies con JSP


OBJETIVOS Al finalizar la Prctica, el estudiante ser capaz de: Desarrollar aplicaciones utilizando sesiones con JSP JSP. Crear aplicaciones utilizando cookies con JSP JSP. PROCEDIMIENTO

Administracin de usuarios. Un caso prctico donde poder usar las sesiones es en las pginas a las que se debe acceder habiendo introducido previamente un usuario y una clave. Si no se introducen estos datos no se podrn visualizar y de igual modo si alguien intenta entrar directamente a una de estas pginas sin haberse identificado ser redirigido a la pgina principal para que se identifique y, de este modo, no pueda acceder de forma annima. La primera pgina de la aplicacin JSP es en la que el usuario se debe identificar con un nombre de usuario y una clave por lo que su aspecto ser el de un formulario. La pgina JSP contiene el formulario el cual especifica la pgina destino cuando el usuario pulse el botn de enviar los datos. Adems se ha aadido una comprobacin en la que en caso de recibir un parmetro llamado error se muestra el mensaje que contenga. De esta forma el usuario suario ve qu tipo de error se ha producido. login.jsp <%@page contentType="text/html; charset=iso charset=iso-8859-1" session="true" language="java" import="java.util.*" %> <html> <head><title>Proceso de login</title> </head> <body> <b>Proceso de identificacin</B> <p> <% if(request.getParameter("error")!=null) Esta pgina es la encargada de recoger del usuario y la clave enviados desde el formulario. Una vez recibidos se almacenan en dos variables(usuario y clave) de tipo String. A continuacin se comparan con los valores correctos del usuario y la clave. Si esta comprobacin es correcta se crea un objeto de tipo session y se guarda el valor en la variable usuario en la sesin mediante el mtodo setAttribute(). A continuacin y mediante la opcin estndar <jsp <jsp: : fordward> se redirecciona al usuario a la pgina final en la que se encuentra el men de opciones al que se accede despus de haber completado de forma satisfactoria el proceso de identificacin. En caso que la comprobacin de usuario y clave no se cumpla se redirecciona al usuario hacia la pgina de inicio, para que vuelva a identificarse incluyendo esta vez un parmetro llamado error con un mensaje que avisar de qu es lo que le ha ocurrido.

Aplicaciones Cliente Servidor

Pgina 80.

Tec. En Ingeniera en Sistemas

checklogin.jsp <%@ page session="true" %> <% String usuario = ""; String clave = ""; if (request.getParameter("usuario") != null) usuario = request.getParameter("usuario"); if (request.getParameter("clave") != null) clave = request.getParameter("clave"); if (usuario.equals("spiderman") && clave.equals("librojsp")) { HttpSession sesionOk = request.getSession(); sesionOk.setAttribute("usuario",usuario); %> <jsp:forward page="menu.jsp" /> <% } else { %> <jsp:forward page="login.jsp"> <jsp:param name="error" value="Usuario y/o clave incorrectos.<br>Vuelve a intentarlo."/> </jsp:forward> <% } %> menu.jsp <%@ page session="true" %> <% String usuario = ""; HttpSession sesionOk = request.getSession(); if (sesionOk.getAttribute("usuario") == null) { %> <jsp:forward page="login.jsp"> <jsp:param name="error" value="Es obligatorio identificarse"/> </jsp:forward> <% } else { usuario = (String)sesionOk.getAttribute("usuario"); } %> <html> <head><title>Proceso de login</title> </head> <body> <b>PROCESO DE IDENTIFICACIN</b><p> <b>Men de administracin</b><br> <b>Usuario activo:</b> <%=usuario%><p> <li> <a href="opc1.jsp">Crear nuevo usuario</a> <li> <a href="opc2.jsp">Borrar un usuario</a> <li> <a href="opc3.jsp">Cambiar clave</a> <p> <li> <a href="cerrarsesion.jsp">Cerrar sesin</a> </body> </html> La ltima opcin que incorpora el men es la de Cerrar sesin, que ser de gran utilidad

Aplicaciones Cliente Servidor

Pgina 81.

Tec. En Ingeniera en Sistemas

cuando se haya finalizado el trabajo y queremos estar seguro que nadie realiza ninguna accin con nuestro usuario y clave. Al pulsar este enlace, se recupera de nuevo la sesin y mediante el mtodo invalidate() se da por finalizada la sesin. cerrarsesion.jsp <%@ page session="true" %> <% HttpSession sesionOk = request.getSession(); sesionOk.invalidate(); %> <jsp:forward page="login.jsp"/> Utilizar cookies Para realizar un ejemplo prctico se va a seguir con el ejemplo de Sesiones. El objetivo ser modificar las pginas necesarias para que si el usuario selecciona un campo de tipo checkbox (que ser necesario aadir) el nombre de usuario le aparezca por defecto cuando vuelva a entrar a esa pgina. Este nombre de usuario estar guardado en un cookie en su ordenador. El primer paso es aadir el checkbox en la pgina login.jsp: <%@ page session="true" import="java.util.*"%> <% String usuario = ""; String fechaUltimoAcceso = ""; /*Bsqueda del posible cookie si existe para recuperar su valor y ser mostrado en el campo usuario */ Cookie[] todosLosCookies = request.getCookies(); for (int i=0; i<todosLosCookies.length; i++) { Cookie unCookie = todosLosCookies[i]; if (unCookie.getName().equals("cokieUsu")) { usuario = unCookie.getValue(); } } /* Para mostrar la fecha del ltimo acceso a la pgina. Para ver si el cookie que almacena la fecha existe, se busca en los cookies existentes. */ for (int i=0; i<todosLosCookies.length; i++) { Cookie unCookie = todosLosCookies[i]; if (unCookie.getName().equals("ultimoAcceso")) { fechaUltimoAcceso = unCookie.getValue(); } } /* Se comprueba que la variable es igual a vaco, es decir no hay ningn cookie llamado ultimoAcceso, por lo que se recupera la fecha, y se guarda en un nuevo cookie. */ if (fechaUltimoAcceso.equals("")) { Date fechaActual = new Date(); fechaUltimoAcceso = fechaActual.toString(); Cookie cookieFecha = new Cookie("ultimoAcceso",fechaUltimoAcceso); cookieFecha.setPath("/"); cookieFecha.setMaxAge(60*60*24); response.addCookie(cookieFecha); } %> <html> <head><title>Proceso de login</title>

Aplicaciones Cliente Servidor

Pgina 82.

Tec. En Ingeniera en Sistemas

</head> <body> <b>PROCESO DE IDENTIFICACIN</b> <br>ltima vez que accedi a esta pgina:<br><%=fechaUltimoAcceso%> <p> <% if (request.getParameter("error") != null) { out.println(request.getParameter("error")); } %> <form action="checklogin.jsp" method="post"> usuario: <input type="text" name="usuario" size="20" value="<%=usuario%>"><br> clave: <input type="password" name="clave" size="20"><br> Recordar mi usuario: <input type="checkbox" name="recordarUsuario" value="on"><br> <input type="submit" value="enviar"> </form> </body> </html> El siguiente paso es modificar la pgina checklogin.jsp que recoge el usuario y clave introducidos y por lo tanto ahora tambin la nueva opcin de Recordar mi usuario. Dentro de la condicin que se cumple si el usuario y la clave son correctos, y despus de crear la sesin, escribimos el cdigo que crear el cookie con el usuario. El primer paso es comprobar que el usuario ha activado esta opcin, es decir, ha seleccionado el checkbox. Tambin se realiza la comprobacin de que el campo recordarUsuario no llegue con el valor nulo y produzca un error en la aplicacin, en caso de que el usuario deje sin seleccionar el checkbox: <%@ page session="true" import="java.util.*"%> <% String usuario = ""; String clave = ""; if (request.getParameter("usuario") != null) usuario = request.getParameter("usuario"); if (request.getParameter("clave") != null) clave = request.getParameter("clave"); if (usuario.equals("spiderman") && clave.equals("librojsp")) { out.println("checkbox: " + request.getParameter("recordarUsuario") + "<br>"); HttpSession sesionOk = request.getSession(); sesionOk.setAttribute("usuario",usuario); if ((request.getParameter("recordarUsuario") != null) && (request.getParameter("recordarUsuario").equals("on"))) { out.println("entra"); Cookie cookieUsuario = new Cookie ("cokieUsu",usuario); cookieUsuario.setPath("/"); cookieUsuario.setMaxAge(60*60*24); response.addCookie(cookieUsuario); } /* Se realiza un proceso similar a la creacin de cookie de recordar el usuario. En este caso se trata de crear un nuevo cookie con el nuevo valor de la fecha y guardarlo con el mismo nombre. De esta forma ser borrado el anterior y prevalecer el valor del ltimo.

Aplicaciones Cliente Servidor

Pgina 83.

Tec. En Ingeniera en Sistemas

*/ Date fechaActual = new Date(); String fechaUltimoAcceso = fechaActual.toString(); Cookie cookieFecha = new Cookie("ultimoAcceso",fechaUltimoAcceso); cookieFecha.setPath("/"); cookieFecha.setMaxAge(60*60*24); response.addCookie(cookieFecha); %> <jsp:forward page="menu.jsp" /> <% } else { %> <jsp:forward page="login.jsp"> <jsp:param name="error" value="Usuario y/o clave incorrectos.<br>Vuelve a intentarlo."/> </jsp:forward> <% } %> EJERCICIOS

1. Crear una aplicacin que valide un usuario utilizando una base de datos con el nombre empleado y una tabla con el nombre usuarios con los campos siguientes: login y contrasea, Si el usuario es correcto, entonces se creara la sesin que guarde el login del usuario y se direccionara a una pagina jsp. 2. Crear la pagina jsp donde se re direccionara en el ejercicio #1, la cual permita validar si existe la sesin, en caso que no exista se direccionara a la pagina de validacin. 3. Realizar los ejercicios anteriores utilizando cookies.

Aplicaciones Cliente Servidor

Pgina 84.