|
||||||||||||||||||||||||||
| 1 2 次のページ | ||||||||||||||||||||||||||
| 共通処理をフィルタで記述する | ||||||||||||||||||||||||||
|
入力文字コードの宣言のようにアプリケーション共通の処理を、個別のJSPページ(またはサーブレットクラス)で記述するのは好ましくありません。このような共通処理は、フィルタを利用することで、JSP&サーブレットから外部化し、個々のJSP&サーブレットの記述をシンプルにすることができます。フィルタは、JSP&サーブレットが呼び出されたタイミングで自動で起動されます。 リスト1は、入力文字コードの宣言をフィルタ上で記述した例です。 リスト1:EncodingFilter.java(抜粋)
フィルタクラスを定義する場合に必要な条件は次のとおりです。
表1:フィルタクラスを定義する場合に必要な条件
※注1:
本サンプルでは終了処理が必要ありませんので、空のdestroyメソッドを記述しています。内容がない場合も、initメソッド/destroyメソッドは省略できません。
フィルタを利用するには、リスト2のようにweb.xmlにフィルタを登録する必要があります。<filter>要素は、フィルタクラスの完全修飾名(<filter-class>要素)に対して論理名(<filter-name>要素)を定義します。論理名は、アプリケーション内で一意である必要があります。 リスト2:web.xml(抜粋)
また、フィルタ内で使用する初期化パラメータ(<init-param>要素)もここで定義可能です。文字コード名のように、あとで変更する可能性がある情報は初期化パラメータとして外部化しておくのが好ましいでしょう。初期化パラメータは、FilterConfig#getInitParameterメソッドで取得可能です。 そして、<filter-mapping>要素では、どのリクエストに対してフィルタを適用するかの関連づけを定義します。ここでは、<url-pattern>要素として⁄*を指定しているので、アプリケーションルート配下に対するすべてのリクエストに対してEncodingFilterフィルタを適用します。<dispatcher>要素ではフィルタの適用タイミングを定義します。REQUEST(リクエスト時)のほか、表2のような値を設定可能です。複数タイミングを定義したい場合には、<dispatcher>要素を複数個列記します。
表2:<dispatcher>要素で指定可能な値 |
||||||||||||||||||||||||||
|
1 2 次のページ |
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||

