我有一个简单的过滤器:
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,我想知道:他们应该怎样做才能在两种情况下应用我的过滤器?
答案 0 :(得分:1)
尝试使用单个<filter-mapping>
条目同时使用请求和 FORWARD 调度程序
示例强>
<filter-mapping>
<filter-name>cookie-test-filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
希望这能解决你遇到的问题。