Java Spring DelegatingFilterProxy执行命令问题

Java Spring DelegatingFilterProxy执行命令问题,java,spring,spring-mvc,servlet-filters,Java,Spring,Spring Mvc,Servlet Filters,我用以下方式定义了web.xml <filter> <filter-name>Filter1</filter-name> <filter-class> org.springframework.web.filter.DelegatingFilterProxy </filter-class> </filter> <filter-mapping> <filter-name

我用以下方式定义了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时也是如此

但实际上我的过滤器是按以下顺序执行的:过滤器2-->过滤器1。 我想按相反的顺序执行它们


这里发生了什么事?谢谢

根据我阅读的所有文档,应该按照定义过滤器映射元素的顺序执行过滤器

调用过滤器的顺序是 与servlet的请求URI匹配的筛选器映射声明 出现在过滤器映射元素列表中

链中过滤器的顺序与中过滤器的顺序相同 web应用程序部署中显示哪些筛选器映射 描述符

要尝试的一件事是重新排列要分组在一起的过滤器和过滤器映射元素:

<filter>
   <filter-name>Filter1</filter-name>
   <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter>
   <filter-name>Filter2</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-mapping>
   <filter-name>Filter2</filter-name>
   <url-pattern>/filter2.do</url-pattern>
</filter-mapping>

它与spring或SpringMVC无关。由于您的过滤器是在web.xml文件中定义的,因此它由servlet容器处理,规范要求容器按照这些元素在部署描述符中出现的顺序应用匹配的过滤器映射。您如何确定顺序?是的,我确定,因为我已经设置了调试器点,您认为servlet容器是什么?看起来它不遵守规范……您将调试器点放在哪里了?您真的确定正在使用DelegatingFilterProxy吗?您的过滤器没有@WebFilter注释吗?或者ServletContainerInitializer或WebApplicationInitializer的某个地方有一个web-fragment.xml与过滤器混淆?因此,请添加完整的web.xml和实际的过滤器,至少添加有注释的类定义。