В чем разница между фильтром сервлета и прослушивателем контекста сервлета? - PullRequest
6 голосов
/ 22 марта 2012

В чем различия между использованием фильтра сервлетов и прослушивателя контекста сервлетов?

Когда бы вы использовали один или другой?

1 Ответ

10 голосов
/ 22 марта 2012

A Filter перехватывает HTTP-запросы, соответствующие его шаблону URL, и позволяет вам изменять их.См. Также javadoc :

Фильтр - это объект, который выполняет задачи фильтрации либо по запросу к ресурсу (сервлету, либо по статическому содержимому), либо по ответу отресурс или оба.

Фильтры выполняют фильтрацию по методу doFilter.Каждый Filter имеет доступ к FilterConfig объекту, из которого он может получить свои параметры инициализации, и ссылку на ServletContext, которую он может использовать, например, для загрузки ресурсов, необходимых для фильтрации задач.

Фильтры настраиваются в дескрипторе развертывания веб-приложения.

Для этого проекта определены следующие примеры:

  • Фильтры проверки подлинности
  • Фильтры ведения журнала и аудита
  • Фильтры преобразования изображений
  • Фильтры сжатия данных
  • Фильтры шифрования
  • Фильтры токенизации
  • Фильтры, запускающие события доступа к ресурсам
  • Цепной фильтр MIME-типа

A ServletContextListener перехватывает при запуске и завершении работы веб-приложения и позволяет выполнитьнекоторый код при запуске и / или выключении.См. Также его javadoc :

Интерфейс для получения событий уведомлений об ServletContext изменениях жизненного цикла.

Для получения этих событий уведомлений класс реализации долженбыть либо объявленным в дескрипторе развертывания веб-приложения, помеченном WebListener, либо зарегистрированным с помощью одного из addListener методов, определенных в ServletContext.

Реализации этого интерфейса вызываются по их contextInitialized(javax.servlet.ServletContextEvent) метод в том порядке, в котором они были объявлены, и метод их contextDestroyed(javax.servlet.ServletContextEvent) в обратном порядке.

Когда использовать тот или иной, теперь должно быть очевидно.Используйте Filter, если вы хотите перехватывать запросы HTTP, обрабатывая определенный шаблон URL, потому что вы хотите проверить / изменить запрос / ответ HTTP.Используйте ServletContextListener, если вы хотите перехватывать при запуске и / или завершении работы веб-приложения.

Пожалуйста, знайте, где найти Javadocs и как их интерпретировать.Они содержат все ответы на такие тривиальные вопросы.

...