Выбор ответа Middle Spring MVC и REST обновлено
Фильтр или интерсептор
Вопрос
Чем servlet-фильтр отличается от HandlerInterceptor?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Фильтр работает до DispatcherServlet, интерсептор знает обработчик. Фильтры часть спецификации сервлетов: оборачивают весь запрос, в том числе статику и ошибки, поэтому там живёт Spring Security, CORS, логирование.
Варианты ответа
- Интерсептор выполняется раньше фильтра и может отклонить запрос
- Фильтры работают только с GET-запросами, а интерсепторы со всеми
- Интерсептор может менять тело ответа после сериализации, а фильтр нет
- Фильтр работает до DispatcherServlet, интерсептор знает обработчикправильный ответ
Разбор
Фильтры часть спецификации сервлетов: оборачивают весь запрос, в том числе статику и ошибки, поэтому там живёт Spring Security, CORS, логирование. Интерсептор вызывается DispatcherServlet-ом вокруг найденного HandlerMethod и знает его аннотации. Порядок обратный: сначала фильтры. Тело ответа после записи надёжнее менять как раз фильтром с обёрткой ответа, у интерсептора postHandle для REST вызывается уже после записи тела.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.