Разница между Фильтром и прослушивателем в сервлете (Java EE)

StackOverflow https://stackoverflow.com/questions/4720942

Вопрос

В сервлете есть функции фильтров и прослушивателей.Я хочу знать точную разницу между Фильтром и Прослушивателем.

Это было полезно?

Решение

Filter Servlet используется для мониторинга запроса и ответа от клиента на сервлет, или для изменения запроса и ответа, или для аудита и журнала.

Слушатель Сервиса используется для прослушивания событий в веб -контейнерах, например, когда вы создаете сеанс, или размещаете атрибут в сеансе или если вы пассивируете и активируете в другом контейнере, чтобы подписаться на эти события, вы можете настроить прослушивание в web.xml, Например HttpSessionListener.

Другие советы

Фильтры используются для запросов Pre и после процесса. Посмотрите на javax.servlet.Filter В вашем Tomcat/Jboss/Другой контейнер Javadoc.

Там, где слушатели похожи на триггеры, которые могут быть прикреплены к событиям на вашем сервере приложений (давайте используем здесь термин контейнер здесь). С слушателями вы можете отслеживать на уровне приложения, на уровне сеанса, изменения жизненного цикла, изменения атрибутов и т. Д. Реализованные интерфейсы javax.servlet.Listener интерфейс.

На основании ответов @FNT ниже, позвольте мне попробовать еще немного уточнить. Слушатели предназначены для изменений в жизненном цикле, без необходимости приходить запрос клиента. Таким образом, для одного запроса клиента может произойти гораздо больше событий жизненного цикла может произойти до того, как запрос будет расположен. Пример: вы хотите записать все сеансы этого тайм -аута. Обратите внимание, что Sesiontimeout - это событие жизненного цикла, которое может произойти, не заставляя пользователя что -либо делать. Для такого сценария слушатель будет уместным.

К вопросу о регистрации, когда прибывает запрос. Не существует прямого отображения нового запроса на событие эквивалентного слушателя (прочтение события LifeCycle). И, следовательно, для каждого входящего запроса, если вы хотите что -то войти, фильтровать, на мой взгляд, правильная вещь для использования.

Этот материал из Oracle должен быть в состоянии уточнить еще немногоФильтры и слушатели

Hth

Фильтр похож на фильтр для воды, где будут отфильтрованы входящие (запрос) и исходящие (ответ) значения.

Слушатель это как прослушивание (триггер) - всякий раз, когда это необходимо, я буду выполнять.

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

Listeners vs Filters

Сопоставление фильтров с типами диспетчеров.Ссылка немного устарела - она не включает сервлет 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/

Хотя вы можете изменить текущий объект события в прослушивателе, вы не можете остановить выполнение текущего обработчика событий в слушателе. Вы также не можете очистить очередь событий изнутри слушателя. Помимо наложенных различий в возможностях, они также предназначены для разных целей. Слушатели, как правило, сосредотачиваются на взаимодействии между обработчиком событий и моделью, в то время как фильтры, как правило, фокусируются на взаимодействии между обработчиком событий и контроллером.

Источник : веб -

Вы можете легко иметь грубую идею с английским значением этих двух. Фильтр должен фильтровать контент/ресурс, который выходит/выходит из сервлета. С другой стороны, слушатель есть, чтобы сделать некоторые связанные вещи, когда что -то случится с веб -приложением (прослушивание).

Фильтр: Фильтр просто фильтрует ответ и запрос, поступающий от клиентов в сервлет.

Слушатель: похож на спусковой крючок, когда происходит любой спусковой крючок, он предпринимает действие.

Короче говоря,

Фильтр предназначен для сервлета, перехватывая запросы и ответы.

Слушатель предназначен для веб-приложения, выполняя важные задачи на событиях на уровне контекста, уровня сеанса и т. Д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top