作ってみました。
以下の2つは次のページのサンプルソースを参考にしました。
http://www-6.ibm.com/jp/developerworks/java/011116/j_j-tomcat.html
IEFilter.java
ReplaceTextFilter.java
web.xmlには次のような記述を追加します。
<filter>
<filter-name>IE-Filter</filter-name>
<filter-class>ushi.svt.IEFilter</filter-class>
</filter>
<filter>
<filter-name>ReplaceTextFilter</filter-name>
<filter-class>ushi.svt.ReplaceTextFilter</filter-class>
<init-param>
<param-name>search</param-name>
<param-value>Hello</param-value>
</init-param>
<init-param>
<param-name>replace</param-name>
<param-value>ハロー</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>IE-Filter</filter-name>
<url-pattern>*.txt</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ReplaceTextFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
|
サーブレットのinit-paramと同様、
init-param要素はパラメータごとに囲む必要がある、
という点に注意が必要です。
複数のパラメータがある際に、
<init-param>
<param-name>flag1</param-name><param-value>true</param-value>
<param-name>flag2</param-name><param-value>false</param-value>
<param-name>flag3</param-name><param-value>false</param-value>
</init-param>
|
のような書き方をしてしまうとエラー出力も出ないので、
なぜパラメータが設定されないのか、延々悩むはめになります。
以下の「XSLTフィルタ」は次のページのサンプルソースを参考にしました。
http://www43.tok2.com/home/mahkun/pg/java019.html
XSLTFilter.java
●url-patternについて
フィルタに限らずサーブレットのurl-patternもそうですが、
web.xmlのurl-patternタグに書けるURLパターンは、UNIXのファイルグロブほど自由自在というものではありません。
よくあるタイプは「/*」というコンテキスト以下全ページ、「*.jsp」などの拡張子がつくもの、
「/servlet/*」のような特定の(または仮想的な)サブディレクトリの場合です。
では、ある特定のJSPページ1個だけに対してフィルタをかけたいときには?
「thejspname.jsp」とすると、Tomcat 5.0ではアプリケーションの起動時にweb.xmlの解析エラーが発生します。
正解は「/thejspname.jsp」のように先頭にスラッシュをつけて指定します。
(first uploaded 2002/12/15 last updated 2006/02/25, URANO398)
|