このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。
Filter は Servlet と同様、web.xml に登録して使う。
登録の方法も非常によく似ており、
<web-app> 要素の子要素として <filter> 要素と、
<filter-mapping> 要素を追加することで登録する。
<!-- フィルタを定義 -->
<filter>
<filter-name>utf8-request</filter-name>
<filter-class>
jp.loafer.test.filters.SetUTF8Request
</filter-class>
</filter>
<!-- フィルタの適用先を定義 -->
<filter-mapping>
<filter-name>utf8-request</filter-name>
<servlet-name>struts</servlet-name>
</filter-mapping>
<filter> は <servlet> の親戚のような指定方法だ。
<filter-name> と <filter-class> で、
フィルタインスタンスに名前を付けて参照可能とする。
<filter-mapping> はフィルタを適用する先を指定する。
<servlet-mapping> 同様、<url-pattern> も使えるので、
上記の場合、<url-pattern>*.do</url-pattern> でも良い。
ただ、特定の Servlet 用にフィルタを使う場合は、
<url-pattern> の代わりに <servlet-name> を使うことで、
Servlet の割り当てパターンに合わせることができる。
Servlet の割り当てられているパターンが複雑な場合は、
<servlet-name> の方が便利であり、保守性も高い。
ただ、<url-pattern> は <servlet-name> より優先され、
先に <url-pattern> に関連付けた Filter が呼び出され、
<servlet-name> はそのチェーンに追加される。
<url-pattern> と <servlet-name> が混在する場合は、
この順序に注意する必要がある。
では、早速テストしてみよう。
ちゃんと日本語が表示されたことが確認できた。
今回、元となるコードには一切を手を触れていない。
他で開発した Servlet など、
直接編集することができない Servlet と組み合わす場合、
Filter が最適な解決手段となりえるのである。