2007 年 4 月 13 日 23 時 57 分

Filter を登録して使ってみる


このアーカイブは同期化されません。 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 が最適な解決手段となりえるのである。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.