快捷搜索:  汽车  科技

filter过滤器如何设置拦截,拦截器Interceptor

filter过滤器如何设置拦截,拦截器InterceptorHandlerInterceptors vs. Filters in Spring MVC:https://www.baeldung.com/spring-mvc-handlerinterceptor-vs-filter

对Filter、Interceptor的使用场景有点模糊,在遇到一个场景时,不确定是该使用Filter,还是使用Interceptor会更好一点。有时间了,归纳总结了一下,就有了现在这篇文章。

在网上找到了一张图,直观、明了地向我们展示了在处理、响应请求的过程中Filter与Interceptor的执行位置。

filter过滤器如何设置拦截,拦截器Interceptor(1)

Filter与Interceptor的区别
  1. 与Filter相比,Interceptor能够深入到方法前后、异常抛出前后等,即Interceptor的使用具有更大的弹性,允许用户介入请求的生命周期,在请求过程中获取信息。Interceptor与请求更加耦合。
  2. Filter是在Servlet规范中定义的,是Servlet容器支持的。而Interceptor是在Spring容器内的,是Spring容器支持的。
  3. Filter不能使用Spring容器资源。而Interceptor是一个Spring组件,归Spring管理,配置在Spring文件中,因此能使用Spring里的任何资源、对象,例如Service对象、数据源、事务管理等。
  4. Filter总是优先于Interceptor执行。
应用场景

Filter应用场景:

  • 执行安全检查
  • 格式化请求头、请求主体
  • 记录请求日志
  • 根据请求内容授权或限制用户访问
  • 根据请求频率限制用户访问
  • 压缩响应内容
  • 创建、追加或修改响应内容
参考

Spring Interceptor vs Filter 拦截器和过滤器区别:https://einverne.github.io/post/2017/08/spring-interceptor-vs-filter.html

HandlerInterceptors vs. Filters in Spring MVC:https://www.baeldung.com/spring-mvc-handlerinterceptor-vs-filter

猜您喜欢: