Exemple 32. Filtrage d'une requête pour de la journalisation
public class LoggerFilter implements Filter {
private static Logger logger = Logger.getLogger(LoggerFilter.class) ;
// méthodes init() et destroy()
private void beforeProcessing(ServletRequest request, ServletResponse response)
throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest)request ;
String host = httpRequest.getRemoteHost() ;
String url = httpRequest.getRequestURL().toString() ;
logger.debug("L'hôte [" + host + "] fait une requête sur [" + url + "]") ;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain)
throws IOException, ServletException {
beforeProcessing(request, response) ;
filterChain.doFilter(request, response) ;
}
}
Exemple 33. Filtrage d'une requête avec validation de sécurité
public class LoggerFilter implements Filter {
// méthodes init() et destroy()
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain)
throws IOException, ServletException {
if (request.isUserInRole("admin")) {
// l'utilisateur a été identifié comme étant un administrateur
// il est autorisé à accéder à la servlet filtrée
filterChain.doFilter(request, response) ;
} else {
// l'utilisateur n'est pas authentifié correctement
// on le redirige vers une page d'erreur
RequestDispatcher requestDispatcher =
request.getRequestDispatcher("/userNotAdmin.jsp") ;
requestDispatcher.forward(request, response) ;
}
}
}