CodeGym /Java Course /モジュール 3 /注釈を使用した Web アプリケーションのカスタマイズ

注釈を使用した Web アプリケーションのカスタマイズ

モジュール 3
レベル 11 , レッスン 7
使用可能

8.1 サーブレットのアノテーションの概要

Tomcat は、バージョン 7 以降、Servlet API 3.0 Web サーブレット仕様のサポートを開始しました。特に、 と呼ばれるパッケージがその中に登場しましたjavax.servlet.annotation。これには、サーブレット クラスに注釈を付けるために使用できるさまざまなタイプの注釈が含まれています。注釈を使用する場合、デプロイメント記述子 (web.xml) は必要ありません。

最も役立つ注釈のリスト:

注釈 説明
1 @WebServlet サーブレットを宣言します
2 @WebInitParam 初期化パラメータを指定します
3 @WebFilter Webフィルターを宣言します
4 @WebListener Web リスナーを宣言します
5 @ServletSecurity セキュリティ設定を構成できます

例:

@WebServlet( urlPatterns = {"/api/*"} )
public class Example extends HttpServlet {
    protected void doGet( HttpServletRequest request, HttpServletResponse response) throws Exception {
         response.setContentType("text/html");
         PrintWriter out = response.getWriter();
         out.println("Hello World!");
    }
}

サーブレットを宣言し、 で指定された URL に届くすべてのリクエストを処理するようにマッピングするには、1 つのアノテーションで十分です/api/*

8.2 サーブレットマッピングの設定

アノテーションには、@WebServlet記述されるサーブレットの非常に柔軟な構成を可能にする多くのパラメーターがあります。主なものを見てみましょう。

属性 説明
1 name サーブレットの一意の名前 (web.xml など)
2 displayName 人間が判読できるサーブレット名
3 description サーブレットの説明
4 value マッピング用のURLを設定します
5 urlPatterns マップする URL のリストを指定します (値の代わりに使用されます)
6 initParams サーブレットの開始パラメータを設定できます。
7 asyncSupported サーブレットが非同期 (HTTP/2) で実行できることを指定します。
8 loadOnStartup サーブレットの起動優先順位を制御するシーケンス番号
9 smallIcon 小さなサーブレットアイコンを設定します
10 largeIcon 大きなサーブレットアイコンを設定します

ここにはいくつかの興味深い点があります。

まず、valueと はurlPatterns交換可能な属性であることに注意してください。どちらも、サーブレットのマッピング先となる URL のリストを指定できます。

次に、このパラメータは、asyncSupportedサーブレットが HTTP/2 プロトコルを介して非同期リクエストを正しく処理するかどうかを示します。

3 番目の重要な属性は ですinitParams。これにより、ServletContext に配置されるパラメーターのリストを設定できます。

例:

@WebServlet(
        urlPatterns = {"/sendFile", "/uploadFile"},
        loadOnStartup = 1,
        asyncSupported = true,
        initParams = {
            @WebInitParam(name = "saveDir", value = "c:/uploaded"),
            @WebInitParam(name = "allowedTypes", value = "jpg,gif,png")
        }
)
public class ImageUploadServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String saveDir = getInitParameter("saveDir");
        String fileTypes = getInitParameter("allowedTypes");

        PrintWriter writer = response.getWriter();

        writer.println("saveDir = " + saveDir);
        writer.println("fileTypes = " + fileTypes);
    }
}

8.3 フィルタマッピングの設定

前述したように、フィルターはサーブレットのユーティリティ タイプであり、サーブレットのように構成されます。アノテーションが持つ属性は次のとおりです@WebFilter

属性 説明
1 filterName フィルターの一意の名前 (web.xml など)
2 displayName 人間が読めるフィルター名
3 description フィルターの説明
4 value / urlPatterns マップする URL のリストを設定します
5 dispatcherTypes DispatcherType のリストを指定します
6 servletNames 適用するサーブレットのリストを指定します
7 initParams フィルタの開始パラメータを設定できます。
8 asyncSupported フィルターが非同期 (HTTP/2) で実行できることを指定します。
9 smallIcon 小さなフィルターアイコンを設定します
10 largeIcon 大きなフィルターアイコンを設定します

特定のサーブレットへのすべてのリクエストをインターセプトするフィルターの例:

@WebFilter(servletNames = {"MyOwnServlet", "UploadServlet"})
public class MyFilter implements Filter {
    // implements Filter's methods here...
}

複数のパラメーターを指定したフィルターの例:

@WebFilter(
        urlPatterns = "/uploadFilter",
        initParams = @WebInitParam(name = "fileTypes", value = "doc;xls;zip;txt;jpg;png;gif")
)
public class UploadFilter implements Filter {
    // implements Filter's methods here...
}

RequestDispatcher のタイプを指定したフィルターの例:

@WebFilter(
        urlPatterns = "/admin",
        dispatcherTypes = {DispatcherType.REQUEST, DispatcherType.FORWARD}
)
public class MyFilter implements Filter {
    // implements Filter's methods here...
}

フィルタとサーブレットの目的については、次の講義で詳しく学びます。

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION