サーブレット-アノテーション

これまで、サーブレットがアプリケーションをWebサーバーにデプロイするためにデプロイメント記述子(web.xmlファイル)を使用する方法を学習しました。サーブレットAPI3.0では、javax.servlet.annotationという新しいパッケージが導入されました。サーブレットクラスに注釈を付けるために使用できる注釈タイプを提供します。アノテーションを使用する場合、デプロイメント記述子(web.xml)は必要ありません。ただし、tomcat7以降のバージョンのtomcatを使用する必要があります。

アノテーションは、サーブレット宣言やサーブレットマッピングなどのWebデプロイメント記述子ファイル(web.xml)内の同等のXML構成を置き換えることができます。サーブレットコンテナは、デプロイ時にアノテーション付きクラスを処理します。

サーブレット3.0で導入された注釈タイプは次のとおりです。

シニア番号 注釈と説明
1

@WebServlet

サーブレットを宣言します。

2

@WebInitParam

初期化パラメータを指定します。

3

@WebFilter

サーブレットフィルタを宣言します。

4

@WebListener

WebListenerを宣言するには

5

@HandlesTypes

ServletContainerInitializerが処理できるクラスタイプを宣言します。

6

@HttpConstraint

このアノテーションは、ServletSecurityアノテーション内で使用され、対応するHttpMethodConstraint要素がServletSecurityアノテーション内で発生しないすべてのHTTPプロトコルメソッドに適用されるセキュリティ制約を表します。

7

@HttpMethodConstraint

このアノテーションは、特定のHTTPプロトコルメッセージのセキュリティ制約を表すために、ServletSecurityアノテーション内で使用されます。

8

@MultipartConfig

サーブレットクラスで指定される可能性のあるアノテーション。サーブレットのインスタンスがmultipart / form-dataMIMEタイプに準拠するリクエストを予期していることを示します。

9

@ServletSecurity

このアノテーションは、サーブレット実装クラスで使用され、HTTPプロトコルメッセージでサーブレットコンテナによって適用されるセキュリティ制約を指定します。

ここでは、いくつかの注釈について詳しく説明しました。

@WebServlet

@WebServletは、コンテナを使用したサーブレットの構成を宣言するために使用されます。次の表に、WebServletアノテーションに使用される属性のリストを示します。

シニア番号 属性と説明
1

String name

サーブレットの名前

2

String[] value

URLパターンの配列

3

String[] urlPatterns

このフィルターが適用されるURLパターンの配列

4

Int loadOnStartup

整数値は、起動順序のヒントを提供します

5

WebInitParam[] initParams

このサーブレットの初期化パラメータの配列

6

Boolean asyncSupported

このサーブレットでサポートされている非同期操作

7

String smallIcon

このサーブレットの小さなアイコン(存在する場合)

8

String largeIcon

このサーブレットの大きなアイコン(存在する場合)

9

String description

このサーブレットの説明(存在する場合)

10

String displayName

このサーブレットの表示名(存在する場合)

少なくとも1つのURLパターンをいずれかで宣言する必要があります value または urlPattern 注釈の属性ですが、両方ではありません。

ザ・ value 設定されている属性がURLパターンのみの場合は、属性の使用をお勧めします。それ以外の場合は、 urlPattern 属性を使用する必要があります。

次の例では、@ WebServletアノテーションの使用方法について説明します。テキストを表示するシンプルなサーブレットですHello 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>");         
   }   
}

コンパイル Simple.java 通常の方法で、クラスファイルを<Tomcat-installationdirectory> / webapps / ROOT / WEB-INF / classesに配置します。

ここで、http:// localhost:8080 / Simpleを実行するだけで、任意のサーブレットを呼び出そうとします。Webページに次の出力が表示されます。

Hello servlet

@WebInitParam

@WebInitParamアノテーションは、サーブレットまたはフィルターの初期化パラメーターを指定するために使用されます。これは、WebFilterまたはWebSevletアノテーション内で使用されます。次の表に、WebInitParamアノテーションに使用される属性のリストを示します。

シニア番号 属性と説明
1

String name

初期化パラメータの名前

2

String value

初期化パラメータの値

3

String description

初期化パラメータの説明

次の例では、@ WeInitParamアノテーションを@WebServletアノテーションと一緒に使用する方法について説明します。テキストを表示するシンプルなサーブレットですHello Servlet および文字列値 Hello World! から取られた init パラメーター。

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 / Simpleを実行するだけで、任意のサーブレットを呼び出そうとします。Webページに次の出力が表示されます。

Hello Servlet

Hello World!

@Webfilter

これは、サーブレットフィルタを宣言するために使用されるアノテーションです。これはデプロイメント時にコンテナによって処理され、対応するフィルタが指定されたURLパターン、サーブレット、およびディスパッチャタイプに適用されます。

ザ・ @WebFilter注釈は、Webアプリケーションのフィルターを定義します。このアノテーションはクラスで指定され、宣言されているフィルターに関するメタデータが含まれています。注釈付きフィルターは、少なくとも1つのURLパターンを指定する必要があります。次の表に、WebFilterアノテーションに使用される属性を示します。

シニア番号 属性と説明
1

String filterName

フィルタの名前

2

String[] urlPatterns

フィルタが適用される値またはurlPatternsの配列を提供します

3

DispatcherType[] dispatcherTypes

フィルタが適用されるディスパッチャのタイプ(要求/応答)を指定します

4

String[] servletNames

サーブレット名の配列を提供します

5

String displayName

フィルタの名前

6

String description

フィルタの説明

7

WebInitParam[] initParams

このフィルターの初期化パラメーターの配列

8

Boolean asyncSupported

このフィルターでサポートされる非同期操作

9

String smallIcon

このフィルターの小さなアイコン(存在する場合)

10

String largeIcon

このフィルターの大きなアイコン(存在する場合)

次の例では、@ WebFilterアノテーションの使用方法について説明します。これは、Init-paramの値を表示する単純なLogFilterです。test-paramコンソールの現在のタイムスタンプ。つまり、フィルターは要求と応答の間のインターフェース層のように機能します。ここでは、urlPatternに「/ *」を使用します。つまり、このフィルタはすべてのサーブレットに適用できます。

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*/ 
   } 
}

コンパイル Simple.java 通常の方法で、クラスファイルを<Tomcat-installationdirectory> / webapps / ROOT / WEB-INF / classesに配置します。

ここで、http:// localhost:8080 / Simpleを実行するだけで、任意のサーブレットを呼び出そうとします。Webページに次の出力が表示されます。

Hello Servlet
  
Hello World!

次に、サーブレットコンソールを開きます。そこに、あなたはの価値を見つけるでしょうinit パラメータ testparam そしてその current timestamp サーブレット通知メッセージとともに。