パッケージ 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 void
    Web コンテナーによって呼び出され、サービスが停止されていることをフィルターに示します。
    void
    Filter の doFilter メソッドは、チェーンの終わりにあるリソースに対するクライアントリクエストのために、リクエスト / レスポンスペアがチェーンを通過するたびにコンテナーによって呼び出されます。
    default void
    init(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 - フィルターの通常の操作を妨げる例外が発生した場合
      関連事項:
    • destroy

      default void destroy()

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

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

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