在应用中,有时使用过滤器,有时用名称写带过滤器的信息,但过滤器不起作用。
过滤器不起作用的原因,目前我面临的有两种。 一个是过滤器顺序问题,另一个是过滤器文件类型。
首先谈谈过滤器的顺序问题。
在项目中,使用SSH框架时,web.xml文件除了自己编写的过滤器外,还包含struts、Hibernate等过滤器,经常会出现主题中提到的问题。 特别是过滤器过滤相同的类型,例如. actioon。
例如,原始过滤器的顺序是这样的。
struts2
org.Apache.struts2. dispatcher.ng.filter.strutsprepareandexecutefilter
struts2
* .动作
用户过滤器
com.wjl.MyFilter
用户过滤器
* .动作
此时的过滤器可能不起作用。 因为如果在请求时先执行struts过滤器,则自己编写的过滤器将无法执行。 但是,如果更改顺序,也就是说按照以下顺序,要求先走自己的过滤器,然后再走struts的过滤器,自己的过滤器就会起作用。
用户过滤器
com.wjl.MyFilter
用户过滤器
* .动作
struts2
org.Apache.struts2. dispatcher.ng.filter.strutsprepareandexecutefilter
struts2
* .动作
另外,说没有滤波器类型带来的效果。
在web.xml配置式中,许多位置可以连续使用多个文件,因此最好用逗号分隔。 例如,以下情况:
配置spring配置文件的路径
上下文配置
/WEB-INF/classes/daosql.xml、/we B- INF/classes/page contorl.XML、/WEB-INF/classes/base.xml
这个时候的参数可以放很多。 用逗号分隔就好了。 然后,每个都起作用。
上述类似的示例很容易让人联想到在过滤器中以相同的方式放置多个过滤器类型。 例如,情况如下:
用户过滤器
*.action,*.jsp
但是实际上是错的。 这样配置后,无论是action还是jsp都不会通过过滤器。 还是得把他们拆开才能用。 分解后,两种类型都通过过滤器。
用户过滤器
com.wjl.MyFilter
用户过滤器
* .动作
用户过滤器
*.jsp