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

快速了解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.kler.cn/a/388714.html

相关文章:

  • 2024 kali操作系统安装Docker步骤
  • GitLab实现 HTTP 访问和 SMTP 邮件发送
  • 华为大咖说 | 浅谈智能运维技术
  • 【时间之外】IT人求职和创业应知【34】-人和机器人,机器人更可靠
  • LLMs之PDF:zeroX(一款PDF到Markdown 的视觉模型转换工具)的简介、安装和使用方法、案例应用之详细攻略
  • sql server启用远程连接与修改默认端口
  • 文多多AIPPT
  • 操作系统复习指南:知识点整理与习题解析
  • 【手撕排序2】快速排序
  • 三菱MR-J4伺服绝对位置检测系统
  • 大语言模型LLMs在医学领域的最新进展总结
  • 【c++篇】:栈、队列、优先队列:容器世界里的秩序魔法 - stack,queue与priority_queue探秘
  • el-date-picker组件不能<%-- value-format=“yyyy-MM-dd HH:mm:ss“--%>,否则报错
  • 【课程总结】day34:多模态大模型之ViT模型、CLIP模型论文阅读理解
  • css:还是语法
  • MATLAB实现人工免疫网络算法(Artificial Immune Network Algorithm, AINA)
  • NeurIPS 2024预讲会 | 浙江大学软件学院专场直播
  • STM32-Flash闪存
  • TCP/IP协议及二层转发和三层路由的原理。
  • 第2章2.3立项【硬件产品立项的核心内容】
  • 聊一聊Spring中的自定义监听器
  • 漫谈分布式唯一ID
  • adb 命令查看设备存储占用情况
  • windowsC#-创建和引发异常
  • ORACLE的字符集
  • 选择适合你的报表工具,山海鲸报表与Tableau深度对比