Buenas,
pues el patrón Intercepting Filter consiste en poner una capa intermedia que evalué las peticiones que llegan a la aplicación, antes de que el controlador correspondiente las ejecute, para ello se utilizan filtros.
lo que tienes que hacer es crearte un paquete nuevo donde almacenes los diferentes filtros que desees tener, y crear una nueva clase de tipo Filter.
Por poner un ejemplo sencillo la clase quedaría algo así:
Código Java:
Ver originalpackage com.dicampus.filters;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
/**
* Servlet Filter implementation class Acceso
*/
public class Acceso implements Filter {
/**
* Default constructor.
*/
public Acceso() {
// TODO Auto-generated constructor stub
}
/**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter
(ServletRequest request, ServletResponse response, FilterChain chain
) throws IOException, ServletException
{ HttpServletRequest req = (HttpServletRequest) request;
String usuario
= (String) req.
getSession().
getAttribute("usuario"); System.
out.
println("USUARIO " +usuario
); System.
out.
println("URL "+req.
getRequestURL()); System.
out.
println("URI "+req.
getRequestURI());
if(usuario!= null){
//Hemos pasado el filtro
chain.doFilter(request, response);
}else{
//REDIRECCIONAMOS A LA PAGINA CORRESPONDIENTE DE ERROR O LOGIN
}
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
}
}
En el método
doFilter realizarías las comprobaciones oportunas, yo he puesto un ejemplo en el que obtengo la URL, la URI a las que vamos accediendo y el usuario actual en sesión y muestro los datos por consola.
Además añado una comprobación si existe usuario en sesión permito pasar el filtro y se accedería a la página a la que se intento acceder en un principio, sino no muestro nada.
Quedaría hacer la redirección a la página que desees.
Por otro lado en el fichero web.xml se definirá el filtro que acabamos de crear:
Código XML:
Ver original<filter>
<display-name>Filtro</display-name>
<filter-name>Filtro</filter-name>
<filter-class>com.dicampus.filters.Filtro</filter-class>
</filter>
<filter-mapping>
<filter-name>Filtro</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
Sino es así tienes que definirlo tu manualmente.
Fíjate en que el
<url-pattern> del Filtro sea el que necesitas yo he puesto *, pero podría ser *.do, *.htm etc, el que tu necesites.