在应用中,有时使用过滤器,有时用名称写带过滤器的信息,但过滤器不起作用。
过滤器不起作用的原因,目前我面临的有两种。 一个是过滤器顺序问题,另一个是过滤器文件类型。
先说说过滤器的顺序问题。
在项目中,使用SSH框架时,web.xml文件除了自己编写的过滤器外,还包含struts、Hibernate等过滤器,经常会出现主题中提到的问题。 特别是过滤器过滤相同的类型,例如. actioon。
例如,原始过滤器的顺序是这样的。
filter filter-name struts2/filter-name filter-class org.Apache.struts2. dispatcher.ng.filter.strutsprepareareandeandexexexer 过滤器- name URL-pattern *.action/URL-pattern/filter-mappingfilterfillier filter-name filter-classcom.wjl.myl 过滤器过滤器-映射过滤器- nameuserfilter /过滤器- naam er过滤器-映射时过滤器可能不起作用。 因为如果在请求时先执行struts过滤器,则自己编写的过滤器将无法执行。 但是,如果更改顺序,也就是说按照以下顺序,要求先走自己的过滤器,然后再走struts的过滤器,自己的过滤器就会起作用。
过滤器过滤器- nameuserfilter/filter-name filter-classcom.wjl.myfilter/filter-class/filter filter-mapping filterter 过滤器-映射文件过滤器- name struts2/filter-name filter-class org.Apache.struts2. dispatcher.ng.filter.stter 过滤器- class过滤器- name URL-pattern *.action/URL-pattern/filter-mapping
再说说过滤类型导致的不起作用。
在web.xml配置式中,许多位置可以连续使用多个文件,因此最好用逗号分隔。 例如,以下情况:
上下文- param描述配置spring配置文件的路径/描述参数- namecontextconfiglocation/param-name param-value/we B- ii/we B- INF/classes/base.XML/param-value/context-param此时的param-value
上述类似的示例很容易让人联想到在过滤器中以相同的方式放置多个过滤器类型。 例如,情况如下:
过滤器-映射过滤器- nameuserfilter/filter-name URL-pattern *.action,*.JSP/URL-pattern/filter-mapping 还是得把他们拆开才能用。 分解后,两种类型都通过过滤器。
过滤器过滤器- nameuserfilter/filter-name filter-classcom.wjl.myfilter/filter-class/filter filter-mapping filterer 过滤器-映射过滤器-映射过滤器- nameuserfilter/filter-name URL-pattern *.JSP/URL