当前位置: 首页 > article >正文

【编程基础知识】Spring过滤器、拦截器、AOP区别

一、过滤器:

过滤器拦截的是URL(HTTP请求,一次请求包含了请求和响应)
Spring中自定义过滤器(Filter)一般只有一个方法,返回值是void,当请求到达web容器时,会探测当前请求地址是否配置有过滤器,有则调用该过滤器的方法(可能会有多个过滤器),然后才调用真实的业务逻辑,至此过滤器任务完成。过滤器并没有定义业务逻辑执行前、后等,仅仅是请求到达就执行。
特别注意:过滤器方法的入参有request 、response、 FilterChain,其中FilterChain是过滤器链,使用比较简单.而request,response则关联到请求流程,因此可以对请求参数做过滤和修改,同时FilterChain过滤链执行完,并且完成业务流程后,会返回到过滤器,此时也可对请求的返回数据做处理。

二、拦截器:

拦截器拦截的是URL(HTTP请求,一次请求包含了请求和响应)
拦截器有三个方法,相对于过滤器更加细致,有被拦截逻辑执行前、后等。Spring中拦截器有三个方法:preHandle,postHandle,afterCompletion。分别表示如下
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o)表示被拦截的URL对应的方法执行前的自定义处理
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView)表示此时还未将modelAndView进行渲染,被拦截的URL对应的方法执行后的自定义处理,。
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e)表示此时modelAndView已被渲染,执行拦截器的自定义处理

三、AOP:

AOP(面向切面):面向切面拦截的是类的元数据(包、类、方法名、参数等)
相对于拦截器更加细致,而且非常灵活,拦截器只能针对URL做拦截,而AOP针对具体的代码,能够实现更加复杂的业务逻辑。具体类型参照其他博客。

四、总结

三者使用场景:三者功能类似,但各有优势,从过滤器–》拦截器–》切面,拦截规则越来越细致,执行顺序依次是过滤器、拦截器、切面。


http://www.kler.cn/a/298682.html

相关文章:

  • 头歌实训数据结构与算法 - 字符串匹配(第2关:实现KMP字符串匹配)
  • 小波滤波器处理一维信号-附Matlab源代码
  • Spring Boot 中的 classpath详解
  • C语言面的向对象编程(OOP)
  • 2501d,d的匿名构
  • 走进深圳华为总部参观研学
  • 《JavaScript 中数据类型判断、转换技巧及应用实例》
  • GitHub每日最火火火项目(9.10)
  • 最新版 | SpringBoot3如何自定义starter(面试常考)
  • Java数组的定义及遍历
  • 【局域网投屏】sunshine和moonlight投屏/屏幕共享/扩展屏
  • LabVIEW软件,如何检测连接到的设备?
  • 全频段覆盖的卫星通信模块-灵活应对多应用场景
  • Swift 中的函数:定义、使用与实践指南
  • 《ChatGPT:强大的人工智能聊天机器人》
  • vue axios 如何读取项目下的json文件
  • 云计算41——部署project_exam_system项目(续)
  • 正点原子阿尔法ARM开发板-IMX6ULL(四)——汇编LED驱动实验-下
  • 超微小间距COB大尺寸LED智能会议一体机玩转高清视频会议显示市场
  • 1-14 画框画线画圆 opencv树莓派4B 入门系列笔记
  • 建投数据获批安全生产许可证
  • 通过API方式访问llama3
  • 学习使用双指针
  • 浙大数据结构:04-树6 Complete Binary Search Tree
  • 具有RC反馈电路的正弦波振荡器(文氏桥振荡器+相移振荡器+双T振荡器)
  • 基于SSM架构的农产品朔源系统