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