Ejercicios de Wrappers

1. La aplicación wrapper incorpora un filtro que utiliza un wrapper para analizar la respuesta generada. Toma esta respuesta del wrapper (asumimos que es contenido HTML), y la analiza utilizando la librería htmlparser, para extraer su título. Una vez tiene el título registra que se ha accedido a dicha página en el log y devuelve la respuesta al cliente. Se pide:

a) Compilar y desplegar la aplicación utilizando ant. Probar a acceder a varios ficheros HTML estáticos de los incluidos dentro de la aplicación. Comprobar que en el log se ha registrado el acceso indicando el título de las páginas.

b) Si tuviesemos recursos que no fuesen HTML (como por ejemplo imágenes) dentro de la ruta a la que afecta el filtro, ¿que ocurriría?. Intentar acceder a una imagen dentro de la aplicación y ver el error que se produce. ¿A qué se debe esto? ¿Como podríamos solucionarlo?

2. Vamos a realizar una aplicación que contabilice el número de accesos a las páginas mediante un filtro. Esta aplicación tiene el nombre ranking. Para ello tendremos una base de datos, con una tabla PAGINAS en la que figurará:

ruta varchar(255)
Ruta de la página visitada
titulo varchar(100)
Título de la página
accesos integer
Número de accesos realizados

El servlet RankingPaginas nos genera un listado de las páginas ordenadas por número de visitas.

Lo primero que deberemos hacer será instalar la base de datos. Las sentencias para la creación de esta base de datos se encuentran en el fichero db/ranking.sql dentro del directorio de desarrollo de nuestra aplicación. Supongamos que mysql está instalado con el siguiente usuario creado:

login: root
password: mysql

Para introducir la sentencias contenidas en ese fichero, escribiremos:

mysql -uroot -pmysql < db/ranking.sql

Con esto tendremos creada la base de datos ranking, con una tabla PAGINAS vacía. Para poder acceder a esta base de datos desde Java, desde nuestra máquina local, deberemos dar los permisos necesarios de la siguiente forma, desde el cliente de mysql:

GRANT ALL PRIVILEGES ON ranking.* to 'root'@'localhost.localdomain' 
identified by 'mysql'

FLUSH PRIVILEGES

Se pide:

a) Desarrollar el filtro AccesoPagina que actue sobre todos los recursos estáticos, y que contabilice el número de visitas que se realizan a ellos almacenandolos en la base de datos. Deberá cumplir las siguientes características:

b) Si la página HTML está almacenada en la caché del navegador, el acceso no se contabilizará correctamente. ¿Qué cabecera HTTP podriamos utilizar para solucionar este problemas? ¿Donde podriamos establecer esta cabecera? Establecer las cabeceras necesarias para evitar el uso de la caché y comprobar el correcto funcionamiento de la aplicación.