
サーブレットフィルタとは?
サーブレットや、JSPにおいて「共通の前後処理を記述するための仕組み」のことです。
用途
例えば、下記のようなパターンを想定できます。
- 入力文字エンコーディングをする。
- セッション切れのチェックを行う。
- 認証処理
- ロギング処理
- 共通データ変換
上記のような処理は、どの画面でも共通ですし、うっかり抜け漏れがある可能性があります。
それを防いでくれるのが、「サーブレットフィルタ」という仕組みです。
使い方
1.javax.servlet.Filterインターフェイスを実装したフィルタクラスを作成する。
「javax.servlet.Filter」というインターフェイスの実装クラスを作る必要があります。下記のメソッドが実装されており、処理のあるなしに関わらず、メソッドを記述する必要があります。
メソッド名 | 説明 |
---|---|
init | 初期化時に一回だけ呼ばれる。 |
doFilter | フィルタ処理を記述する。 |
destroy | アプリケーションサーバーからインスタンスが削除されるタイミング(Tomcat停止時)で、一度だけ呼ばれる。 |
サンプル
package filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class FilterTest implements Filter{ public void init(FilterConfig filterConfig) throws ServletException { System.out.println("初期処理です。"); } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding("UTF-8"); System.out.println("共通処理です。"); chain.doFilter(request, response); } public void destroy() { //何もしない。 } }
2.web.xmlにフィルタ登録をする。
具体的な書き方は、下記の記事で解説しています。
サンプル
<?xml version="1.0" encoding="utf-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <servlet> <servlet-name>hello</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/HelloServlet</url-pattern> </servlet-mapping> <filter> <filter-name>SampleFilter</filter-name> <filter-class>filter.FilterTest</filter-class> </filter> <filter-mapping> <filter-name>SampleFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
この記事へのコメントはありません。