Gymterview
middle

Когда стоит использовать фильтры сервлетов, а когда слушателей

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

Критерий Фильтр Слушатель
Когда использовать Нужно обработать/модифицировать запрос или ответ Нужно отреагировать на событие (создание сессии, старт приложения)
Примеры Аутентификация, логирование, компрессия, CORS Инициализация ресурсов при старте, подсчёт активных сессий
Доступ к данным Полный доступ к request и response Доступ через объект события
Цепочка Выстраиваются в цепочку (FilterChain) Работают независимо друг от друга

Практическое правило: если задача связана с преобразованием данных на пути запрос-ответ — используйте фильтр. Если задача связана с реакцией на системное событие (старт приложения, создание сессии) — используйте слушатель.

На собеседовании: достаточно назвать простую эвристику: фильтр — для данных, слушатель — для событий. Частая ошибка — пытаться использовать фильтр для инициализации ресурсов при старте приложения вместо ServletContextListener.