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

快速了解SpringBoot 统一功能处理

拦截器

什么是拦截器:

 拦截器是Spring框架提供的重要功能之一,主要进行拦截用户请求,在指定方法前后,根据业务需求,执行预先设定的代码。
 也就是说,允许开发⼈员提前预定义⼀些逻辑,在⽤⼾的请求响应前后执⾏.也可以在⽤⼾请求前阻⽌ 其执⾏. 在拦截器当中,开发⼈员可以在应⽤程序中做⼀些通⽤性的操作,⽐如通过拦截器来拦截前端发来的 请求,判断Session中是否有登录⽤⼾的信息.如果有就可以放⾏,如果没有就进⾏拦截

⽐如我们去银⾏办理业务,在办理业务前后,就可以加⼀些拦截操作 办理业务之前,先取号,如果带⾝份证了就取号成功 业务办理结束,给业务办理⼈员的服务进⾏评价. 这些就是"拦截器"做的⼯作.

下⾯我们先来学习下拦截器的基本使⽤.

拦截器的使⽤步骤分为两步:

定义拦截器

注册配置拦截器 ⾃定义拦截器:实现HandlerInterceptor接⼝,并重写其所有⽅法

preHandle()⽅法:⽬标⽅法执⾏前执⾏.返回true:继续执⾏后续操作;返0回false:中断后续操作.

ostHandle()⽅法:⽬标⽅法执⾏后执⾏

afterCompletion()⽅法:视图渲染完毕后执⾏,最后执⾏(后端开发现在⼏乎不涉及视图,暂不了解)

注册配置拦截器:实现WebMvcConfigurer接⼝,并重写addInterceptors⽅法

启动服务,试试访问任意请求,观察后端⽇志

我们把拦截器中preHandle 方法的返回值改为false再观察运行结果

可以发现,拦截器拦截了请求,没有执行test方法

拦截器的具体实现逻辑

拦截器的⼊⻔程序完成之后,接下来我们来介绍拦截器的使⽤细节。拦截器的使⽤细节我们主要介绍 两个部分:

1. 拦截器的拦截路径配置

2. 拦截器实现原理

设置拦截器的拦截路径

拦截路径是指我们定义的这个拦截器,对哪些请求⽣效.

我们在注册配置拦截器的时候,通过 addPathPatterns() ⽅法指定要拦截哪些请求.也可以通过 excludePathPatterns() 指定不拦截哪些请求.

上述代码中,我们配置的是 /** ,表⽰拦截所有的请求.

⽐如⽤⼾登录校验,我们希望可以对除了登录之外所有的路径⽣效.

在拦截器中除了可以设置 /** 拦截所有资源外,还有⼀些常⻅拦截路径设置

拦截器执行流程

1. 添加拦截器后,执⾏Controller的⽅法之前,请求会先被拦截器拦截住.执⾏ preHandle() ⽅法, 这个⽅法需要返回⼀个布尔类型的值.如果返回true,就表⽰放⾏本次操作,继续访问controller中的 ⽅法.如果返回false,则不会放⾏(controller中的⽅法也不会执⾏).

2. controller当中的⽅法执⾏完毕后,再回过来执⾏ postHandle() 这个⽅法以及

afterCompletion() ⽅法,执⾏完毕之后,最终给浏览器响应数据.

时光在指尖溜走,一篇博客又到了尾声。在这里,我分享了自己的故事、想法与感悟,也希望能在茫茫网络世界中与每一位有缘读到的你产生一丝共鸣。感谢你花费时间停留在此,愿我们都能在生活的旅途中不断发现美好,期待下一次与你在文字里重逢呀。


http://www.mrgr.cn/news/70186.html

相关文章:

  • 代码修改材质参数
  • JavaScript高级程序设计基础(四)
  • 探索Python的HTTP利器:Requests库的神秘面纱
  • ssm103宠物领养系统+vue(论文+源码)_kaic
  • Java 实现自定义 LRU 缓存
  • Spring中的 bean 标签中的 factory-bean , factory-method
  • 集运行业破内卷:以差异化服务打造准时达品牌,重塑良性竞争生态
  • 双 11 数据可视化:Pyecharts 与 Matplotlib 绘制商品价格对比及动态饼图
  • 华大单片机跑历程IO口被写保护怎么解决
  • golang分布式缓存项目 Day3 HTTP服务端
  • 如何让 AI 更懂你:提示词的秘密
  • 海康Android面试题及参考答案
  • 基于SSM超市管理系统的设计与实现(源码+lw+调试)
  • 提取神经网络数学表达式
  • CST如何计算CMA中的模式加权系数MWC
  • 信息安全工程师题
  • 在不久的未来,AI大模型将会如何重塑软件开发流程,会对现在的工作产生什么样的冲击
  • 大模型分布式训练并行技术(五)混合并行
  • Python金融大数据分析概述
  • 量化交易系统开发-实时行情自动化交易-3.4.1.2.A股交易数据
  • BLIP/BLIP-2模型全解析
  • Java基础Day-Sixteen
  • 智能量化模型在大数据下的中阳策略发展
  • 测试中的精准校验:Levenshtein库的应用与实践
  • 第三百一十八节 Java线程教程 - Java线程优先级、Java守护线程
  • 鸿蒙NEXT开发笔记(十三)仿微信聊天App的BASE64转像素图