フィルタ
フィルタとは
サーブレットに用意された特別なクラス。文字コードの設定など、同じ処理が複数のサーブレットクラスがある場合、その処理をフィルタにまとめることができる。
フィルタのメソッドに記述された処理は、サーブレットクラスのdoGet()およびdoPost()メソッドが実行される前後のタイミングで自動的に実行される。なので、フィルタを複数のサーブレットクラスに設定することで、それらのサーブレットクラスで共通する処理をまとめることができる。
また、ひとつのサーブレットクラスに複数のフィルタを設定し連続で実行することもできる(フィルタチェーン)。
フィルタの例
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; import javax.servlet.annotation.WebFilter; @WebFilter("/*") public class FilterSample implements Filter { public void init(FilterConfig fConfig) throws ServletException { } public void doFilter (ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding("UTF-8"); chain.doFilter(request, response); } public void destroy() { } } }
WebFilterアノテーション
WebFilterアノテーションで、フィルタを設定するサーブレットクラスを指定する。すべてのサーブレットクラスにそのフィルタを指定する場合は
@WebFilter("/*");
となる。