Кто возьмет метод обслуживания в фильтрах в Java? - PullRequest
0 голосов
/ 06 января 2010

Фильтры похожи на сервлеты, но управляются веб-контейнером, но в сервлетах есть метод service (), но в фильтрах нет метода, называемого service. Существует только три метода init (), doFilter () и destroy (). Кто-нибудь может уточнить это?

Ответы [ 3 ]

3 голосов
/ 06 января 2010

Метод doFilter () вызывается всякий раз, когда фильтр обрабатывает запрос.

Простой пример выглядит следующим образом:

public void doFilter(ServletRequest request,
  ServletResponse response, FilterChain chain) 
  throws IOException, ServletException {
  // .. pre filter logic
  chain.doFilter(request, response);
  // .. post filter logic
}

Фильтр позволяет вам решить, следует ли продолжить обработку запроса, т.е. будут ли последующие фильтры обрабатывать этот запрос и, наконец, сервлет в конце. Вы можете не вызывать chain.doFilter (хорошим примером этого будет, если вы используете фильтр для аутентификации). См. это руководство для получения дополнительной информации.

2 голосов
/ 06 января 2010

Фильтр выполняет роль, отличную от сервлета. Поэтому у него нет тех же методов. Роль фильтра состоит в том, чтобы фильтровать, и это то, что делает метод doFilter().

Ознакомьтесь с главой "Фильтрация запросов и ответов" Учебного руководства по Java EE.

0 голосов
/ 06 января 2010

Для получения дополнительной информации, в дополнение к другим ответам, см. Стр. 49 спецификации сервлетов Java 2.4 в https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_JCP-Site/en_US/-/USD/ViewFilteredProducts-SimpleBundleDownload

...