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