パッケージ jakarta.servlet

インターフェース Filter

  • すべての既知の実装クラス:
    GenericFilterHttpFilter

    public interface Filter

    フィルターは、リソース(サーブレットまたは静的コンテンツ)へのリクエスト、リソースからのレスポンス、その両方でフィルタリングタスクを実行するオブジェクトです。

    フィルターは、doFilter メソッドでフィルタリングを実行します。すべてのフィルターは、初期化パラメーターを取得できる FilterConfig オブジェクトへのアクセスと、タスクのフィルタリングに必要なリソースのロードなどに使用できる ServletContext への参照を持っています。

    フィルターは、Web アプリケーションのデプロイ記述子で構成されます。

    この設計で特定された例は次のとおりです。

    1. 認証フィルター
    2. ロギングおよび監査フィルター
    3. イメージ変換フィルター
    4. データ圧縮フィルター
    5. 暗号化フィルター
    6. トークン化フィルター
    7. リソースアクセスイベントをトリガーするフィルター
    8. XSL/T フィルター
    9. MIME 型チェーンフィルター
    導入:
    Servlet 2.3
    • メソッドのサマリー

      すべてのメソッド   インスタンスメソッド   抽象メソッド   デフォルトメソッド  
      修飾子と型 メソッド 説明
      default voiddestroy()
      Web コンテナーによって呼び出され、サービスが停止されていることをフィルターに示します。
      voiddoFilter​(ServletRequest request, ServletResponse response, FilterChain chain)
      Filter の doFilter メソッドは、チェーンの終わりにあるリソースに対するクライアントリクエストのために、リクエスト / レスポンスペアがチェーンを通過するたびにコンテナーによって呼び出されます。
      default voidinit​(FilterConfig filterConfig)
      Web コンテナーによって呼び出され、サービスに配置されていることをフィルターに示します。
    • メソッドの詳細

      • init

        default void init​(FilterConfig filterConfig)
                   throws ServletException

        Web コンテナーによって呼び出され、サービスに配置されていることをフィルターに示します。

        サーブレットコンテナーは、フィルターをインスタンス化した後、init メソッドを 1 回だけ呼び出します。フィルターがフィルタリング作業を行うように要求される前に、init メソッドが正常に完了する必要があります。コンテナーは、init メソッドで実行されたアクションが、JSR-133 のルールに従って後で doFilter メソッドを呼び出すすべてのスレッドに確実に表示されるようにします (つまり、init と doFilter の間には「前に発生する」関連があります)。

        init メソッドが次のいずれかの場合、Web コンテナーはフィルターをサービスに配置できません。

        1. ServletException をスローします
        2. Web コンテナーで定義された期間内に戻らない
        パラメーター:
        filterConfig - フィルターの構成および初期化パラメーターを含む FilterConfig オブジェクト
        例外:
        ServletException - フィルターの通常の操作を妨げる例外が発生した場合
      • doFilter

        void doFilter​(ServletRequest request,
                      ServletResponse response,
                      FilterChain chain)
               throws IOExceptionSE,
                      ServletException
        Filter の doFilter メソッドは、チェーンの終わりにあるリソースに対するクライアントリクエストのために、リクエスト / レスポンスペアがチェーンを通過するたびにコンテナーによって呼び出されます。このメソッドに渡された FilterChain により、フィルターはチェーンの次のエンティティにリクエストとレスポンスを渡すことができます。

        このメソッドの典型的な実装は、次のパターンに従います。

        1. リクエストを調べる
        2. 必要に応じて、リクエストオブジェクトをカスタム実装でラップして、入力フィルタリング用のコンテンツまたはヘッダーをフィルタリングします
        3. 必要に応じて、レスポンスオブジェクトをカスタム実装でラップして、出力フィルタリング用のコンテンツまたはヘッダーをフィルタリングします
          • FilterChain オブジェクト(chain.doFilter())を使用してチェーンの次のエンティティを呼び出すか
          • またはリクエスト処理をブロックするフィルターチェーンの次のエンティティにリクエスト / レスポンスペアに渡しません
        4. フィルターチェーンの次のエンティティの呼び出し後、レスポンスにヘッダーを直接設定します。
        パラメーター:
        request - ServletRequest オブジェクトにはクライアントのリクエストが含まれます
        response - ServletResponse オブジェクトにはフィルターのレスポンスが含まれます
        chain - 次のフィルターまたはリソースを呼び出すための FilterChain 
        例外:
        IOExceptionSE - 処理中に I/O 関連のエラーが発生した場合
        ServletException - フィルターの通常の操作を妨げる例外が発生した場合
        関連事項:
        UnavailableException
      • destroy

        default void destroy()

        Web コンテナーによって呼び出され、サービスが停止されていることをフィルターに示します。

        このメソッドは、フィルターの doFilter メソッド内のすべてのスレッドが終了した後、またはタイムアウト期間が経過した後にのみ呼び出されます。Web コンテナーがこのメソッドを呼び出した後は、フィルターのこのインスタンスで doFilter メソッドを再度呼び出すことはありません。

        このメソッドは、フィルターが保持されているリソース(メモリ、ファイルハンドル、スレッドなど)をクリーンアップし、永続状態がメモリ内のフィルターの現在の状態と同期することを確認する機会を提供します。