【发布时间】:2015-12-22 09:50:01
【问题描述】:
我有以下方式定义的 web.xml
<filter>
<filter-name>Filter1</filter-name>
<filter-class>
org.springframework.web.filter.DelegatingFilterProxy
</filter-class>
</filter>
<filter-mapping>
<filter-name>Filter1</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter>
<filter-name>Filter2</filter-name>
<filter-class>
org.springframework.web.filter.DelegatingFilterProxy
</filter-class>
</filter>
<filter-mapping>
<filter-name>Filter2</filter-name>
<url-pattern>/filter2.do</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:filter1-beans-def.xml
classpath:filter2-bean-def.xml
</param-value>
</context-param>
//dispatcher Servlet defination
从上面的序列过滤器1定义首先出现,然后是第二个过滤器。在上下文中定义其各自的 bean 的情况也是如此。
但实际上我的过滤器是按以下顺序执行的:filter 2 ---> filter 1。 我想以相反的顺序执行它们吗?
这里发生了什么问题?谢谢
【问题讨论】:
-
它与spring无关,也与spring-mvc无关。由于您的过滤器是在 web.xml 文件中定义的,因此它由 servlet 容器处理,并且规范要求容器应用
匹配过滤器映射的顺序与这些元素在部署描述符中出现的顺序相同 。您如何确定订单? -
是的,因为我已经设置了调试点
-
你的servlet容器是什么?看起来它不遵守规范......
-
你把调试点放在哪里了?您确定正在使用
DelegatingFilterProxy吗?您的过滤器没有,通过任何更改@WebFilter注释?或者在ServletContainerInitializer或WebApplicationInitializer的某个地方有一个web-fragment.xml正在搞乱过滤器?所以请添加您的完整web.xml和您的实际过滤器(至少带有注释的类定义)。
标签: java spring spring-mvc servlet-filters