JAVA:IT TRICK

フィルタの初期化パラメータ

サーブレットフィルタでは、実行時に初期化パラメータ(設定情報)をweb.xmlから読み込むことができます。ここでは初期化パラメータの使い方について説明します。
  • このエントリーをはてなブックマークに追加
  • Clip to Evernote
  • IT TRICK RSS

サーブレットフィルタでは、実行時に初期化パラメータ(設定情報)をweb.xmlから読み込むことができます。ここでは初期化パラメータの使い方について説明します。

フィルタの初期化パラメータはweb.xmlのfilter要素のinit-param要素で指定します。init-param内ではparam-name要素でパラメータ名、param-value要素でパラメータの値を指定します。また、初期化パラメータが複数ある場合は、パラメータの数だけinit-param要素を定義する必要があります。

web.xmlで定義したフィルタの初期化パラメータを取得するには、フィルタクラスのinit()メソッドの引数であるFilterConfigインタフェースのgetInitParameter()メソッドで引数の名前を指定して取得します。以下は実際のサンプルです。

フィルタ初期化パラメータ取得サンプル

以下のweb.xmlでは名前「encode」、値「UTF-8」の初期化パラメータを定義しています。

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app>

	<filter>
		<filter-name>EncodingFilter</filter-name>
		<filter-class>filter.Filter48134</filter-class>
		<init-param>
			<param-name>encode</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>EncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

</web-app>

フィルタクラスではweb.xml内で定義している初期化パラメータ「encode」をinit()メソッドで取得し、doFilter()メソッドでそれを使ってリクエストのエンコードを設定しています。

Filter48136.java

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 Filter48136 implements Filter {

	private String encode;

	public void init(FilterConfig config) throws ServletException {

		encode = config.getInitParameter("encode");
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {

		request.setCharacterEncoding(encode);
		chain.doFilter(request, response);

	}

	public void destroy() {
	}

}