Разница между Фильтром и прослушивателем в сервлете (Java EE)
-
12-10-2019 - |
Вопрос
В сервлете есть функции фильтров и прослушивателей.Я хочу знать точную разницу между Фильтром и Прослушивателем.
Решение
Filter Servlet используется для мониторинга запроса и ответа от клиента на сервлет, или для изменения запроса и ответа, или для аудита и журнала.
Слушатель Сервиса используется для прослушивания событий в веб -контейнерах, например, когда вы создаете сеанс, или размещаете атрибут в сеансе или если вы пассивируете и активируете в другом контейнере, чтобы подписаться на эти события, вы можете настроить прослушивание в web.xml
, Например HttpSessionListener
.
Другие советы
Фильтры используются для запросов Pre и после процесса. Посмотрите на javax.servlet.Filter
В вашем Tomcat/Jboss/Другой контейнер Javadoc.
Там, где слушатели похожи на триггеры, которые могут быть прикреплены к событиям на вашем сервере приложений (давайте используем здесь термин контейнер здесь). С слушателями вы можете отслеживать на уровне приложения, на уровне сеанса, изменения жизненного цикла, изменения атрибутов и т. Д. Реализованные интерфейсы javax.servlet.Listener
интерфейс.
На основании ответов @FNT ниже, позвольте мне попробовать еще немного уточнить. Слушатели предназначены для изменений в жизненном цикле, без необходимости приходить запрос клиента. Таким образом, для одного запроса клиента может произойти гораздо больше событий жизненного цикла может произойти до того, как запрос будет расположен. Пример: вы хотите записать все сеансы этого тайм -аута. Обратите внимание, что Sesiontimeout - это событие жизненного цикла, которое может произойти, не заставляя пользователя что -либо делать. Для такого сценария слушатель будет уместным.
К вопросу о регистрации, когда прибывает запрос. Не существует прямого отображения нового запроса на событие эквивалентного слушателя (прочтение события LifeCycle). И, следовательно, для каждого входящего запроса, если вы хотите что -то войти, фильтровать, на мой взгляд, правильная вещь для использования.
Этот материал из Oracle должен быть в состоянии уточнить еще немногоФильтры и слушатели
Hth
Фильтр похож на фильтр для воды, где будут отфильтрованы входящие (запрос) и исходящие (ответ) значения.
Слушатель это как прослушивание (триггер) - всякий раз, когда это необходимо, я буду выполнять.
Одно важное отличие часто упускается из виду:в то время как прослушиватели запускаются для фактического физического запроса, фильтры работают с отправками контейнера сервлета.Для одного вызова прослушивателя может быть несколько вызовов фильтров / сервлетов.
Сопоставление фильтров с типами диспетчеров.Ссылка немного устарела - она не включает сервлет 3.0 Async
тип диспетчера.Можно также указать типы диспетчеров с помощью @WebFilter
аннотация:
import javax.servlet.DispatcherType;
import javax.servlet.annotation.WebFilter;
@WebFilter(servletNames = { "My Servlet" },
dispatcherTypes = { DispatcherType.REQUEST, DispatcherType.FORWARD })
Текст из Java EE 6
Фильтр
Фильтр - это объект, который преобразует запрос и ответ (заголовок, а также контент).
Слушатели
Вы можете отслеживать и реагировать на события в жизненном цикле сервлета, определяя объекты слушателя, методы которых вызываются, когда происходят события жизненного цикла.
После прочтения всех ответов и блогов это то, что я получил
Фильтр
Фильтр - это объект, который динамически перехватывает запросы и ответы на преобразование или использует информацию, содержащуюся в запросах или ответах.
Фильтры, как правило, сами не создают ответы, а вместо этого предоставляют универсальные функции, которые могут быть «прикреплены» к любому типу сервлета или страниц JSP.
Фильтр запускается перед просмотром рендеринга, но после отклика контроллера.
Фильтр используется только в веб -уровне, как это определено в web.xml.
Фильтры более подходят при рассмотрении вашего запроса/ответа как системы черного ящика. Они будут работать независимо от того, как внедрен сервлета.
Фильтры используются для выполнения задач фильтрации, таких как аутентификация входа в систему, аудит входящих запросов на веб -страницах, преобразование, ведение журнала, сжатие, шифрование и дешифрование, проверка ввода и т. Д.
Фильтр сервлета используется только на веб -уровне, вы не можете использовать его вне веб -контекста.
Для получения более подробной информации о фильтре http://array151.com/blog/servlet-filter/
Слушатель
Слушатель Сервиса используется для прослушивания событий в веб -контейнере, например, когда вы создаете сеанс или размещаете атрибут в сеансе или если вы пассивируете и активируете в другом контейнере, чтобы подписаться на эти события, вы можете настроить прослушивание в web.xml Например, httpsessionListener.
Слушатели получают запуска для фактического физического запроса, который можно прикрепить к событиям на вашем сервере приложений. С прослушивателями вы можете отслеживать уровень приложения, уровня сеанса, изменения жизненного цикла, изменения атрибутов и т. Д.
Вы можете отслеживать и реагировать на события в жизненном цикле сервлета, определяя объекты слушателя, методы которых вызываются, когда происходят события жизненного цикла.
Для получения более подробной информации: http://array151.com/blog/servlet-listener/
и вот разница http://array151.com/blog/difference-between-servlet-filter-and-servlet-listener/
Хотя вы можете изменить текущий объект события в прослушивателе, вы не можете остановить выполнение текущего обработчика событий в слушателе. Вы также не можете очистить очередь событий изнутри слушателя. Помимо наложенных различий в возможностях, они также предназначены для разных целей. Слушатели, как правило, сосредотачиваются на взаимодействии между обработчиком событий и моделью, в то время как фильтры, как правило, фокусируются на взаимодействии между обработчиком событий и контроллером.
Источник : веб -
Вы можете легко иметь грубую идею с английским значением этих двух. Фильтр должен фильтровать контент/ресурс, который выходит/выходит из сервлета. С другой стороны, слушатель есть, чтобы сделать некоторые связанные вещи, когда что -то случится с веб -приложением (прослушивание).
Фильтр: Фильтр просто фильтрует ответ и запрос, поступающий от клиентов в сервлет.
Слушатель: похож на спусковой крючок, когда происходит любой спусковой крючок, он предпринимает действие.
Короче говоря,
Фильтр предназначен для сервлета, перехватывая запросы и ответы.
Слушатель предназначен для веб-приложения, выполняя важные задачи на событиях на уровне контекста, уровня сеанса и т. Д.