
サーブレットフィルタについては、下記の記事で解説させて頂きました。
さらに追加の機能になりますが、サーブレットフィルタには、web.xmlに値を定義することで、初期化パラメータを渡すことができます。
<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"> <filter> <filter-name>SampleFilter</filter-name> <filter-class>filter.FilterTest</filter-class> <init-param> <param-name>encode</param-name> <param-value>UTF-8</param-value> </init-param> </filter> </web-app>
web.xmlの<filter>タグは、フィルターを定義することができるタグでしたが、そこに「<init-param>」を使うことで、サーブレットフィルタの中で、使うことができる変数として定義ができます。
実際に活用するには、initメソッドの中で、filterConfigクラスのgetInitParameterというメソッドを使って、値を取り出す必要があります。
フィルタークラスのインスタンス変数等に格納して、doFilterメソッドに渡しています。
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{
private String encode;
public void init(FilterConfig filterConfig)
throws ServletException {
encode = filterConfig.getInitParameter("encode");
}
public void doFilter(ServletRequest request,
ServletResponse response, FilterChain chain)
throws IOException, ServletException {
request.setCharacterEncoding(encode);
chain.doFilter(request, response);
}
public void destroy() {
//何もしない。
}
}
初期化パラメータのメリット
プログラムを書き換えることなく、web.xmlの値の書き換えのみで、設定を変更することができる点です。







この記事へのコメントはありません。