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.
