Muchas veces puede ser necesario filtrar todas las peticiones que se hacen a un servlet para realizar operaciones de control antes y después de la misma. Por ejemplo, controlar la conexión con la base de datos.
¿Y como se hace esto en Tomcat? Pues lo de siempre, una clase que implementa una interfaz y un cambio en la configuración del web.xml para que filtre las peticiones a un servlet. Vamos por partes…
Crear el filtro
Para crear un filtro debemos implementar la interfaz javax.servlet.Filter.
- Creamos el paquete ucam.filtros
- Añadimos una nueva clase FiltroConexion que implemente la interfaz Filter
- Si estamos utilizando Eclipse automáticamente aparecen los métodos init, destroy y doFilter. En el API está toda la información sobre cuando se ejecuta cada uno de ellos.
- En el método doFilter ponemos:
System.out.println(«Filtrando conexion»);
arg2.doFilter(arg0, arg1);
System.out.println(«Final de la petición»);
La segunda sentencia se pone para que siga la ejecución de la petición. En teoría puedes encadenar distintos filtros.
Configurar web.xml
Ahora hay que «decirle» a nuestra aplicación que filtre todas las peticiones que vayan al servlet Control. Para lo cual añadimos el siguiente código en el web.xml:
<filter>
<filter-name>Filtro</filter-name>
<filter-class>ucam.filtros.FiltroConexion</filter-class>
</filter>
<filter-mapping>
<filter-name>Filtro</filter-name>
<servlet-name>Control</servlet-name>
</filter-mapping>
Ya sólo queda modificar el código del filtro para que realice la funcionalidad deseada.