Подтвердить что ты не робот

Выполняется ли doFilter() до или после работы Servlet?

Объект javax.servlet.Filter может использоваться как для аутентификации (где Filter должен улавливать запрос до того, как любая работа сервлета должна и для перевода XSLT (где сервлет должен быть полностью закончен, генерируя контент). Когда он действительно выполняется?

Я знаю, что это зависит от реализации (в веб-контейнере), но это, похоже, проблема, которая должна быть решена всеми из них.

Может быть, есть опция конфигурации, установленная где-то для каждой регистрации фильтра в веб-контейнере?

Дополнительно:

Кроме того, что определяет порядок выполнения фильтра? Почему FooFilter запускается до BarFilter?

4b9b3361

Ответ 1

Цепочка фильтров по существу обертывает вызов сервлета. Цепь будет обрабатывать все ссылки до тех пор, пока она не ударит по "дну", а затем разрешит запуск сервлета и затем вернет цепочку в обратном порядке. Например, если у вас есть новый "примерный фильтр", ваш метод doFilter() может выглядеть следующим образом:

public void doFilter(ServletRequest request,
      ServletResponse response, FilterChain chain) 
      throws IOException, ServletException {
// do pre-servlet work here
chain.doFilter(request, response);
// do post servlet work here

}

Ответ 3

@Rich: Выполняется ли doFilter() до или после выполнения Servlets?

Фильтр - это программа, которая запускается на сервере перед страницей сервлета или JSP с с которым он связан.

Ответ 4

В соответствии с фильтром спецификации servlet2.3 выполняется согласно конфигурации web.xml последовательности отображения фильтра Ref- http://www.programering.com/a/MTMyADOwATI.html