Chinese (People's Republic of China)  English  Français


Supinfo-Projects.com
Tous les projets des élèves ingénieurs de Supinfo



Projets
  Dernier Projet
  Les plus populaires
  Tous les Projets

156 Visiteurs
3168 Projets


My Supinfo-Projects

   Connectez-vous
   Créez un Compte


Synopsis

   11 Visites
   Note INTERNET : 13.3
    (3 Votants)
   0 Commentaires

   Lire l'article

Evaluez cet article

20
18
16
14
12
10
8
6
4
2
0


Commentez cet article

Auteur :

Email :

Votre commentaire :



 
2005 - Note de Synthèse Stage
Les filtres de servlets en Java
[20 mn de lecture - paru le 10/31/2005 6:53:50 PM - Public : Confirmé]

Auteur

parisot_mMathieu PARISOT
Elève-Ingénieur Supinfo Paris
Promotion SUPINFO 2006

   Lui écrire
   Tous les projets de cet auteur
   Le mini-CV de cet auteur

2. Developper un filtre

2.1 Votre premier filtre

Voici un exemple d'un filtre très simple qui se content d'incrementer un compteur lorsqu'une personne accède au serveur.

/**
 * Filter incrementing a counter.
 */
public final class MyCounter implements Filter
{
   // --- configuration of the filter.
   private FilterConfig filterConfig = null;

   // initialize the filter
   public void init(FilterConfig filterConfig) throws ServletException
   {
      // stock the filter parameters
      this.filterConfig = filterConfig;
   }

   // destroy the filter
   public void destroy()
   {
      // unallocate the attributes
      this.filterConfig = null;
   }

   // filtering : increase a counter.
   public void doFilter(ServletRequest request,
                               ServletResponse response,
                               FilterChain chain) 
   throws IOException, ServletException
   {
      // if the filter was never initialized
      if (filterConfig == null)
         return;

      // increment the counter
      incCounter();

     // call the next filter
     chain.doFilter(request, wrapper);
   }

   // increment the counter
   private void incCounter()
   {
        // TODO : increment a counter
   }
}

Comme vous pouvez le voir c'est relativement simple. Je ne détail pas ici la méthode gérant le compteur car ce n'est pas le but de cet article et qu'il y a de nombreuses manières de le faire.

Maintenant que votre filtre est fait, il ne vous reste plus qu'a configurer votre serveur web pour l'utiliser. Ouvrez le fichier web.xml de votre site et rajouter les balises suivantes (selon les serveurs vous pouvez avoir à les mettres à un endroit précis du fichier) :

<FILTER>
   <FILTER-NAME>my counter</FILTER-NAME>
   <FILTER-CLASS>my.package.myCounter</FILTER-CLASS>
   <INIT-PARAM>
      <PARAM-NAME>param1</PARAM-NAME>
      <PARAM-VALUE>value1</PARAM-VALUE>
   </INIT-PARAM>
</FILTER>

Cette partie configure votre filtre, lui donne un nom, une classe et des paramètres.

L'étape suivante, toujours dans le fichier web.xml, est de définir quand votre filtre sera appelé. Vous pouvez le configurer pour ête appeler quand une page précise est consultée, n'importe quelle page d'un sous repertoire, ou n'importe quelle page du site.

Puisqu'il s'agit d'un compteur nous allons l'appeler pour toutes les pages :

<filter-mapping>
      <filter-name>My counter</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping> 

Le joker * permet de dire que le filtre doit être appeler pour n'importe quelle page se trouvant dans le repertoire racine ou dans un sous repertoire.

2.2 Un filtre un peu plus complexe : utiliser la requête

Notre premier exemple était plus simple puisque nous ne faisions rien concernant la requète ou la réponse. Maintenant nous allons voir comment utiliser la requête. La gestion des réponses se faisant exactement de la même manière.

Voici un exemple de comment enregistrer les entêtes des requetes :

// filtering : log the headers
public void doFilter(ServletRequest request,
                            ServletResponse response, 
                            FilterChain chain) 
throws IOException, ServletException 
{
   // if the filter was never initialized
   if (filterConfig == null)
      return;
   
   HttpServletRequest req = (HttpServletRequest)request;

   // login buffer
   StringWriter sw = new StringWriter();
   PrintWriter writer = new PrintWriter(sw);
   writer.println();
   writer.println("===============");
   for (Enumeration e = req.getHeadernames(); e.hasMoreElements() ;)
  {
         String hdName = e.nextElement();
         writer.println( hdName  + " -> " + req.getHeader(hdName));
   }
   writer.println("===============");

   writer.flush();
    filterConfig.getServletContext().log(sw.getBuffer().toString());

   // call the next filter
   chain.doFilter(request, wrapper);
}

Cette exemple demeure très simple mais montre comment manipuler les requêtes et les réponses.

Si vous ne savez pas comment les requête et les réponses HTTP sont gérées en java, je vous recommande de condulter la documentation officielle :
HttpRequest
HttpResponse

Ces pages vous décrivent toutes les méthodes necessaire pour lire ou ecrire des informations dans les requêtes et les réponses.



Articles de la même catégorie

 Pages : Top


11 Visites
0 Commentaires
Java Servlet Filters
[20 mn de lecture - paru le 10/31/2005 6:52:57 PM - Public : Confirmé]

En savoir plus


6 Visites
0 Commentaires
How to use Crystal Reports with MySQL and Visual Studio .net ?
[15 mn de lecture - paru le 10/31/2005 6:50:56 PM - Public : Confirmé]

En savoir plus


9 Visites
0 Commentaires
development of an ecommerce site
[10 mn de lecture - paru le 10/31/2005 6:29:16 PM - Public : Confirmé]

En savoir plus

   Tous les Articles


SUPINFO Training Center peut vous proposer une formation ...

   Devenez Ingénieur Système Microsoft en 35 jours avec SUPINFO Training Center
   Devenez Certifiés Cisco en 13 jours avec SUPINFO Training Center
   Devenez Administrateur Système Microsoft avec SUPINFO Training Center
   Devenez Développeur Microsoft .NET en 13 jours avec SUPINFO Training Center



Powered by Campus-Booster Technology
Conditions d'utilisation & Copyright | Respect de la vie privée
© Copyright 1965-2006 Supinfo Paris, Paris Academy of Computer Science
Supinfo, Ecole Supérieure d'Informatique et Paris Academy Of Computer Science are trade marks.
23, rue de Château LANDON - 75010 PARIS - Phone : +33 (0) 153359 700 Fax : +33 (0) 153359 701

Web site autided by :