问题出处
当一个项目中出现两个或两个以上的filter时,就会产生此问题——哪个filter先执行、哪个后执行。
实践总结
filter的执行顺序和web.xml中filter-mapping的前后顺序一致,而与filter定义的先后无关。
举例,假如你的web.xml有如下配置片段:
<filter-mapping> <filter-name>SessionFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>SystemFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
那么则实际运行中会先执行SessionFilter、后执行SystemFilter.
实践应用
在实际项目中,多见的是在使用struts框架+filter过滤时(如果你没有使用filter而是struts的intercepter,不在此文讨论范围内),比如有如下结构:
* StrutsPrepareAndExecuteFilter - 负责调度action
* SessionFilter - 负责用户登录审查
大家知道struts对web应用的侵入就是靠它的一个filter(StrutsPrepareAndExecuteFilter)来完成的,而此时我们另外有SessionFilter来过滤非法用户对action的访问。
显然我们期望的顺序是:首先过滤非法用户对action的访问,其后在根据请求地址调度相应的action或jsp.
但是如果此时不注意filter顺序,常常会遇到意想不到的问题,而解决办法就是按照正确的顺序在web.xml中定义:
<filter-mapping> <filter-name>SessionFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>StrutsPrepareAndExecuteFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
相关推荐
web.xml 中的listener、 filter、servlet 加载顺序及其详解
过滤器、拦截器、AOP、ControllerAdvcie的使用对比、执行顺序及代码教程的文章内的示例代码,文章内容请见:https://blog.csdn.net/little_stick_i/article/details/126712515 。 也可以访问我的GitHub仓库:...
java filter过滤器执行过程,可以很清楚的了解和知道过滤器的原理
本源码将详细介绍web.xml配置中servlet,filter,listener的加载顺序,可以让学习者更好的了解web.xml各种属性配置,自己写的东西,不足之处请大家见谅,顺便收点积分也好下资料,谢谢
web.xmllistener、filter、servlet加载顺序.pdf
通常JavaWeb项目启动时我们需要... 下面代码是模拟初始化的一个示例,可以在控制台看到程序的输出,和Listener、Filter、Servlet的启动先后顺序,强烈建议跟我一样喜欢动手的Coder操作一下,废话不多说,直接上代码了。
FilterPro 安装及基本教程中英文 对有源滤波器设计的一款TI官方的设计软件及中英文的使用说明 sallen-key及多反馈 (MFB)设计参考
关于filter、servlet在web.xml配置及加载顺序
Java filter过滤器在项目开发中的应用
Java-filter过滤器在项目开发中的应用.docx
JavaWeb项目 filter练习,编码过滤,登录过滤,较详细。
java servlet spring web filter listenr
j2ee Filter使用原理本代码里面首先是介绍了Filter实现的原理,然后模拟的了j2ee项目中Filter的使用原理,然后由此又延伸了Struts2的Interceptor实现原理,并且给予了详细的注释。
FilterPro低通滤波器设计软件及中文使用资料,用于设计滤波器,放大器
Filter过滤器的代码及其web.xml配置代码 很好的解决网页乱码问题,很方便,只要按照名字添加就可以了
(1)filter生命周期及其与生命周期相关的方法 Filter接口有三个方法,并且这个三个都是与Filter的生命相关的方法 init(Filterconfig):代表filter对象初始化方法 filter对象创建时执行 doFilter(ServletRequest,...
DirectShow Filter 可执行程序。运行后 可以得到库文件 VS2015插件 运行后 可得到库文件 建议默认安装
NDIS使用配置信息来到决定一个Filter Module附加到一个网络适配器栈上的顺序 5) 在不用拆除整驱动栈的情况下,NDIS可以动态的插入、删除Filter Module或进行重新配置 6) 当NDIS重起驱动栈的时候协议驱动可以...
XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin...
DirectShow Filter的开发实践