0
我有一个简单的过滤器:当调度程序为FORWARD并且调度程序为REQUEST时,如何应用Filter?
public class TestFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("before");
chain.doFilter(request, response);
System.out.println("after");
}
public void destroy() {
}
}
它在web.xml中的第一个过滤器,它有两个映射之一:
<filter-mapping>
<filter-name>cookie-test-filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
或
<filter-mapping>
<filter-name>cookie-test-filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
在这两种情况下,我看到输出:
before
before
after
after
(我也尝试INCLUDE
作为调度器,以确保一切正常 - 没有输出INCLUDE
)。
在这个过滤器后面有第三方过滤器和servlet,我想知道:他们应该怎么做才能使我的过滤器适用于上述两种情况?
您使用的是哪个应用程序服务器,包括其版本?在你的web.xml中,'web-app'元素的'version'属性的值是多少? – kschneid 2011-03-16 13:57:49
@kschneid:Apache Tomcat 6.0.30,web-app version =“2.4” – Roman 2011-03-16 14:25:00
您确定'web.xml'中只有一个过滤器映射吗?当你有两个相同的过滤器映射时,可能会发生这种情况。 – BalusC 2011-03-16 16:35:07