В сервлете есть функция «Фильтры и прослушиватели». Я хочу знать точную разницу между Filter и Listener.Разница между фильтром и приемником в сервлете (Java EE)
ответ
Servlet фильтр используется для контроля запроса и ответа от клиента к сервлету, или изменить запрос и ответ, или для проверки и регистрации.
Слушатель сервлета используется для прослушивания событий в веб-контейнерах, например, при создании сеанса или размещении атрибута в сеансе или при пассиве и активации в другом контейнере, чтобы подписаться на эти события, вы можете настроить слушателя в web.xml
, например HttpSessionListener
.
Вы можете легко иметь приблизительное представление с английским значением этих двух. Филер должен фильтровать контент/ресурс, который приходит/выходит из сервлета. С другой стороны, Listener есть, чтобы делать некоторые связанные вещи, когда что-то случается с веб-приложением (прослушивание).
Фильтры используются для запросов до и после обработки. Посмотрите на javax.servlet.Filter
в вашем tomcat/jboss/другом контейнере javadoc.
Где прослушиватели похожи на триггеры, которые могут быть присоединены к событиям в вашем сервере приложений (давайте использовать здесь контейнер термина). С помощью слушателей вы можете отслеживать изменения уровня приложения, уровня сеанса, изменения жизненного цикла, изменения атрибутов и т. Д. Реализованные интерфейсы - это интерфейс javax.servlet.Listener
.
Основываясь на ответах @fnt ниже, позвольте мне попытаться разъяснить еще кое-что. Слушатели ориентированы на изменения жизненного цикла, не требуя прихода клиента. Таким образом, для одного запроса клиента может произойти еще много событий жизненного цикла до того, как запрос будет удален. Пример: Вы хотите зарегистрировать все сеансы с этим таймаутом. Обратите внимание, что SesionTimeout - это событие жизненного цикла, которое может случиться без того, чтобы пользователь ничего не делал. Для такого сценария слушатель будет подходящим.
К вопросу регистрации в момент поступления запроса. Нет прямого сопоставления нового запроса на событие эквивалентного слушателя (чтение события жизненного цикла). И, следовательно, для каждого входящего запроса, если вы хотите что-то регистрировать, Filter, на мой взгляд, является правильным решением.
Этот материал из Oracle должен иметь возможность уточнить некоторые более Filters and Listeners
HTH
В то время как вы можете изменить текущий объект события в качестве слушателя, вы не может остановить выполнение текущего обработчика событий в слушатель. Вы также не можете очистить очередь событий от прослушивателя. Помимо наложенные различия в возможностях, они также предназначены для целых . Слушатели, как правило, фокусируются на взаимодействии между обработчиком событий и моделью, в то время как фильтры, как правило, фокусируются на взаимодействии между обработчиком событий и контроллером .
Источник: web
Текст из Java EE 6
Фильтр
Фильтр является объектом, которые преобразуют запрос и ответ (заголовок, а также содержание).
Слушатели
Вы можете отслеживать и реагировать на события в жизненном цикле сервлета, определив слушатель объекты, чьи методы получить вызываются, когда происходят события жизненного цикла.
Фильтр - это как фильтр воды, в котором будут отфильтрованы входящие (запросы) и исходящие (отклики) значения.
Слушатель походит на прослушивание (триггер) - при необходимости, я буду исполнен.
Фильтр: Фильтр просто фильтрует ответ и запрашивает от клиентов до сервлета.
Слушатель: как триггер, когда происходит какой-либо триггер, он принимает действие.
Короче говоря,
фильтр для сервлетов, перехватывая запросы и ответы.
Слушатель для веб-приложения, делая важные задачи по событиям в контексте уровня, сеансового уровня и т.д.
Одним из важных отличий часто забывают: в то время как слушатели получают вызвали для фактического физического запроса, фильтры работают с диспетчеры контейнеров сервлетов. Для одного вызова прослушивателя могут быть несколько фильтров/сервлетов.
Mapping filters dispatcher types. Ссылка немного устарела - она не включает диспетчер сервлетов 3.0 Async
. Можно также указать диспетчерских типы с @WebFilter
аннотацию:
import javax.servlet.DispatcherType;
import javax.servlet.annotation.WebFilter;
@WebFilter(servletNames = { "My Servlet" },
dispatcherTypes = { DispatcherType.REQUEST, DispatcherType.FORWARD })
После прочтения всех ответов и блоги это то, что я получил
Фильтр
Фильтр представляет собой объект, который динамически перехватывает запросы и ответы на преобразование или использование информации, содержащейся в запросах или ответах .
Фильтры обычно сами не создают ответы, но вместо этого предоставляют универсальные функции, которые могут быть «прикреплены» к любому типу сервлетов или JSP-страницы .
Фильтр запускается перед визуальным просмотром, но после обработки контроллера отклик.
Фильтр используется в веб-слое только так, как он определен в web.xml.
Фильтры более подходят при обработке вашего запроса/ответа как системы черного ящика . Они будут работать независимо от того, как установлен сервлет .
Фильтры используются для выполнения задач фильтрации, таких как логин аутентификация, проверки входящих запросов от веба-страниц, преобразования, регистрации, сжатия, шифрования и дешифрования, входные проверки и т.д.
Сервлета фильтр используются в веб-слое, вы не можете использовать его вне контекста сети.
Более подробную информацию о фильтре http://array151.com/blog/servlet-filter/
Слушатель
Servlet Слушатель используется для прослушивания событий в веб-контейнере, , например, при создании сеанса или поместить атрибут в сеансе или если вы пассивируете и активируете в другом контейнере, чтобы подписаться на , эти события вы можете настроить прослушиватель в web.xml, например, HttpSessionListener.
Слушателей получить срабатывают для фактического физического запроса, который может быть присоединен к событиям в вашем приложении сервера .СА слушателей, вы можете отслеживать на уровень приложений, на уровень сеанса, изменения жизненного цикла, атрибут изменений и т.д.
Вы можете контролировать и реагировать на события в жизненном цикле сервлетов на , определяющие объекты-слушатели, методы которых вызывается при возникновении жизненных циклов .
Более подробно: http://array151.com/blog/servlet-listener/
и здесь разница http://array151.com/blog/difference-between-servlet-filter-and-servlet-listener/
- 1. разница между загрузочным приемником и широковещательным приемником
- 2. Разница между Java EE и Java Web
- 3. Разница между Java EE 7 и Java EE 6
- 4. Разница между поиском и фильтром
- 5. Разница между фильтром и уменьшением?
- 6. В чем разница между фильтром намерения в активности и широковещательным приемником?
- 7. В чем разница между фильтром Authorize Action и фильтром авторизации?
- 8. В чем разница между фильтром (| x |) и фильтром (| & x |)?
- 9. Разница между поиском и фильтром в jQuery
- 10. Разница между Java SE app и Java EE app?
- 11. В чем разница между Java EE и Asp.net
- 12. Разница между статической переменной в ActionScript и Java EE
- 13. В чем разница между дистрибутивами Eclipse «Java EE» и «rcp»?
- 14. В чем разница между Java EE и J2EE?
- 15. Что такое точная разница между средним фильтром и медианным фильтром
- 16. Разница между картой и фильтром на поток коллекции Java
- 17. Разница между перехватчиком и фильтром весной MVC
- 18. Разница между каждым фильтром и javascript?
- 19. Разница между фильтром Джанго() и получить() методы
- 20. Разница между трубчатым фильтром и цепью ответственности
- 21. Разница между CSS-селектором и фильтром jQuery?
- 22. Разница между подмножеством и фильтром от dplyr
- 23. Разница между asp.net mvc Selector и фильтром?
- 24. Разница между фильтром и пониманием списка
- 25. В чем разница между широковещательным приемником, AIDL и Messenger?
- 26. В чем разница между рабочим процессом SharePoint и приемником событий?
- 27. Перейти: в чем разница между приемником метода и параметром?
- 28. Разница между JavaServer Faces и «Java EE JSF»
- 29. Разница между Интернетом и настольным Java-сервером приложений EE
- 30. Eclipse, Java EE: Разница между R и M1 пакетов
И не стоит ничего, что слушатели реализуют javax.servlet.ServletContextListener, а фильтры реализуют javax.servlet.Filter – dade
Можете ли вы рассказать мне об этом? 'ServletRequestListener' слушает' ServletRequestEvent', который является событием, инициированным для каждого входящего запроса. Если я хочу регистрировать пользовательский агент для каждого запроса в своем веб-приложении, должен ли я использовать этот прослушиватель или фильтр? – arun
@BalusC Определяет слушателя является обязательным? Это дает мне ошибку «Нет WebApplicationContext: no ContextLoaderListener зарегистрирован?», Если я не определяю слушателя в приложении Spring. –