Mergedoc
Translation

javax.servlet
インタフェース Filter


public interface Filter

Filter は、リソース (Servlet または静的なコンテンツ) へのリクエストもしくはリソースからのレスポンス、あるいはその両方をフィルタリングするタスクを処理するオブジェクトです。

Filter は、doFilter メソッドによりフィルタリングを行います。それぞれの Filter は、FilterConfig オブジェクトへアクセスできます。 FilterConfig オブジェクトは、Filter の初期化パラメータや、フィルタリングタスクで必要とされるリソースをロードするためなどに利用可能な ServletContext への参照を保持しています。

Filter は、Web アプリケーションの配備記述子において構成されます。

以下のような用途に利用できます。
1) 認証フィルタ
2) ログと監査フィルタ
3) イメージ変換フィルタ
4) データ圧縮フィルタ
5) 暗号化フィルタ
6) トークン分割(Tokenizing)フィルタ
7) リソースアクセスイベントのトリガとなるフィルタ
8) XSL/T フィルタ
9) Mime-type チェーンフィルタ

導入されたバージョン:
Servlet 2.3

メソッドの概要
 void destroy()
          サービス状態を終えた事を Filter に伝えるために Web コンテナが呼び出します。
 void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
          Filter クラスの doFilter メソッドはコンテナにより呼び出され、最後のチェーンにおけるリソースへのクライアントリクエストのために、 毎回リクエストレスポンスのペアが、チェーンを通して渡されます。
 void init(FilterConfig filterConfig)
          Web コンテナは、Filter をサービス状態にするために init メソッドを呼び出します。
 

メソッドの詳細

init

void init(FilterConfig filterConfig)
          throws ServletException
Web コンテナは、Filter をサービス状態にするために init メソッドを呼び出します。 Servlet コンテナは、Filter をインスタンス化したあと、一度だけ init メソッドを呼び出します。 Filter がフィルタリングの仕事を依頼される前に、init メソッドは正常に完了してなければいけません。

init メソッドが以下のような状況になると、Web コンテナは Filter をサービス状態にできません。
1. ServletException をスローした
2. Web コネクタで定義した時間内に戻らない

例外:
ServletException

doFilter

void doFilter(ServletRequest request,
              ServletResponse response,
              FilterChain chain)
              throws java.io.IOException,
                     ServletException
Filter クラスの doFilter メソッドはコンテナにより呼び出され、最後のチェーンにおけるリソースへのクライアントリクエストのために、 毎回リクエストレスポンスのペアが、チェーンを通して渡されます。 このメソッドに渡される FilterChain を利用して、Filter がリクエストやレスポンスをチェーン内の次のエンティティ (Filter) にリクエストとレスポンスを渡す事ができます。

このメソッドの典型的な実装は以下のようなパターンとなるでしょう。
1. リクエストの検査
2. オプションとして、入力フィルタリング用にコンテンツもしくはヘッダをフィルタリングするためにカスタム実装によるリクエストオブジェクトのラップ
3. オプションとして、出力フィルタリング用にコンテンツもしくはヘッダをフィルタリングするためにカスタム実装によるレスポンスオブジェクトラップ
4. 以下の a)、b) の どちらか
a) FileterChain オブジェクト(chain.doFilter()) を利用してチェーンの次のエンティティを呼び出す
b) リクエスト処理を止めるために、リクエストレスポンスのペアをフィルタチェーンの次のエンティティに渡さない
5. フィルタチェーンの次のエンティティの呼び出した後、直接レスポンスのヘッダをセット

例外:
java.io.IOException
ServletException

destroy

void destroy()
サービス状態を終えた事を Filter に伝えるために Web コンテナが呼び出します。 Filter の doFilter メソッドが終了したか、タイムアウトに達した全てのスレッドにおいて、このメソッドを一度だけ呼び出されます。 Web コンテナがこのメソッドを呼び出した後は、Filter のこのインスタンスにおいて二度と doFilter メソッドを呼び出す事はありません。

このメソッドは、フィルタに保持されている (例えば、メモリ、ファイルハンドル、スレッド) 様々なリソースを開放する機会を与え、あらゆる永続性の状態が、メモリ上における Filter の現在の状態と同期しているように注意してください。


Mergedoc
Translation

Copyright © 2000- The Apache Software Foundation. All rights Reserved.