May 12, 2014 8:21:53 PM lutece lutece avatar   387    

Créer des servlets et des filtres


Introduction

Les servlets et les filtres sont habituellement déclarés dans le fichier WEB-INF/web.xml or ce fichier est unique et ne peut en aucun cas être modifié par les plugins.

Afin d'offrir aux plugins ce type de composants, Lutece propose de créer des servlets et des filtres de plugin. Ceux-ci se déclarent dans le fichier xml.

Classes Java

Les classes Java des servlets ou des filtres sont à écrire exactement de la même manière que des servlets ou filtres standards. Seule leur déclaration est différente.

Des classes existantes, provenant par exemple de produits externes, peuvent être packagées sous forme de servlet ou filtre de plugin (exemple : le filtre de réécriture d'url utilisé par le plugin urlrewriter).

Déclaration des servlets et des filtres

Les servlets et filtres sont à déclarer dans le fichier XML du plugin de la manière suivante :

<!-- servlets -->
     <servlets>
          <servlet>
               <servlet-name>myServlet1</servlet-name>
               <url-pattern>/servlet/plugins/myplugin/myServlet1</url-pattern>
               <servlet-class>fr.paris.lutece.plugins.myplugin.web.MyFirstServlet</servlet-class>
          </servlet>
          <servlet>
               <servlet-name>myServlet2</servlet-name>
               <url-pattern>/servlet/plugins/myplugin/myServlet2</url-pattern>
               <servlet-class>fr.paris.lutece.plugins.myplugin.web.MySecondServlet</servlet-class>
          </servlet>
     </servlets>

     <!-- filters -->
     <filters>
          <filter>
               <filter-name>myFilter</filter-name>
               <url-pattern>/*</url-pattern>
               <filter-class>fr.paris.lutece.plugins.myplugin.web.MyFilter</filter-class>
               <init-param>
                    <param-name>param1</param-name>
                    <param-value>value of param1</param-value>
               </init-param>
          </filter>
     </filters>

NB : Les URL des servlets doivent impérativement être basées sous /servlet/plugins/myplugin