サーブレット・フィルタを作る

作ってみました。
以下の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」のように先頭にスラッシュをつけて指定します。

Server Side Java Index Top

(first uploaded 2002/12/15 last updated 2006/02/25, URANO398)

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル