Filter&Interceptor
目录1. Filter-过滤器
在 Spring Boot 中,过滤器(Filter)是用于在 Servlet 容器级别拦截和处理 HTTP 请求的组件。它们通常用于实现诸如身份验证、授权、日志记录、请求和响应的数据转换等功能。过滤器位于整个请求处理链的最前端,因此在请求到达 Spring 应用的任何其他组件之前,都会先经过过滤器处理。
2. Interceptor-拦截器
在Spring Boot中,拦截器分为两类: 一种是对请求进来的url进行拦截,HandlerInterceptor接口; 一种是对发送出去的请求进行拦截,ClientHttpRequestInterceptor。
比较
特征 | filter | interceptor |
---|---|---|
处理层级 | servlet容器级别 | Spring Mvc 层级 |
使用场景 | 通用功能:如身份验证、授权、日志记录 | 与spring框架相关的功能,如身份验证,请求参数处理 |
实现方式 | 回调函数 | 动态代理(反射) |
优势 | 处理任何 Web 应用的请求,更大的控制范围 | 紧密集成于 Spring MVC,可以访问 Spring 上下文和其他组件 |
实现接口 | javax.servlet.Filter | org.springframework.web.servlet.HandlerInterceptor 或 org.springframework.http.client.ClientHttpRequestInterceptor |
过滤器(Filter) :可以拿到原始的http请求,但是拿不到你请求的控制器和请求控制器中的方法的信息。
拦截器(Interceptor):可以拿到你请求的控制器和方法,却拿不到请求方法的参数。
切片(Aspect): 可以拿到方法的参数,但是却拿不到http请求和响应的对象
应用场景
拦截器应用场景
拦截器本质上是面向切面编程(AOP),符合横切关注点的功能都可以放在拦截器中来实现,主要的应用场景包括:
- 登录验证,判断用户是否登录。
- 权限验证,判断用户是否有权限访问资源,如校验token
- 日志记录,记录请求操作日志(用户ip,访问时间等),以便统计请求访问量。
- 处理cookie、本地化、国际化、主题等。
- 性能监控,监控请求处理时长等。
- 通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取Locale、Theme信息等,只要是多个处理器都需要的即可使用拦截器实现)
过滤器应用场景
1)过滤敏感词汇(防止sql注入)
2)设置字符编码
3)URL级别的权限访问控制
4)压缩响应信息
标签:拦截器,请求,Spring,Filter,过滤器,Interceptor From: https://www.cnblogs.com/TRY0929/p/17976649参考文献