Servlet中filter的执行顺序以及urlPatterns和servletNames之间的关系
2015-04-14 17:19
381 查看
servlet3.0以前
用web.xml中的<filter-mapping>顺序决定filter的执行顺序<span style="white-space:pre"> </span><filter> <filter-name>firstfilter</filter-name> <filter-class>filter.FirstFilter</filter-class> </filter> <filter> <filter-name>secondfilter</filter-name> <filter-class>filter.SecondFilter</filter-class> </filter> <filter-mapping> <filter-name>firstfilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>secondfilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
执行结果
servlet3.0以后
通过注解配置filter时,没有专门的指令来配置filter执行的先后。确定filter执行的先后是根据filter类名的字母表顺序声明filter
@WebFilter(filterName = "second", urlPatterns = { "/*" }) public class SecondFilter implements Filter { } @WebFilter(filterName = "first", urlPatterns = { "/*" }) public class FirstFilter implements Filter { }执行结果
@WebFilter(filterName = "second", urlPatterns = { "/*" }) public class SecondFilter implements Filter { } @WebFilter(filterName = "first", urlPatterns = { "/*" }) public class ZFirstFilter implements Filter { }
执行结果
可以在web.xml中单独写入<filter-mapping>配置filter顺序。
<span style="white-space:pre"> </span><filter-mapping> <filter-name>firstfilter</filter-name> </filter-mapping> <filter-mapping> <filter-name>secondfilter</filter-name> </filter-mapping>
另urlPatterns和servletNames之间的关系
Configuring a Chain of Filters
WebLogic Server creates a chain of filters by creating a list of all the filter mappings that match an incoming HTTP request. The ordering of the list is determinedby the following sequence:
Filters where the
filter-mappingelement contains a
url-patternthat matches the
request are added to the chain in the order they appear in the
web.xmldeployment descriptor.
Filters where the
filter-mappingelement contains a
servlet-namethat matches
the request are added to the chain after the filters that match a URL pattern.
The last item in the chain is always the originally requested resource.
In your filter class, use the
FilterChain.doFilter()method to invoke the next item in the chain.
相关文章推荐
- 浅谈静态字段与静态构造函数之间的初始化关系以及执行顺序
- web.cofig和Global.asax之间的关系以及执行的顺序
- httpServletRequest对象、filter、servlet、servlet容器、catalina、tomcat、以及web容器之间的关系
- 拨云见日---浅谈静态字段与静态构造函数之间的初始化关系以及执行顺序(下)
- 拨云见日---浅谈静态字段与静态构造函数之间的初始化关系以及执行顺序(上)
- 浅谈静态字段与静态构造函数之间的初始化关系以及执行顺序
- 拨云见日---浅谈静态字段与静态构造函数之间的初始化关系以及执行顺序(上)
- 拨云见日---浅谈静态字段与静态构造函数之间的初始化关系以及执行顺序(下)
- 浅谈静态字段与静态构造函数之间的初始化关系以及执行顺序
- Linux中profile、bashrc、~/.bash_profile、~/.bashrc、~/.bash_profile之间的区别和联系以及执行顺序
- servlet 和 filter执行顺序
- WEB API Filter的使用以及执行顺序
- web.xml中的context-param、filter、listener、servlet节点的执行顺序
- WEB API 系列(二) Filter的使用以及执行顺序
- web.xml文件中context-param、listener、filter、servlet的执行顺序
- 容器执行Servlet API 中ServletContext、ServletContextListener、Filter、Servlet的顺序
- servlet 和filter区别和servlet、filter、interceptor的执行顺序
- Servlet,Servlt容器以及Web应用程序之间的关系
- servlet3.1(tomcat8、9)开发中,Filter使用注解(Annotation)时,如何定义执行顺序
- java-filter 工作原理、调用规则顺序及与servlet的关系