Filtrage de servlets

La fonction de filtrage de servlets fournit un nouveau type d'objet appelé filtre, qui peut transformer une demande ou modifier une réponse.

Vous pouvez chaîner plusieurs filtres afin qu'ils agissent ensemble sur l'entrée ou la sortie d'une ressource ou d'un groupe de ressources spécifiques.

Les filtres sont couramment utilisés pour la journalisation, la conversion d'images, le chiffrement et le filtrage de types MIME (fonctionnellement équivalent au chaînage de servlets). Bien que les filtres ne soient pas des servlets, leur cycle de vie est très similaire à celui des servlets.

Les filtres sont utilisés de la manière ci-dessous.

  1. Le conteneur Web détermine s'il doit construire une chaîne de filtres (objet FilterChain) contenant le LoggingFilter (filtre de journalisation) pour la ressource demandée.

    FilterChain commence par l'appel de l'élément LoggingFilter et se termine par l'appel de la ressource demandée.

  2. Si d'autres filtres doivent être insérés dans la chaîne, le conteneur Web les place après theLoggingFilter et avant la ressource demandée.
  3. Le conteneur Web instancie ensuite et initialise le LoggingFilter (si cela n'a pas été fait précédemment) et appelle sa méthode doFilter(FilterConfig) pour démarrer la chaîne.
  4. Le LoggingFilter prétraite les objets demande et réponse, puis il appelle la méthode doFilter(ServletRequest, ServletResponse) de la chaîne de filtres.

    Cette méthode passe le traitement à la ressource suivante dans la chaîne, qui est la ressource demandée.

  5. Au retour de la méthode doFilter(ServletRequest, ServletResponse) de la chaîne, le LoggingFilter soumet les objets demande et réponse à un post-traitement avant de renvoyer la réponse au client.

Java™ Servlet Specification 2.4 permet de définir un nouvel élément <dispatcher> dans le descripteur de déploiement avec des valeurs, telles que REQUEST, FORWARD, INCLUDE, ERROR, au lieu d'appeler des filtres avec RequestDispatcher.

La spécification Java Servlet 3.0 permet de définir un nouvel élément <dispatcher> dans le descripteur de déploiement avec des valeurs telles que ASYNC, REQUEST, FORWARD, INCLUDE, ERROR, au lieu d'appeler les filtres avec RequestDispatcher.

Exemple :
<filter-mapping>
<filter-name>Logging Filter</filter-name>
<url-pattern>/products/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>

Ces éléments indiquent que le filtre doit être appliqué aux demandes directement à partir du client, ainsi qu'aux demandes de réacheminement. L'ajout des valeurs INCLUDE et ERROR indique également que le filtre doit s'appliquer aux demandes incluses et aux demandes <error-page>. Si vous n'indiquez pas d'éléments <dispatcher>, la valeur par défaut est REQUEST.

Classes Filter, FilterChain, FilterConfig pour le filtrage des servlets

Les interfaces suivantes sont définies dans le package javax.servlet :

  • Interface filter - méthodes : doFilter, getFilterConfig, setFilterConfig
  • Interface FilterChain - méthodes : doFilter
  • Interface FilterConfig - méthodes : getFilterName, getInitParameter, getInitParameterNames, getServletContext

Les classes suivantes sont définies dans le package javax.servlet.http :

  • HttpServletRequestWrapper - méthodes : Voir spécification Servlet 2.4
  • HttpServletResponseWrapper - méthodes : Voir spécification Servlet 2.4

Icône indiquant le type de rubrique Rubrique de concept



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cweb_sfilt
Nom du fichier : cweb_sfilt.html