Фильтры используются для запросов до и после обработки.Посмотрите на javax.servlet.Filter
в вашем javadoc контейнера tomcat / jboss / other.
Где слушатели похожи на триггеры, которые могут быть присоединены к событиям на вашем сервере приложений (давайте используем здесь термин контейнер).С помощью слушателей вы можете отслеживать изменения уровня приложения, уровня сеанса, изменения жизненного цикла, изменения атрибутов и т. Д. Реализованные интерфейсы: javax.servlet.Listener
interface.
Основываясь на ответах @fnt ниже, позвольте мне попробоватьуточнить еще немного.Слушатели нацелены на изменения жизненного цикла, без необходимости получения запроса клиента. Таким образом, для одного запроса клиента может произойти намного больше событий жизненного цикла, прежде чем запрос будет удален.Пример: вы хотите регистрировать все сеансы, которые были прерваны.Обратите внимание, что SesionTimeout - это событие жизненного цикла, которое может происходить, если пользователь ничего не сделает.Для такого сценария подойдет слушатель.
К вопросу о регистрации при поступлении запроса.Нет прямого сопоставления нового запроса с эквивалентным событием слушателя (событие чтения жизненного цикла).И, следовательно, для каждого входящего запроса, если вы хотите что-то зарегистрировать, фильтр, по моему мнению, является правильным выбором.
Этот материал от Oracle должен быть в состоянии уточнить еще Фильтры и слушатели
HTH