Les filtres de servlets en Java
[20 mn de lecture - paru le 10/31/2005 6:53:50 PM - Public : Confirmé]
|
   
|
Auteur
1. Utilisation des filtres
1.1 Pour quoi les utiliser?
Dans la plus part des sites les filtres ne sont pas necessaire, ou tout du moins ne sont pas utilisés. La raison principale etant que les developpeur ne savent pas qu'ils existent. Mais celà est ausis du au fait qu'ils sont grandement sous estimé. Voici quelques exemples d'utilisations possibles :
- Faire votre propre systeme de log
- Transformer des flux XML via XSLT
- Faire des redirections
- Modifier les entêtes
- Verifier la valider des requetes
- Faire votr epropre système d'authentification
- Compresser les données
Ce ne sont que quelques exemples mais ils montrent combien les filtres peuvent s'averer utiles. De manière plus générale vous pouvez les utiliser pour tout ce qui est commun à un ensemble de pages ou de sites.
Aujourd'hui rendre le code réutilisable est un des soucis princiapl des developpeur. Les filtres permettent d'extraire certain mechanismes redondant de vos pages afin de les mettre à un autre niveau plus global.
1.2 Comment fonctionnent-ils ?
Les filtres sont des classes java implémentant l'API des filtres disponible depuis la version 2.3 des servlets.
Vous pouvez configurer autant de filtres que vous voulez et ils seront executé dans l'ordre dans lequel vous les definissez dans le fichier de configuration. Vous pouvez aussi empecher les filtres se trouvant après le votre d'être lancer même si celà n'est pas recommandé.
Tous vos filtres sont des classes implémentant javax.servlet.Filter. Cette interface contient 3 méthodes que vous devez implementer :
- init : Cette méthode est appellée lors de l'initialisation du filtre.
- destroy : Cette méthode est appellée lorsque le filtre est détruit.
- doFilter : Cette méthode est celle contenant l'action de votre filtre.
La méthode doFilter sera appellée à chaque fois qu'une requête est recue ou une réponse émise par le serveur. Elle prend 3 arguments :
- La requête reçue
- La réponse envoyée
- La chaine des filtres afin de pouvoir appeller le filtre suivant
Dans la méthode vous pouvez faire ce que vous voulez avec la requête et la réponse, mais vous devez appeler la méthode chain.doFilter() à la fin afin de poursuivre la chaine de filtres. Une fois cette méthode appellée vous ne pouvez plus modifier la requête ou la réponse, mais vous pouvez toujours logger des informations par exemple. Vous pouvez aussi volontairement ne pas l'appeller afin de rompre la chaine.
|