今天在项目里面碰见一个很奇怪的问题:在一个过滤器中处理了request.getParameter(arg0)后,请求就不会转发到下一个过滤器了(个案,目前一个只在2个项目中出现)。
在没找到原因之前,只有通过,转换过滤器执行顺序来解决
整理了一下……
多个筛选器的运行顺序:
1. 将 filter-mapping 元素包含与请求匹配的 url-pattern的筛选器按其在 web.xml 部署描述符中出现的顺序添加到链中。
2. 将 filter-mapping 元素包含与请求匹配的 servlet-name 的筛选器添加在链中与 URL 模式匹配的筛选器之后。
3. 链上先进先出的,链中最后的项目往往是最初请求的资源。
所以:
1.以url-pattern方式配置的filter运行时肯定先于以servlet-name方式配置的filter
2.以url-partern方式配置的filter中,如果有多个与当前请求匹配,则按web.xml中filter-mapping出现的顺序来运行
在没找到原因之前,只有通过,转换过滤器执行顺序来解决
整理了一下……
多个筛选器的运行顺序:
1. 将 filter-mapping 元素包含与请求匹配的 url-pattern的筛选器按其在 web.xml 部署描述符中出现的顺序添加到链中。
2. 将 filter-mapping 元素包含与请求匹配的 servlet-name 的筛选器添加在链中与 URL 模式匹配的筛选器之后。
3. 链上先进先出的,链中最后的项目往往是最初请求的资源。
所以:
1.以url-pattern方式配置的filter运行时肯定先于以servlet-name方式配置的filter
2.以url-partern方式配置的filter中,如果有多个与当前请求匹配,则按web.xml中filter-mapping出现的顺序来运行