Spring HandlerInterceptor против фильтров сервлетов



HandlerInterceptorS весной теперь можно настроить для вызова только по определенным URL-адресам с помощью <mvc:interceptors>.



фильтры сервлета могут достигнуть такой же функциональности (вносить в журнал, обеспеченность etc). Так Какой же из них следует использовать?



Я думаю, что с ракетами-перехватчиками, можно использовать ModelAndView объект для работы с моделями, поэтому он имеет больше преимуществ. Может ли кто-нибудь нарисовать сценарии, в которых фильтры или перехватчики имеют преимущества перед другими?

689   3  

3 ответов:

на org.springframework.web.servlet.HanderInterceptor интерфейс документация сам имеет два абзаца, которые обсуждают этот вопрос:

HandlerInterceptor в основном похож на фильтр сервлета 2.3, но в отличие от последнего он просто позволяет пользовательскую предварительную обработку с помощью возможность запрета выполнения самого обработчика, а также таможенный пост-обработки. Фильтры более мощные, например они разрешить обмен объектами запроса и ответа, которые передаются вниз цепь. Обратите внимание, что фильтр настраивается в web.xml, a HandlerInterceptor в контексте приложения.

в качестве основного руководства, мелкозернистые задачи предварительной обработки, связанные с обработчиком являются ли кандидаты на реализацию HandlerInterceptor, особенно факторизованный общий код обработчика и проверки авторизации. На другой стороны, фильтр хорошо подходит для запроса и просмотра обработка контента, например, составные формы и сжатие GZIP. Этот обычно показывает, когда один необходимо сопоставить фильтр с определенным контентом типов (например, изображения), или на все запросы.

перехватчики Spring Handler позволяют подключаться к большему количеству частей жизненного цикла запроса и получать доступ к дополнительной информации в процессе. Они часто более тесно связаны с циклом запроса/ответа, чем фильтры.

фильтры более подходят при обработке вашего запроса / ответа как системы черного ящика. Они будут работать независимо от того, как реализован сервлет.

Если вы используете Spring MVC, нет причин писать новую логику в качестве фильтра сервлетов. Все фильтры могут сделать, перехватчики могут сделать более легко и более элегантно.

Помните также, что фильтры сервлетов существуют гораздо дольше, чем перехватчики.

с пружиной перехватчик, у вас есть доступ к обработчику, который может быть полезен. Кроме того, с помощью перехватчика Spring у вас есть доступ к выполнению логики до визуализации представления и после визуализации представления.

Comments

    Ничего не найдено.