chain.doFilter(req,res);
Мы использовали это в программе сервлетов. Я хочу знать, что такое использование метода doFilter()
в сервлете?
Кроме того, что такое использование концепции фильтра и цепи в сервлетах Java?
Каково использование фильтра и цепи в сервлете?
Ответ 1
Сервлет-фильтры - это реализация цепочки ответственности
Дело в том, что каждый фильтр остается "впереди" и "позади" каждого сервлета, к которому он привязан. Поэтому, если у вас есть фильтр вокруг сервлета, у вас будет:
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(..)
, и в этом случае сервлет никогда не будет вызываться. Это полезно для целей безопасности - например, вы можете проверить, есть ли у пользователя вход в систему.
Ответ 2
Что такое фильтры?
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
.
Ответ 3
Фильтры должны дополнять сервлеты. Для использования вы должны прочитать это, The Essentials of Filters. Фильтры реализованы с использованием Цепь ответственности Шаблон GoF.