ALMACENAMIENTO DE INFORMACIÓN CON SERVLETS A través de estos ejercicios se pretende que el alumno comprenda las diferentes alternativas existentes para almacenar información en aplicaciones que utilicen servlets. Se abordan ejercicios para almacenar información persistente utilizando bases de datos y para almacenar información temporal utilizando datos de sesión y cookies. Aplicación 1. Repite la aplicación 4 del apartado de “manejo de métodos de la clase servlet” (la de la agenda) pero utilizando una base de datos en lugar de guardar la información en memoria. Comprueba que ahora, cuando desconectes el servidor Apache Tomcat y vuelvas a iniciarlo, la información es persistente. Nota: es necesario que crees una tabla en la base de datos en la que almacenar: el id del contacto, su nombre, su dirección, su teléfono y su email. Aplicación 2. Crea un sencillo gestor de contraseñas en una aplicación web. La aplicación consistirá en una web que disponga de dos formularios: • Un formulario con tres campos: nombre de usuario, nombre del sitio del que queremos guardar la contraseña y contraseña a almacenar. Este formulario dispondrá de un botón con el texto “Almacenar”, que, al ser pulsado, guardará la información indicada. Pueden darse dos situaciones: a) el usuario ya existe (su nombre de usuario ya aparecía en la base de datos) y sólo debemos almacenar la contraseña; b) el usuario no existe y tenemos que guardar el nuevo usuario y la contraseña que queremos almacenar. • Un formulario en el que indicar nuestro nombre de usuario un botón que diga “Mostrar contraseñas” que, al pulsarlo, nos lleve a una página en la que aparezcan las contraseñas que hemos guardado y el sitio al que pertenecen. Para desarrollar esta aplicación deben crearse dos tablas en la base de datos del siguiente modo: • Tabla Usuarios que dispone de dos campos: id de usuario y nombre de usuario. • Tabla Contraseñas que dispone de cuatro campos: id de contraseña, nombre del sitio del que almacenar la contraseña, contraseña almacenada e id del usuario que almacena la contraseña. Aplicación 3. Desarrolla una aplicación que permita almacenar información en los atributos de sesión. La aplicación consistirá en un formulario que disponga de dos inputs (clave y valor) y un botón que diga “Almacenar”. Cuando se pulse el botón “Almacenar” se invocará a un servlet que se encargue el almacenar en los atributos de sesión del cliente los datos indicados en el formulario que ha invocado el servlet. Además, la aplicación deberá disponer de otro botón con el texto “Mostrar datos guardados” que, al ser pulsado, muestre todas las tuplas clave-valor almacenadas en los atributos de sesión del cliente. Aplicación 4. Crea una aplicación que permita a los usuarios registrados guardar un mensaje a su elección. La página principal de la aplicación deberá ser construida por un servlet y su contenido dependerá de si el usuario se encuentra logeado o no. En caso de estar logeado, se mostrará el mensaje personal de cada usuario. En caso de no estar logeado, la página deberá contener lo siguiente: • Debe existir un formulario HTML que permita a los usuarios registrarse en la aplicación. El formulario debe contener los siguientes campos: nombre de usuario, contraseña y mensaje secreto a almacenar. Cuando pulsemos su botón submit, el formulario invocará a un servlet que validará que el nombre de usuario está disponible y registrará la información introducida por el usuario. En caso de que el nombre de usuario no esté disponible, deberá informarse de ello. • Debe existir un formulario de login en el que el usuario pueda introducir su datos para acceder a la aplicación. Al pulsar el botón submit un servlet comprobará que la información introducida es válida y generará los atributos de sesión necesarios para que el resto de servlets de la aplicación puedan saber que el usuario esta logeado. En caso de no ser correctos los datos del login, se informará de ello. La información relativa a los usuarios deberá ser salvada en una base de datos. Esta base de datos consistirá en una sola tabla con los campos: id de usuario, nombre de usuario, contraseña y mensaje. Pista: en total, la aplicación consiste en 3 servlets: el servlet principal, el servlet que registra usuarios y el servlet que gestiona el login. Nota: recuerda incluir un hiperenlace para volver al servlet principal en la salida generada por los servlet de registro y login. Aplicación 5. Construye un servlet en el que se genere una página con el texto deseado por el alumno y que, además, disponga de un contador con el número de visitas que el usuario ha realizado a esa página. El número de visitas se debe llevar en una cookie. Nota: prueba este servlet en distintos navegadores para comprobar que los contadores son diferentes en cada uno de ellos. Aplicación 6. Realiza una pequeña tienda virtual que permita al usuario añadir productos a su carrito de la compra. La aplicación consiste en una página (generada mediante un servlet) con los siguientes apartados: • Productos disponibles: aparece un listado con los productos disponibles. Estos productos son siempre los mismos (no es necesario recuperarlos de ninguna base de datos). Al lado de cada producto aparecerá un checkbox que nos permitirá seleccionar el producto. Cuando pulsemos el botón submit, un servlet se encargará de generar las cookies indicando los productos añadidos al carrito. Si hemos seleccionado añadir un producto que ya estaba en el carrito, no lo volvemos a añadir. • Carrito: aparecerá un listado con los productos añadidos a nuestro carrito (se recuperarán a través de las cookies). Al lado de cada producto aparecerá un checkbox que permitirá seleccionar los productos. Cuando pulsemos el botón submit, un servlet se encargará de borrar los productos seleccionados de nuestro carrito.