Filter の適用
servlet/JSPの複数ファイル内で同一の処理が記述されている場合
その同一処理部分だけをFilterと呼ばれる別ファイルに置いておき
各ファイルからFilterを呼び出す形で処理を簡潔化することができる
Filterの作成
インタフェースjavax.servlet.Filterをimplements(実装)するクラスを宣言し
アノテーションを @WebFilter(urlPatterns={"URL"}) と指定し、加えて
以下3つのメソッドをオーバーライドすることで作成できる
(アノテーションで指定するFilter対象はワイルドカードも使用可 {"/*"}等)
◇doFilter request時毎回実行されるメソッド
void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException
request, response, chainと3つの引数を持つ、chainはFilter適用ファイルとの
処理引き渡しに使用される
System.out.println("処理前");
chain.doFilter(request, response);
System.out.println("処理後");
上記であれば、処理前⇒Filter適用ファイル内処理⇒処理後と順番に処理する
◇init フィルタの開始時(サーバー起動時)に呼ばれるメソッド
void init(FilterConfig filterConfig)throws ServletException
◇destroy フィルタの終了時(サーバーダウン時)に呼ばれるメソッド
void destroy()
web.xml内記述でのフィルター適用
<filter>
<filter-name>filterlink</filter-name>
<filter-class>hoge.class</filter-class>
</filter>
<filter-mapping>
<filter-name>filterlink</filter-name>
<url-pattern>/hoge/servlet</url-pattern>
</filter-mapping>
例えばFilter"class"とそのFilterを適用したい"servlet"がある場合
web.xml上で指定するには上記の様に書き加える
<filter>タグ内に
リンクさせる名前<filter-name>とFilterクラスの位置<filter-class>
<filter-mapping>タグ内に
リンクさせる名前<filter-name>と適用クラスのURL<url-pattern>
※web.xmlで記述すれば、1つのファイル内で複数のFilterを適用できる
◆Filterの解除
・アノテーションの場合
@WebFilter(urlPatterns={"/dummy"})
実際には使用しないダミーパスを指定する
・web.xmlの場合
<!--
<filter></filter><filter-mapping></filter-mapping>
-->
とコメントアウトする