Introduction

Cet article met l'accent sur la nouvelle série d'annotations introduites qui peuvent être utilisés par les développeurs plutôt que de mettre les données dans le fichier de configuration

Facilité de développement par Annotations

Les informations sur les composants Web tels que les Servlets, Servlet filtres sont mentionnées dans le descripteur de déploiement, qui est web.xml. A partir de Servlet 3.0, il est également possible de spécifier des méta-informations sur un élément (classe, interface), cette opération se fera via les annotations. Le fichier web.xml ne disparait pas pour autant. D'ailleurs les informations qu'il contient sont toujours prioritaires sur celles des annotations. Il est également possible d'activer ou pas la prise en charge des annotations par le conteneur via la balise <metadata-complete> directement placée sous la balise <web-app> du fichier web.xml. Cette balise attend les valeur "true" (le web.xml est complet, il se suffit à lui même) ou false (dans ce cas les annotations devraient être prises en compte)

Les annotations suivantes sont applicables à partir de spécifications Servlet 3.0,

    * @WebServlet 
    * @WebServletContextListener 
    * @ServletFilter 
    * @InitParam

Annotations WebServlet et InitParam

Dans cette section, nous allons voir l'utilisation de @WebServlet et @InitParam par un exemple.

package net.javabeat.servlet30.newfeatures;

import javax.servlet.annotation.InitParam;
import javax.servlet.annotation.WebServlet;

@WebServlet(
    name = "SimpleServlet", 
    urlPatterns = {"/simple"}, 
    initParams = {
        @InitParam(name = "param1", value = "value1"),
        @InitParam(name = "param2", value = "value2")}
)
public class SimpleServlet {

}


Dans cet exemple, nous avons créé une classe SimpleServlet qui n'hérite pas de HttpServlet, contrairement à ce que prévoit la spécification originale. En revanche, pour bénéficier de cette classe comme une classe Servlet, nous avons annoté en utilisant l'annotation @ WebServlet. Notez que le nom de la servlet est SimpleServlet comme spécifié par l'attribut name. L'attribut urlPatterns définit un ensemble de modèles url-qui peut être utilisé pour invoquer la Servlet. Voici le descripteur de déploiement équivalant :

<servlet>
    <servlet-name>SimpleServlet</servlet-name>
    <servlet-class>net.javabeat.servlet30.newfeatures.SimpleServlet</servlet-class>

        <init-param>
            <param-name>param1</param-name>
            <param-value>value1</param-value>
        </init-param>

        <init-param>
            <param-name>param2</param-name>
            <param-value>value2</param-value>
    </init-param>

</servlet>

<servlet-mapping>
    <url-pattern>/simple</url-pattern>
    <servlet-name>SimpleServlet</servlet-name>
</servlet-mapping>