English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Annotations Servlet

Jusqu'à présent, vous avez compris comment Servlet dépose l'application sur le serveur Web en utilisant le déploiement de description (fichier web.xml).  Servlet API 30.0 a introduit un nouveau paquet nommé javax.servlet.annotation. Il fournit des types d'annotations disponibles pour annoter les classes Servlet. Si vous utilisez des annotations, vous n'avez pas besoin de déploiement de description (web.xml). Mais vous devriez utiliser tomcat7ou toute version supérieure de tomcat.

Les annotations peuvent remplacer la configuration XML équivalente dans le fichier de description de déploiement Web (web.xml), par exemple la déclaration servlet et la carte servlet. Le conteneur servlet traitera les classes annotées lors du déploiement.

Servlet 3Le type d'annotation introduit dans la version 0.0 est

N°. Sr.Annotations et descriptions
1

@WebServlet

Déclare le servlet

2

@WebInitParam

Spécifie les paramètres d'initialisation

3

@WebFilter

Déclare le filtre servlet

4

@WebListener

Déclare WebListener

5

@HandlesTypes

Déclare le type de classe que ServletContainerInitializer peut traiter.

6

@HttpConstraint

Cette annotation dans l'annotation ServletSecurity est utilisée pour indiquer les contraintes de sécurité à appliquer à toutes les méthodes du protocole HTTP, pour lesquelles il n'existe pas d'élément HttpMethodConstraint correspondant dans l'annotation ServletSecurity.

7

@HttpMethodConstraint

此注解在ServletSecurity注解中用于表示特定HTTP协议消息的安全约束。

8

@MultipartConfig

可以在 Servlet 类上指定的注解,表示 Servlet 的实例期望符合多部分/表单数据 MIME 类型的请求。

9

@ServletSecurity

此注解用于Servlet实现类,以指定Servlet容器对HTTP协议消息实施的安全约束。

这里我们已经详细讨论了一些注解。

@WebServlet

@WebServlet用于声明带有容器的Servlet的配置。下表包含用于WebServlet注解的属性列表。

N°. Sr.Propriétés et description
1

String name

Servlet 的名称

2

String[] value

URL模式数组

3

String[] urlPatterns

应用此筛选器的 URL 模式数组

4

Int loadOnStartup

整数值给出启动排序提示

5

WebInitParam[] initParams

Servlet初始化数组参数

6

Boolean asyncSupported

Servlet支持的异步操作

7

String smallIcon

Servlet 的小图标,如果有的话

8

String largeIcon

Servlet 的大图标,如果有的话

9

String description

Servlet 的描述,如果存在的话

10

String displayName

显示此Servlet的名称(如果存在)

必须在注解的value或urlPattern属性中声明至少一个URL模式,但不能同时声明这两个属性。

当URL模式是唯一要设置的属性时,建议使用value属性,否则应使用urlPattern属性。

exemple en ligne

下面的示例描述了如何使用@WebServlet注解。它是一个显示文本Hello servlet的简单servlet。

import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebInitParam; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
@WebServlet(value = "/Simple") 
public class Simple extends HttpServlet {
   private static final long serialVersionUID = 1L; 
   protected void doGet(HttpServletRequest request, HttpServletResponse response)  
      throws ServletException, IOException { 
   
      response.setContentType("text/html   
      PrintWriter out = response.getWriter();   
      out.print("<html><body>");   
      out.print("<h3>Hello Servlet</h3>");   
      out.print("</body></html>         
   }   
}

Compilez Simple.java de la manière habituelle et placez les fichiers de classes dans <tomcat-installationdirectory>/webapps/ROOT/WEB-INF/dans les classes.

Maintenant, essayez de démarrer par l'exécution de http://localhost:8080/Simple appeler n'importe quel servlet. Vous verrez le suivant sur la page Web.

Hello servlet

@WebInitParam

@WebInitParam注解用于为Servlet或过滤器指定初始化参数。它在WebFilter或webevlet注解中使用。下表包含用于WebInitParam注解的属性列表。

N°. Sr.Propriétés et description
1

String name

初始化参数的名称

2

String value

初始化参数的值

3

String description

初始化参数的描述

exemple en ligne

@WebInitParam注解用于为Servlet或过滤器指定初始化参数。它在WebFilter或webevlet注解中使用。下表包含用于WebInitParam注解的属性列表。

import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebInitParam; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse;
@WebServlet(value = "/Simple", initParams = { 
   @WebInitParam(name = "foo", value = "Hello "), 
   @WebInitParam(name = "bar", value = " World!") 
}) 
public class Simple extends HttpServlet {
   private static final long serialVersionUID = 1L; 
   protected void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {   
      
      response.setContentType("text/html   
      PrintWriter out = response.getWriter();   
      out.print("<html><body>");   
      out.print("<h3>Hello Servlet</h3>");   
      out.println(getInitParameter("foo")); 
      out.println(getInitParameter("bar")); 
      out.print("</body></html>         
   }   
}

Compilez Simple.java de la manière habituelle et placez les fichiers de classes dans <tomcat-installationdirectory>/webapps/ROOT/WEB-INF/dans les classes.

Maintenant, essayez de démarrer par l'exécution de http://localhost:8080/Simple appeler n'importe quel servlet. Vous verrez le suivant sur la page Web.

Hello Servlet
Hello World!

@Webfilter

C'est une annotation utilisée pour déclarer les filtres servlet. Elle est traitée par le conteneur lors du déploiement et applique le filtre correspondant aux schémas URL, servlets et types dispatcher spécifiés.

@WebFilter annotation définit les filtres de l'application web. Cette annotation est spécifiée sur la classe et contient les métadonnées relatives au filtre déclaré. Le filtre annoté doit spécifier au moins un schéma URL. Le tableau suivant liste les propriétés utilisées pour l'annotation WebFilter.

N°. Sr.Propriétés et description
1

String filterName

nom du filtre

2

String[] urlPatterns

Fournir la valeur du filtre d'application ou l'array urlPatterns

3

DispatcherType[] dispatcherTypes

déterminer le gestionnaire de planification (demande/du type de réponse)

4

String[] servletNames

tableau fournissant les noms de servlet

5

String displayName

nom du filtre

6

String description

description du filtre

7

WebInitParam[] initParams

les paramètres de tableau d'initialisation de ce filtre

8

Boolean asyncSupported

les opérations asynchrones prises en charge par le filtre

9

String smallIcon

l'icône petite du filtre (s'il existe)

10

String largeIcon

l'icône grande du filtre (s'il existe)

exemple en ligne

l'exemple suivant présente comment utiliser l'annotation @WebFilter. C'est un LogFilter simple qui affiche le Init param test paramètre de valeur et le timestamp actuel. Cela signifie que le travail du filtre est similaire à une couche intermédiaire entre la requête et la réponse. Ici, nous utilisons "/*”représente urlPattern. Cela signifie que ce filtre est applicable à tous les servlet.

import java.io.IOException; 
import javax.servlet.annotation.WebFilter; 
import javax.servlet.annotation.WebInitParam; 
import javax.servlet.*; 
import java.util.*;  
//implémenter la classe de filtre
@WebFilter(urlPatterns = {"/*}, initParams = { 
   @WebInitParam(name = "test-param", value = "Initialization Paramter")}) 
public class LogFilter implements Filter {
   
   public void init(FilterConfig config) throws ServletException { 
      // obtenir les paramètres d'initialisation
      String testParam = config.getInitParameter("test-param");
            
      //afficher les paramètres init
      System.out.println("Test Param: " + testParam);  
   } 
   public void doFilter(ServletRequest request, ServletResponse response,
      FilterChain chain) throws IOException, ServletException { 
	  
      //Enregistrez le timestamp actuel.
      System.out.println("Time ", + new Date().toString());  
         
      //Transmettez la requête à la chaîne de filtre
      chain.doFilter(request,response); 
   }
   public void destroy() {
      /* Appeler avant de supprimer l'instance du filtre
      Services fournis par le conteneur web*/ 
   } 
}

Compilez Simple.java de la manière habituelle et placez les fichiers de classes dans <tomcat-installationdirectory>/webapps/ROOT/WEB-INF/dans les classes.

Maintenant, essayez de démarrer par l'exécution de http://localhost:8080/Simple appeler n'importe quel servlet. Vous verrez le suivant sur la page Web.

Hello Servlet
  
Hello World!

Maintenant, ouvrez le console servlet. Là, vous trouverez les valeurs des paramètres d'initialisation testparam et le timestamp actuel avec les messages de notification servlet.