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