Servlets - Anmerkungen

Bisher haben Sie erfahren, wie Servlet den Bereitstellungsdeskriptor (Datei web.xml) zum Bereitstellen Ihrer Anwendung auf einem Webserver verwendet. Servlet API 3.0 hat ein neues Paket namens javax.servlet.annotation eingeführt. Es bietet Annotationstypen, die zum Annotieren einer Servlet-Klasse verwendet werden können. Wenn Sie Anmerkungen verwenden, ist der Bereitstellungsdeskriptor (web.xml) nicht erforderlich. Sie sollten jedoch tomcat7 oder eine spätere Version von tomcat verwenden.

Anmerkungen können die entsprechende XML-Konfiguration in der Webbereitstellungsdeskriptordatei (web.xml) ersetzen, z. B. Servletdeklaration und Servletzuordnung. Servlet-Container verarbeiten die mit Anmerkungen versehenen Klassen zur Bereitstellungszeit.

Die in Servlet 3.0 eingeführten Annotationstypen sind -

Sr.Nr. Anmerkung & Beschreibung
1

@WebServlet

Servlet deklarieren.

2

@WebInitParam

Angeben eines Initialisierungsparameters.

3

@WebFilter

So deklarieren Sie einen Servlet-Filter.

4

@WebListener

So deklarieren Sie einen WebListener

5

@HandlesTypes

So deklarieren Sie die Klassentypen, die ein ServletContainerInitializer verarbeiten kann.

6

@HttpConstraint

Diese Annotation wird in der ServletSecurity-Annotation verwendet, um die Sicherheitsbeschränkungen darzustellen, die auf alle HTTP-Protokollmethoden angewendet werden sollen, für die ein entsprechendes HttpMethodConstraint-Element NICHT in der ServletSecurity-Annotation vorkommt.

7

@HttpMethodConstraint

Diese Annotation wird in der ServletSecurity-Annotation verwendet, um Sicherheitsbeschränkungen für bestimmte HTTP-Protokollnachrichten darzustellen.

8

@MultipartConfig

Anmerkung, die für eine Servlet-Klasse angegeben werden kann und angibt, dass Instanzen des Servlets Anforderungen erwarten, die dem MIME-Typ mit mehreren Teilen / Formulardaten entsprechen.

9

@ServletSecurity

Diese Anmerkung wird in einer Servlet-Implementierungsklasse verwendet, um Sicherheitsbeschränkungen anzugeben, die von einem Servlet-Container für HTTP-Protokollnachrichten erzwungen werden sollen.

Hier haben wir einige der Anmerkungen ausführlich besprochen.

@ WebServlet

Das @WebServlet wird verwendet, um die Konfiguration eines Servlets mit einem Container zu deklarieren. Die folgende Tabelle enthält die Liste der Attribute, die für die WebServlet-Annotation verwendet werden.

Sr.Nr. Attribut & Beschreibung
1

String name

Name des Servlets

2

String[] value

Array von URL-Mustern

3

String[] urlPatterns

Array von URL-Mustern, für die dieser Filter gilt

4

Int loadOnStartup

Der ganzzahlige Wert gibt Ihnen den Hinweis zur Startreihenfolge

5

WebInitParam[] initParams

Array von Initialisierungsparametern für dieses Servlet

6

Boolean asyncSupported

Von diesem Servlet unterstützte asynchrone Operation

7

String smallIcon

Kleines Symbol für dieses Servlet, falls vorhanden

8

String largeIcon

Großes Symbol für dieses Servlet, falls vorhanden

9

String description

Beschreibung dieses Servlets, falls vorhanden

10

String displayName

Anzeigename dieses Servlets, falls vorhanden

Mindestens ein URL-Muster MUSS in einem der beiden deklariert sein value oder urlPattern Attribut der Anmerkung, aber nicht beide.

Das value Das Attribut wird für die Verwendung empfohlen, wenn das URL-Muster das einzige Attribut ist, das festgelegt wird, andernfalls das urlPattern Attribut sollte verwendet werden.

Beispiel

Das folgende Beispiel beschreibt die Verwendung der @ WebServlet-Annotation. Es ist ein einfaches Servlet, das den Text anzeigtHello 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>");         
   }   
}

Kompilieren Simple.java wie gewohnt und legen Sie Ihre Klassendatei in <Tomcat-Installationsverzeichnis> / webapps / ROOT / WEB-INF / classes ab.

Versuchen Sie nun, ein Servlet aufzurufen, indem Sie einfach http: // localhost: 8080 / Simple ausführen . Sie sehen die folgende Ausgabe auf der Webseite.

Hello servlet

@WebInitParam

Die Annotation @WebInitParam wird zum Angeben eines Initialisierungsparameters für ein Servlet oder einen Filter verwendet. Es wird in WebFilter- oder WebSevlet-Annotationen verwendet. Die folgende Tabelle enthält die Liste der Attribute, die für die Annotation von WebInitParam verwendet werden.

Sr.Nr. Attribut & Beschreibung
1

String name

Name des Initialisierungsparameters

2

String value

Wert des Initialisierungsparameters

3

String description

Beschreibung des Initialisierungsparameters

Beispiel

Das folgende Beispiel beschreibt die Verwendung der Annotation @WeInitParam zusammen mit der Annotation @WebServlet. Es ist ein einfaches Servlet, das den Text anzeigtHello Servlet und der Stringwert Hello World! die aus dem genommen werden init Parameter.

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

Kompilieren Simple.java wie gewohnt und legen Sie Ihre Klassendatei in <Tomcat-Installationsverzeichnis>; / webapps / ROOT / WEB-INF / classes ab.

Versuchen Sie nun, ein Servlet aufzurufen, indem Sie einfach http: // localhost: 8080 / Simple ausführen . Sie sehen die folgende Ausgabe auf der Webseite.

Hello Servlet

Hello World!

@ Webfilter

Dies ist die Anmerkung, die zum Deklarieren eines Servlet-Filters verwendet wird. Es wird vom Container zur Bereitstellungszeit verarbeitet und der entsprechende Filter auf die angegebenen URL-Muster, Servlets und Dispatcher-Typen angewendet.

Das @WebFilterAnnotation definiert einen Filter in einer Webanwendung. Diese Anmerkung wird für eine Klasse angegeben und enthält Metadaten zum deklarierten Filter. Der mit Anmerkungen versehene Filter muss mindestens ein URL-Muster angeben. In der folgenden Tabelle sind die Attribute aufgeführt, die für die WebFilter-Annotation verwendet werden.

Sr.Nr. Attribut & Beschreibung
1

String filterName

Name des Filters

2

String[] urlPatterns

Stellt ein Array von Werten oder URL-Mustern bereit, für die der Filter gilt

3

DispatcherType[] dispatcherTypes

Gibt die Dispatcher-Typen (Request / Response) an, für die der Filter gilt

4

String[] servletNames

Bietet ein Array von Servlet-Namen

5

String displayName

Name des Filters

6

String description

Beschreibung des Filters

7

WebInitParam[] initParams

Array von Initialisierungsparametern für diesen Filter

8

Boolean asyncSupported

Von diesem Filter unterstützte asynchrone Operation

9

String smallIcon

Kleines Symbol für diesen Filter, falls vorhanden

10

String largeIcon

Großes Symbol für diesen Filter, falls vorhanden

Beispiel

Das folgende Beispiel beschreibt die Verwendung der @ WebFilter-Annotation. Es ist ein einfacher LogFilter, der den Wert von Init-param anzeigttest-paramund den aktuellen Zeitstempel auf der Konsole. Das heißt, der Filter funktioniert wie eine Schnittstellenschicht zwischen der Anforderung und der Antwort. Hier verwenden wir "/ *" für 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.*;  

// Implements Filter class

@WebFilter(urlPatterns = {"/*"}, initParams = { 
   @WebInitParam(name = "test-param", value = "Initialization Paramter")}) 
public class LogFilter implements Filter {
   
   public void init(FilterConfig config) throws ServletException { 
      // Get init parameter  
      String testParam = config.getInitParameter("test-param");
            
      //Print the init parameter  
      System.out.println("Test Param: " + testParam);  
   } 

   public void doFilter(ServletRequest request, ServletResponse response,
      FilterChain chain) throws IOException, ServletException { 
	  
      // Log the current timestamp. 
      System.out.println("Time " + new Date().toString());  
         
      // Pass request back down the filter chain 
      chain.doFilter(request,response); 
   }

   public void destroy( ) {
      /* Called before the Filter instance is removed  
      from service by the web container*/ 
   } 
}

Kompilieren Simple.java wie gewohnt und legen Sie Ihre Klassendatei in <Tomcat-Installationsverzeichnis> / webapps / ROOT / WEB-INF / classes ab.

Versuchen Sie nun, ein Servlet aufzurufen, indem Sie einfach http: // localhost: 8080 / Simple ausführen . Sie sehen die folgende Ausgabe auf der Webseite.

Hello Servlet
  
Hello World!

Öffnen Sie nun die Servlet-Konsole. Dort finden Sie den Wert desinit Parameter testparam und die current timestamp zusammen mit Servlet-Benachrichtigungsnachrichten.