Java web.xml<;过滤器映射>;使用时不工作<;servlet名称>;

Java web.xml<;过滤器映射>;使用时不工作<;servlet名称>;,java,spring,servlet-filters,web.xml,Java,Spring,Servlet Filters,Web.xml,我有一个web.xml,其中包含以下内容: <filter> <description>CASRebroadcastFilter</description> <filter-name>CASRebroadcastFilter</filter-name> <filter-class>edu.utah.acs.tek.filters.CASSingleSignOutRebroadcast</fil

我有一个web.xml,其中包含以下内容:

 <filter>
    <description>CASRebroadcastFilter</description>
    <filter-name>CASRebroadcastFilter</filter-name>
    <filter-class>edu.utah.acs.tek.filters.CASSingleSignOutRebroadcast</filter-class>
</filter>

(... more CAS-filters)

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

<filter-mapping>
    <filter-name>CASRebroadcastFilter</filter-name>
    <url-pattern>*.do</url-pattern>        
</filter-mapping>

(... more CAS-filter-mappings and the rest of my web.xml...)

CASRebroadcastFilter
CASRebroadcastFilter
edu.犹他州acs.tek.filters.CassingleSignOut转播
(…更多CAS筛选器)
调度员
org.springframework.web.servlet.DispatcherServlet
1.
调度员
*.做
CASRebroadcastFilter
*.做
(…更多CAS筛选器映射和my web.xml的其余部分…)
环境:Spring 2.5,Glassfish 2.1

这正如预期的那样工作——也就是说,CASRebroadcastFilter拦截并处理适当的调用,并允许其他所有调用通过

但如果我将过滤器映射更改为:

<filter-mapping>
    <filter-name>CASRebroadcastFilter</filter-name>
    <servlet-name>dispatcher</servlet-name>
</filter-mapping>

CASRebroadcastFilter
调度员
它不起作用。我所说的“不起作用”的确切意思是:所有东西都会通过CASRebroadcastFilter,就好像它不在那里一样,没有一个错误或其他东西被输出

这就好像
标记在我的环境的某些方面的上下文中不起作用


是否有其他人看到了这一点或知道这可能是什么原因?

可能是因为您在使用servlet名称设置过滤器时更改了过滤器的顺序。servlet容器将按照在web.xml中配置的顺序运行过滤器,首先是使用url模式的过滤器,然后是使用servlet名称的过滤器。因此,使用url模式的过滤器总是在使用servlet名称的过滤器之前执行

所以,通过将其更改为使用servlet名称,可以有效地将其放在使用url模式的所有过滤器之后