2012-03-21 3 views

ответ

10

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

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

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

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

Примеры, которые были определены для этой конструкции являются:

  • Authentication Фильтры
  • Протоколирование и аудит Фильтры
  • преобразования изображения Фильтры
  • сжатия данных Фильтры
  • Шифрование Фильтры
  • Tokenizing Фильтры
  • фильтров, которые вызывают событие доступа к ресурсам
  • XSL/T фильтрам
  • Mime-тип цепи фильтр

А ServletContextListener перехватывает при запуске WebAPP и завершении работы и позволяет выполнить код при запуске и/или неисправность. Смотрите также свою javadoc:

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

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

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

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

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

+0

Вы предоставили гораздо более полезную информацию, чем в java-документах. Так что спасибо. – BestPractices