当前位置: 首页 > 知识库问答 >
问题:

如何使用Apache Tomcat 7订购过滤器

宰父俊彦
2023-03-14

我正在用Spring、maven和Apache Tomcat 7创建一个Java的web项目。在这个项目中,我有一个这样的web.xml:

<display-name>web</display-name>

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<!-- Servlet de Spring. Definimos el Servlet que recibirá todas las peticiones que 
    se realizen a la página -->

<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
<!-- <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-servlet.xml</param-value>
</context-param> -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> 

<absolute-ordering>
    <name>encodingFilter</name>
    <name>cors</name>
    <name>springSecurityFilterChain</name>
    <name>FileUploadFilter</name>
</absolute-ordering>

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter>
    <filter-name>encoding-filter</filter-name>
    <filter-class>
        org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>


<filter>
    <filter-name>cors</filter-name>
    <filter-class>filters.SimpleCorsFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>cors</filter-name>
    <url-pattern>/api/*</url-pattern>
</filter-mapping>

<error-page>
    <location>/error</location>
</error-page>
<error-page>
    <error-code>404</error-code>
    <location>/error</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/error</location>
</error-page>
<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/error</location>
</error-page>

当我启动Tomcat时,控制台上会出现以下消息:

org.apache.catalina.deploy.WebXml orderWebFragments
Used a wrong fragment name encodingFilter at web.xml absolute-ordering tag!
org.apache.catalina.deploy.WebXml orderWebFragments
Used a wrong fragment name cors at web.xml absolute-ordering tag! 
org.apache.catalina.deploy.WebXml orderWebFragments
Used a wrong fragment name springSecurityFilterChain at web.xml absolute-ordering tag!

我在ApacheTomcat6上也尝试过同样的方法,但没有遇到任何问题。知道吗?

共有1个答案

谭富
2023-03-14

看起来您无法定义servlet过滤器的顺序。请看下面的帖子

 类似资料:
  • 启用Spring Security调试后,它会注册Spring Security DebugFilter.java 我有一个自定义过滤器,我想在spring security DebugFilter之前订购。在调试过滤器之前调用过滤器最合适的方式是什么? 我的自定义过滤器已经是Spring Security过滤器链之前的订单,但它不会在Spring Security调试过滤器之前被调用。

  • 如何使用java8流和过滤器过滤嵌套循环? 假设我有一个汽车列表(

  • 问题内容: 我目前有使用PIVOT生成如下表的查询: 我想做的是,但看起来像是拉伸,结果是值递减。 这是查询: 这样做会产生错误,因此可以指定列吗? 问题答案: 试试这个:

  • 问题内容: 我会写 我还可以使用其他哪些过滤器? 我可以使用这样的东西吗? 问题答案: Docker v1.13.0支持以下条件: 或用于按某些值过滤图像: 参考文献 码头工人图像过滤 码头工人文档

  • 我试图添加一个过滤器,需要参数作为FilterConfig给出。我将它添加到WebApplication ation初始::onStartup(ServletContext容器)方法中,并且配置良好(init方法使用正确的FilterConfig调用)。 关键是我使用的是SpringSecurityWebSecurityConfigureAdapter,我的过滤器从未被调用过(不在过滤器链中)。如