English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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用于声明带有容器的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属性。
下面的示例描述了如何使用@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注解用于为Servlet或过滤器指定初始化参数。它在WebFilter或webevlet注解中使用。下表包含用于WebInitParam注解的属性列表。
N°. Sr. | Propriétés et description |
---|---|
1 | String name 初始化参数的名称 |
2 | String value 初始化参数的值 |
3 | String description 初始化参数的描述 |
@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!
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) |
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.