Какая польза от фильтра и цепочки в сервлете?

chain.doFilter(req,res);
Мы использовали это в программе сервлета. Я хочу знать, как используется метод doFilter() в сервлете? Также в чем заключается использование концепции фильтра и цепочки в сервлетах Java?


person Vinoth Kumar    schedule 08.11.2010    source источник


Ответы (3)


Фильтры сервлетов - это реализация схемы цепочки ответственности

Дело в том, что каждый фильтр остается «впереди» и «позади» каждого сервлета, которому он сопоставлен. Итак, если у вас есть фильтр вокруг сервлета, у вас будет:

void doFilter(..) { 
    // do stuff before servlet gets called

    // invoke the servlet, or any other filters mapped to the target servlet
    chain.doFilter(..);

    // do stuff after the servlet finishes
}

У вас также есть возможность не вызывать chain.doFilter(..), и в этом случае сервлет никогда не будет вызван. Это полезно в целях безопасности - например, вы можете проверить, вошел ли в систему пользователь.

person Bozho    schedule 08.11.2010
comment
Во время написания ответа я получил сообщение о том, что кто-то его уже предоставил. Но я все еще продолжал работать над своим мнением, думая, что провайдер, должно быть, пропустил упоминание шаблона и ссылки на него. Но, отправив свою, я обнаружил, что был совершенно неправ. +1 - person Adeel Ansari; 08.11.2010
comment
@Adeel Ansari, в любом случае, вы предоставили ссылку, которую я не сделал - на основную информацию о фильтрах, так что +1 там тоже. - person Bozho; 08.11.2010

Что такое фильтры?

Filters используются для intercept and process requests перед отправкой сервлетам (в случае запроса).

ИЛИ

Filters используются для intercept and process a response перед отправкой сервлетом обратно клиенту.

введите описание изображения здесь

Почему они используются?

-Фильтры могут выполнять проверки безопасности.

-Сжать поток ответов.

-Создайте другой ответ.

Что делает doFilter ()?

doFilter() называется every time контейнер определяет, что фильтр должен быть применен к странице.

Требуется three arguments

-> ServletRequest

-> ServlerResponse

-> FilterChain

Все functionality that your filter supposed to do реализовано внутри метода doFilter().

Что такое FilterChain?

Ваш filters do not know anything about the other filters and servlet. FilterChain знает order of the invocation of filters и driven по filter elements, которые вы определили в DD.

person Prateek Joshi    schedule 11.11.2015

Фильтры дополняют сервлеты. Для использования вам следует прочитать это Основы фильтров. Фильтры реализуются с использованием шаблона GoF Chain of Responsibility.

person Adeel Ansari    schedule 08.11.2010