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) ; } } }