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

Servlet 注解

Bis jetzt haben Sie erfahren, wie Servlets mithilfe des Deployment-Descriptors (web.xml-Datei) eine Anwendung auf einem Webserver bereitstellen.  Servlet API 3Eine neue Paketbezeichnung javax.servlet.annotation wurde in Version .0 eingeführt. der Annotatيونstypen bereitstellt, die für die Annotation von Servlet-Klassen verwendet werden können. Wenn Annotationen verwendet werden, ist keine Deployment-Description (web.xml) erforderlich. Sie sollten jedoch tomcat verwenden7oder höheren Versionen von tomcat.

Annotationen können die äquivalenten XML-Konfigurationen im Web-Deployment-Descriptor (web.xml) ersetzen, z.B. Servlet-Deklarationen und Servlet-Mappings. Der Servlet-Container verarbeitet bei der Deployment mit Annotationen versehene Klassen.

Servlet 3Die in Version .0 eingeführten Annotationstypen sind

Sr.No.Annotationen und Beschreibungen
1

@WebServlet

Deklariert Servlet.

2

@WebInitParam

Initialisierungseigenschaften angeben

3

@WebFilter

Deklariert Servlet-Filter

4

@WebListener

Deklariert WebListener

5

@HandlesTypes

Deklariert die Klassentypen, die von ServletContainerInitializer verarbeitet werden können.

6

@HttpConstraint

Diese Anmerkung wird in der ServletSecurity-Annotation verwendet, um die Sicherheitseinschränkungen zu kennzeichnen, die auf alle HTTP-Protokollmethoden angewendet werden sollen, für die in der ServletSecurity-Annotation kein entsprechender HttpMethodConstraint-Element vorhanden ist.

7

@HttpMethodConstraint

Diese Annotation wird in der ServletSecurity-Annotation verwendet, um spezifische Sicherheitsanforderungen für HTTP-Protokoll-Nachrichten darzustellen.

8

@MultipartConfig

Annotation, die auf Servlet-Klassen angegeben werden kann, um anzuzeigen, dass die Servlet-Instanz mehrere Teile erwartet/Anfragen mit Formulardaten MIME-Typen

9

@ServletSecurity

Diese Annotation wird verwendet, um Servlet-Implementierungsklassen zu spezifizieren, um sicherzustellen, dass Servlet-Container die Sicherheitsanforderungen für HTTP-Protokoll-Nachrichten durchsetzt.

Hier haben wir einige Annotationen im Detail diskutiert.

@WebServlet

@WebServlet wird verwendet, um die Konfiguration eines Servlets mit dem Container zu deklarieren. Die nachstehende Tabelle enthält die Eigenschaftsliste für die WebServlet-Annotation.

Sr.No.Eigenschaften und Beschreibung
1

String name

Name des Servlets

2

String[] value

URL-Modus-Array

3

String[] urlPatterns

URL-Modus-Array des Filters anwenden

4

Int loadOnStartup

Ganzzahlwert gibt Startsortierungshinweis

5

WebInitParam[] initParams

Initialisierungs-Arrayparameter des Servlets

6

Boolean asyncSupported

Asynchrone Operationen, die von Servlet unterstützt werden

7

String smallIcon

Kleines Symbol des Servlets, falls vorhanden

8

String largeIcon

Großes Symbol des Servlets, falls vorhanden

9

String description

Beschreibung des Servlets, falls vorhanden

10

String displayName

Anzeigen des Namens dieses Servlets (falls vorhanden)

Es muss mindestens ein URL-Modus in den Attributen value oder urlPattern der Annotation angegeben werden, aber beide Attribute dürfen nicht gleichzeitig angegeben werden.

Wenn nur eine Eigenschaft einzustellen ist, bei der URL-Modus einzustellen ist, wird empfohlen, das value-Attribut zu verwenden, andernfalls sollte das urlPattern-Attribut verwendet werden.

Online-Beispiel

Der folgende Beispiel beschreibt, wie die @WebServlet-Annotation verwendet wird. Es ist ein einfacher Servlet, der den Text Hello servlet anzeigt.

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>");         
   }   
}

用通常的方式编译 Simple.java,并将类文件放在 <tomcat-installationdirectory>/webapps/ROOT/WEB-INF/classes 中。

现在尝试通过运行http://localhost:8080/简单调用任何servlet。您将在web页面上看到以下输出。

Hello servlet

@WebInitParam

@WebInitParam-Annotation wird verwendet, um Initialisierungsparameter für Servlets oder Filter zu spezifizieren. Sie wird in WebFilter- oder webevlet-Annotationen verwendet. Die nachstehende Tabelle enthält die Eigenschaftsliste für die WebInitParam-Annotation.

Sr.No.Eigenschaften und Beschreibung
1

String name

Name des Initialisierungsparameters

2

String value

Wert der Initialisierungsparameter

3

String description

Beschreibung der Initialisierungsparameter

Online-Beispiel

@WebInitParam-Annotation wird verwendet, um Initialisierungsparameter für Servlets oder Filter zu spezifizieren. Sie wird in WebFilter- oder webevlet-Annotationen verwendet. Die nachstehende Tabelle enthält die Eigenschaftsliste für die WebInitParam-Annotation.

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>");         
   }   
}

用通常的方式编译 Simple.java,并将类文件放在 <tomcat-installationdirectory>/webapps/ROOT/WEB-INF/classes 中。

现在尝试通过运行http://localhost:8080/简单调用任何servlet。您将在web页面上看到以下输出。

Hello Servlet
Hello World!

@Webfilter

Dies ist die Annotation zur Deklaration des Servlet-Filters. Sie wird beim Deployment vom Container verarbeitet und wendet den entsprechenden Filter auf die angegebenen URL-Muster, Servlet und Dispatcher-Typen an.

@WebFilter-Annotation definiert den Filter in der Webanwendung. Diese Annotation wird auf der Klasse angegeben und enthält Metadaten über den deklarierten Filter. Der annotierte Filter muss mindestens ein URL-Muster angeben. Die folgende Tabelle listet die Attribute für die WebFilter-Annotation auf.

Sr.No.Eigenschaften und Beschreibung
1

String filterName

Name des Filters

2

String[] urlPatterns

Bieten Sie den Wert des Anwendungsfilter oder das Array von urlPatterns

3

DispatcherType[] dispatcherTypes

Bestimme den Scheduler (Request/Art des Responses)

4

String[] servletNames

Array mit Servlet-Namen, die bereitgestellt werden

5

String displayName

Name des Filters

6

String description

Filterbeschreibung

7

WebInitParam[] initParams

Initialisierungsparameter-Array dieses Filters

8

Boolean asyncSupported

Asynchrone Operationen, die der Filter unterstützt

9

String smallIcon

Kleines Symbol des Filters (falls vorhanden)

10

String largeIcon

Großes Symbol des Filters (falls vorhanden)

Online-Beispiel

Das folgende Beispiel zeigt, wie man den @WebFilter-Annotation verwendet. Es ist eine einfache LogFilter, der Init Parameter test Parameterwert und die aktuelle Zeitstempel. Dies bedeutet, dass der Filter auf einer Ebene zwischen Anfrage und Antwort arbeitet. Hier verwenden wir "/*”bedeutet urlPattern. Dies bedeutet, dass dieser Filter für alle Servlets gilt.

import java.io.IOException; 
import javax.servlet.annotation.WebFilter; 
import javax.servlet.annotation.WebInitParam; 
import javax.servlet.*; 
import java.util.*;  
//Implementiere Filterklasse
@WebFilter(urlPatterns = {"/*}, initParams = { 
   @WebInitParam(name = "test-param", value = "Initialization Paramter")}) 
public class LogFilter implements Filter {
   
   public void init(FilterConfig config) throws ServletException { 
      // Erhalte Initialisierungsparameter
      String testParam = config.getInitParameter("test-param");
            
      //Drucke init Parameter
      System.out.println("Test Param: " + testParam);  
   } 
   public void doFilter(ServletRequest request, ServletResponse response,
      FilterChain chain) throws IOException, ServletException { 
	  
      //记录当前时间戳。
      System.out.println("Time " + new Date().toString());  
         
      //将请求传递回筛选器链
      chain.doFilter(request,response); 
   }
   public void destroy( ) {
      /* 在删除筛选器实例之前调用
      从web容器提供的服务*/ 
   } 
}

用通常的方式编译 Simple.java,并将类文件放在 <tomcat-installationdirectory>/webapps/ROOT/WEB-INF/classes 中。

现在尝试通过运行http://localhost:8080/简单调用任何servlet。您将在web页面上看到以下输出。

Hello Servlet
  
Hello World!

现在,打开servlet控制台。在那里,你会发现的值初始化参数testparam和当前时间戳与servlet的通知消息一起。