+1 работал для меня в аналогичных обстоятельствах
я есть простой фильтр:
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
).
После этого фильтра есть сторонние фильтры и сервлеты, и мне интересно: что они должны делать, чтобы мой фильтр применялся в обоих описанных случаях?