Spring过滤器和拦截器的区别

📑前言

本文主要Spring过滤器和拦截器的区别的问题,如果有什么需要改进的地方还请大佬指出⛺️

🎬作者简介:大家好,我是青衿🥇
☁️博客首页:CSDN主页放风讲故事
🌄每日一句:努力一点,优秀一点

请求的执行流程

过滤器(Filter):

过滤器是Servlet规范中定义的一种组件,可以用于在请求进入Web应用程序之前或响应离开Web应用程序之前对请求进行预处理或后处理。过滤器的应用方式是通过在web.xml或Servlet注解中配置。

执行流程:

请求进入Web容器 → 过滤器预处理请求 → 请求传递给下一个过滤器或目标Servlet

拦截器

拦截器是Spring框架提供的一种组件,可以用于在请求进入控制器(Controller)之前或渲染视图之前执行自定义逻辑。拦截器的应用方式是通过实现HandlerInterceptor。

执行流程:

请求进入DispatcherServlet → 拦截器预处理请求 → 请求传递给下一个拦截器或控制器 → 控制器处理请求 → 渲染视图 → 拦截器后处理响应。

过滤器和拦截器的区别:

 原理实现上:过滤器基于回调实现,而拦截器基于动态代理。

 控制粒度上:过滤器和拦截器都能够实现对请求的拦截功能,但是在拦截的粒度上有较大的差异,拦截器对访问控制的粒度更细。

 使用场景上:拦截器往往用于权限检查、日志记录等,过滤器主要用于过滤请求中无效参数,安全校验。

 原理实现上:过滤器基于回调实现,而拦截器基于动态代理。

 控制粒度上:过滤器和拦截器都能够实现对请求的拦截功能,但是在拦截的粒度上有较大的差异,拦截器对访问控制的粒度更细。

 使用场景上:拦截器往往用于权限检查、日志记录等,过滤器主要用于过滤请求中无效参数,安全校验。

📑文章末尾

相关推荐
我的div丢了肿么办3 分钟前
gin框架设置/获取cookie和多个二级域名共享cookie
后端·google
张宏同学5 分钟前
springboot微服务提高数据查询效率的新操作-先查主、后异步合并
后端
暧暧内含光8 分钟前
Redis Cluster 原理与跨槽(CROSSSLOT)踩坑总结
后端
花间相见8 分钟前
【计算基础|MySQL17】三大日志:undo / redo / binlog
数据库·后端·面试
众链网络11 分钟前
年卡跨淡旺季的有效期模型:不可用日期、次数与顺延规则
java·前端·数据库
用户59476144259512 分钟前
Gitea Push Mirror 镜像同步卡住:磁盘写满导致 LevelDB 队列异常的排查与恢复
后端
文丑颜不良啊13 分钟前
LeetCode926~950题目解析
java·leetcode
shark_chili18 分钟前
从需求到架构:我如何用 AI 写好design.md
后端
今天的砖头有点烫手啊18 分钟前
Java 对象内存布局:压缩指针、对齐填充与 JOL 实测
java·jvm
夕颜11119 分钟前
一次跨 Mac 的单站点登录态迁移记录:从「能打开」到「重启后仍可用」
后端