Chapitre 4. Filtrage

Un filtre est un composant d'une application web qui agit comme un intercepteur sur une servlet. Il est déclaré dans le descripteur de l'application web.xml, et posé sur une ou plusieurs servlets. Lorsqu'une requête doit être traitée par une servlet sur laquelle un filtre est déclaré, alors le serveur, plutôt que d'invoquer directement la méthode doGet() ou doPost() de la servlet, va invoquer la méthode doFilter() de ce filtre.

Cette méthode reçoit trois paramètres :

Le filtre peut donc agir sur la requête, qui est complète. S'il choisit d'autoriser le traitement de cette requête par la servlet, alors il doit invoquer la méthode doFilter() de l'objet FilterChain, en lui passant la requête et la réponse qu'il a reçues en paramètre.

Il peut aussi choisir de ne pas traiter cette requête de façon nominale, et de la rediriger vers une autre ressource de l'application web. Cette décision peut être prise si la ressource est temporairement indisponible, ou si le filtre détecte un problème de sécurité.

Lorsque la méthode doFilter() rend la main, il peut enfin décider de modifier la réponse construite par la servlet interceptée, s'il a pris la précaution de ne pas lui passer directement l'objet réponse qui lui a été donné.

Un filtre peut donc agir sur tous les aspects du cycle requête / réponse, en modifiant l'un ou l'autre, à sa guise.