JAVA:IT TRICK

フィルタチェーン(FilterChain)と順序

ここではサーブレットフィルタのチェーンとフィルタの実行順序について詳しく説明します。
  • このエントリーをはてなブックマークに追加
  • Clip to Evernote
  • IT TRICK RSS

ここではサーブレットフィルタのチェーンとフィルタの実行順序について詳しく説明します。

以下のサンプルでは3つのフィルタでフィルタチェーンを形成しています。この場合はFilter1~Filter3まで順番に実行されます。

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

	<filter>
		<filter-name>Filter1</filter-name>
		<filter-class>filter.Filter1</filter-class>
	</filter>
	
	<filter>
		<filter-name>Filter2</filter-name>
		<filter-class>filter.Filter2</filter-class>
	</filter>
	
	<filter>
		<filter-name>Filter3</filter-name>
		<filter-class>filter.Filter3</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>Filter1</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<filter-mapping>
		<filter-name>Filter2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<filter-mapping>
		<filter-name>Filter3</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

</web-app>

このサンプルではFilter1のdoFilter()メソッド内でchain.doFilter(request, response);を実行するとフィルタチェーンがFilter2に移行します。そして、Filter2のdoFilter()メソッド内でchain.doFilter(request, response);を実行するとフィルタチェーンがFilter3に移行します。最後にFilter3のdoFilter()メソッド内でchain.doFilter(request, response);を実行すると後ろにフィルタがないため、リクエストの要求に従って適切なサーブレットもしくはJSPが呼び出します。