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>