English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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 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.
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-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 |
@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!
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) |
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的通知消息一起。