SpringBoot 统一功能处理

1. 拦截器

在完善图书管理系统的时候,完成了强制登录的功能,后端程序根据Session来判断用户是否登录,但是实现方法是比较麻烦的

  • 需要修改每个接口的处理逻辑
  • 需要修改每个接口的返回结果
  • 接口定义修改,前端代码也需要跟着修改

1.1 拦截器快速入门

什么事拦截器

拦截器是Spring框架提供的核心功能之一,主要用来拦截用户的请求,在指定方法前后,根据业务需要执行预先设定的代码

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

1.定义拦截器

2.注册配置拦截器

定义拦截器

实现HandlerInterceptor接口,并重写其所有方法

注册配置拦截器

实现WebMvcConfigurer接口,并重写addInterceptors方法

1.2 拦截器详解

拦截器的使用细节主要介绍两个部分:

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

  2. 拦截器实现原理

1.2.1 拦截路径

拦截路径指定义的这个拦截器对那些请求生效

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

1.2.2 拦截器执行流程

1.3 DisPatcherServlet 源码分析

在 Tomcat 启动之后,有一个核心类DispatchServlet,它来控制程序的执行顺序

所有的请求都会先进到 DispatchServlet,执行doDispatch 调度方法,如果有拦截器,会先执行拦截器 preHandle() 方法的代码,如果preHandle返回true,句许访问controller中的方法,controller当中的方法执行完毕后,再回来执行 postHandle() 和 afterCompletion() ,返回给DispatchServlet,最终给浏览器响应数据

2. 统一数据返回格式

2.1 快速入门

执行t3的时候出错了,只有返回结果是String类型时才有这种错误发生

解决方法:

优点:

  1. 方便前端程序员更好的接受和解析后端数据接口返回的数据

  2. 降低前端程序员和后端程序员的沟通成本,按照某个格式实现就可以了

  3. 有利于项目统一数据的修改和维护

  4. 有利于后端技术部门的统一规范的标准制定

3. 统一异常处理


相关推荐
程序猿DD13 分钟前
OctaFuse Gateway 2.16.0:新增 ElevenLabs 的支持、厂商原生端点重构、后台管理优化
后端
掘金者阿豪14 分钟前
列存储适不适合订单报表?从一条慢 SQL 聊聊金仓 KES 的使用边界
后端
武子康36 分钟前
150毫秒和2400毫秒:同一 Agent 任务的两种延迟
人工智能·后端·agent
海边捡石子1 小时前
FreeSWITCH 入门:把电话系统接入语音客服机器人
人工智能·后端
武子康1 小时前
Agent 偏好记忆怎样确认写入:范围、版本与撤销的一个最小例
人工智能·后端·agent
Bazingga2 小时前
Java16 record 完整拆解——语法、语义、限制、反射
java·后端
对象存储与RustFS2 小时前
网盘限速逼你开会员?用 RustFS 自己搭一个不限速的“私人网盘
服务器·后端·docker
Thneonl2 小时前
你写的 NetworkPolicy 可能一条都没生效
后端·架构
王中阳Go2 小时前
质保期第 90 天我翻了一遍日志目录:交付后真正会坏的 3 处
人工智能·后端·agent
卷无止境2 小时前
一人公司的全栈选型指南:让 AI Agent 写得快,也让生意跑得稳
后端·python