Filterクラスとは
- フィルタを設定するとサーブレットのdoPost(),doGet()の前後でFilterクラスに設定した処理を実行することができる
- 複数のサーブレットで同じ処理をする場合など、共通の処理をまとめることができる
- 1つのサーブレットに複数のフィルタをかけることも可能
- ログインフィルタ
- 権限フィルタ 等
Filterの実装
@WebFilterアノテーションを付与する
WebFilter
@WebFilter("/*") // フィルタを設定するサーブレットのURLパターンを指定
java.servlet.Filter インターフェースを実装する
Filter
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
// すべてのサーブレットクラスに設定する場合は("/*")
@WebFilter("/*")
public class Filter implements javax.servlet.Filter {
// デフォルトコンストラクタ
public Filter() {}
// インスタンス化された直後に実行される処理
public void init(FilterConfig fConfig) throws ServletException {}
// インスタンスが破棄される直前に実行される処理
public void destroy() {}
// 設定したサーブレットクラスをリクエストした時に実行される処理
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// doFilter()の前に書くとサーブレット実行の前処理となる
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
// doFilter()の後に書くとサーブレット実行の後処理となる
// ~~~~
}
}
EclipseからFilterクラスを作成する場合
新規→フィルタを選択すると簡単に実装できる