在web.xml中添加多个filter

web.xml中的多个filter的运行顺序
walker([email protected])  2007-11-20
环境:tomcat 6.x

多个筛选器的运行顺序取决于下列规则:
将 filter-mapping 元素包含与请求匹配的 url-pattern的筛选器按其在 web.xml 部署描述符中出现的顺序添加到链中。
将 filter-mapping 元素包含与请求匹配的 servlet-name 的筛选器添加在链中与 URL 模式匹配的筛选器之后。
链上先进先出的,链中最后的项目往往是最初请求的资源。
也就是说:

1.以url-pattern方式配置的filter运行时肯定先于以servlet-name方式配置的filter
2.以url-partern方式配置的filter中,如果有多个与当前请求匹配,则按web.xml中filter-mapping出现的顺序来运行
3.对于以servlet-name方式配置的filter,如果有多个与当前请求匹配,也是按web.xml中filter-mapping出现的顺序来运行

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/weizhi/archive/2007/11/20/1895014.aspx

 

DEMO:

<!-- 字符编码Filter -->
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<!-- 后台用户登录验证Filter -->
	<filter>
		<filter-name>backendFilter</filter-name>
		<filter-class>com.maxwell.help.LoginFilter</filter-class>
	</filter>
	<!-- 前台会员登录验证Filter -->
	<filter>
		<filter-name>memberFilter</filter-name>
		<filter-class>com.maxwell.help.MemberFilter</filter-class>
	</filter>

	<!-- 字符编码Filter-mapping -->
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!-- 后台用户登录验证Filter-mapping -->
	<filter-mapping>
		<filter-name>backendFilter</filter-name>
		<url-pattern>/backend/*</url-pattern>
	</filter-mapping>
	<!-- 前台会员登录验证Filter-mapping -->
	<filter-mapping>
		<filter-name>memberFilter</filter-name>
		<url-pattern>/member/*</url-pattern>
	</filter-mapping>

 

你可能感兴趣的:(tomcat,Web,xml,.net,servlet)