chain.doFilter(req,res);
Мы использовали это в программе сервлета. Я хочу знать, как используется метод doFilter()
в сервлете? Также в чем заключается использование концепции фильтра и цепочки в сервлетах Java?
Какая польза от фильтра и цепочки в сервлете?
Ответы (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(..)
, и в этом случае сервлет никогда не будет вызван. Это полезно в целях безопасности - например, вы можете проверить, вошел ли в систему пользователь.
Что такое фильтры?
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
.
Фильтры дополняют сервлеты. Для использования вам следует прочитать это Основы фильтров. Фильтры реализуются с использованием шаблона GoF Chain of Responsibility.