Filtros HTTP
Características de las aplicaciones web: TODOS los recursos están expuestos al exterior. Problema: Estamos repitiendo código en todos los actions y jsps de la aplicación: comprobación de que el usuario está en sesión Soluciones: ◦ Extender las jsps de otra o jugar con los includes. ◦ Desde la versión 2.3 se servlets, incorporación un filtro HTTP.
Incorporados en la versión 2.3 de la especificación de servlets. Interceptan la invocación del servlet ANTES de que sea invocado el propio servlet. Permiten examinar y modificar la request antes de que le llegue al servlet. Permite modificar el response y redirigir, en caso necesario, la petición a otro recurso distinto. Ideales para el control de acceso de usuarios autentificados.
Interfaz javax.servlet.Filter. Tres métodos: ◦ void init(FilterConfig config) throws ServletException: Invocado antes de que el filtro entre en servicio. Permite configurar el filtro. ◦ void destroy(): Invocado cuando el filtro dejar de estar en servicio. ◦ void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException: Método que implementará el filtrado.
Servlet 1 HTTP Filter
Sobre el proyecto que tenemos empezado, elaborar un filtro HTTP que muestre un mensaje cada vez que es solicitado un recurso de nuestro piloto. Pasos: ◦ Desarrollar la clase com.dflanvin.presentacion.filter.LoginFi lter ◦ Importar las librerías necesarias… import javax.servlet.*; import javax.servlet.http.*; import java.io.IOException; import javax.servlet.ServletException;
public class LoginFilter implements Filter { private FilterConfig filterConfig; public void doFilter (ServletRequest request, ServletResponse response, FilterChain chain) { System.out.println(“Activado el filtrado de peticiones”); chain.doFilter (request, response); System.out.println(“Tras es doFilter….”); } public void init(FilterConfig fliterConfig) { System.out.println(“Inicializado el filtro”); } public void destroy() { }
Y Modificar el WEB.XML para dar de alta los filtros ControlAcceso com.dflanvin.presentacion.filter.LoginFilter ControlAcceso /*