Paseo de Manuel Lardizbal 13. 20018 Donostia-San Sebastin. Tel.: 943 219 877 Fax: 943 311 442 www.tecnun.es informacion@tecnun.es Prctica 10: Sesin en Servlets Ej ercicio 10.1: Servlets con gestin de sesin Instalar, probar y entender el funcionamiento de los siguientes servlets contenidos en el fichero de fuentes del capitulo: http://www.tecnun.es/asignaturas/informat2/Material/Libro/sesiones.zip (Descomprimir dicho fichero en el directorio webapps para que se cree la estructura de directorios de la aplicacin sesiones.) El servlet ShoppingCart.java guarda en campos ocultos (type = hidden) los valores introducidos por el usuario. El servlet ShowSession.java muestra como crear una sesin y guardar y recuperar datos en la misma.
Ej ercicio 10.2: Escritura de valores en una sesin Probar el funcionamiento de SessionServlet.java y realizar los siguientes cambios: En SessionServlet.java aadir a la salida de la pgina HTML un formulario que recoja el valor de dos variables, una conteniendo el nombre de un atributo de una sesin y la otra el valor de dicho atributo. Estas variables se deben enviar al mismo servlet. Para crear el formulario aadir despus de: out.println("</table></center>"); las lneas: out.println("<H2>Envo de atributo al servlet</H2>"); out.println("<FORM action=\"SessionServlet\" method=\"GET\">"); out.println("<INPUT type=\"text\" size=\"20\" name=\"dataname\">"); out.println("<BR>"); out.println("<INPUT type=\"text\" size=\"20\" name=\"datavalue\">"); out.println("<BR>"); out.println("<INPUT type=\"submit\">"); out.println("</FORM>"); En el mismo servlet, una vez obtenida la sesin, se deben leer las dos variables anteriores y si las dos no son nulas aadir el nuevo atributo con su valor a la sesin. Para leer los parmetros y crear el atributo, aadir despus de: HttpSession session = request.getSession(true); las lneas: String dataName = request.getParameter("dataname"); String dataValue = request.getParameter("datavalue"); if (dataName != null && dataValue != null) { session.setAttribute(dataName, dataValue); } Llamar al servlet desde el navegador: http://localhost:8080/sesiones/SessionServlet Comprobar que los nuevos atributos que se van aadiendo se muestran en la lista de atributos, as como que se puede cambiar el valor de un atributo existente. 38 Informtica II Ej ercicio 10.3: Guardar distintas solicitudes de un mismo usuario Se trata de simular el funcionamiento de una aplicacin, reservaLibros, que acepta reservas de libros (por ejemplo para su posterior compra o prstamo). La lista de libros que se pueden reservar se almacena en un fichero lista.txt que contiene la informacin del cdigo, ttulo y autor de cada libro. Cada libro se almacena en una fila del fichero, separados los campos por un tabulador. El objetivo es mostrar esta relacin de libros e ir aadindolos a una lista de reservas del usuario. Este fichero y los servlets iniciales se encuentran en el fichero de la prctica. 10.3.1. Servlet que muestra la relacin de libros Se dispone de un servlet, MostrarLibros.java, que muestra los libros contenidos en el fichero libros.txt. Se llama al servlet sin ningn parametro, con lo que se muestran todos los libros del fichero. http://localhost:8080/reservaLibros/MostrarLibros 10.3.2. Servlet que muestra la relacin de libros con posibilidad de seleccin de libros A partir del servlet MostrarLibros.java anterior, realizar el servlet MostrarLibrosCheck.java con las siguientes modificaciones sobre el original: La tabla debe estar incluida en un formulario html (<FORM ) que llame al servlet ya realizado RealizarReserva.java Cada lnea debe tener un checkbox que en el caso de marcarse enva el ISBN del libro Aadir un botn dentro del formulario que realice la llamada al servlet (input de tipo submit). Probar el servlet realizado. La salida originada por el servlet MostrarLibrosCheck.java es la que se muestra en la Figura 10.1. Figura 10.1. Relacin de libros para reservar 10.3.3. Servlet que realiza la reserva de un libro seleccionado Se dispone del servlet RealizarReserva.java que guarda en la sesin el cdigo de los libros reservados. Comprobar que con 2 navegadores distintos, se guardan valores distintos en cada sesin, no as desde 2 pestaas o 2 ventanas abiertas desde el mismo navegador. Este servlet se llama cuando se pulsa Submit Query en el formulario que muestra el servlet MostrarLibrosCheck.java (ver Figura 10.1). 10.3.4. Registro de un usuario El Servlet RealizarReserva.java busca el valor del atributo user y si no es nulo, lo muestra en lugar del ID de la sesin. Realizar un servlet que ponga este atributo con el valor que el usuario defina en un formulario. Para ello hay que crear un serlet de nombre RegistroUsuario.java que responde a la llamada del formulario registroUsuario.html. A continuacin se resumen los servlets que aparecen en la prctica con las caractersticas generales de cada uno de ellos: Aplicacin Servlet Formulario HttpSession Requiere modificacin sesiones ShoppingCart Si No No sesiones ShowSession No Si No sesiones SessionServlet Si Si Si reservaLibros MostrarLibros No No No reservaLibros MostrarLibrosCheck Si No Si reservaLibros RealizarReserva No Si No reservaLibros RegistroUsuario No Si Si