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

Springboot统一功能处理

前言

拦截器

每个接口都要弄强制登录就很麻烦
所以我们来统一处理
在这里插入图片描述
如果包冲突的话,就要排包
直接就是在pom的右边,排除红色的就可以了

入门

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第一个是请求前处理,就是到达controller(目标方法)前
第二个是目标方法后执行
第三个基本不用
然后就是重写方法

在这里插入图片描述
返回true就是放行,返回false就是拦截

在这里插入图片描述
然后要把这个拦截器交给项目

在这里插入图片描述
这个就是注入拦截器,然后设置拦截路径,这个就是所有的请求响应都拦截
然后就是启动,随便访问一个请求

在这里插入图片描述
这样发现真的就拦截了
这里可以不用new出来,也可以@Autowired出拦截器

在这里插入图片描述
在这里插入图片描述

现在开始修改项目了

在这里插入图片描述
如何告诉前端呢----》response

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这个就说明已经拦截了

然后先登录就没事了,就不会拦截了
在这里插入图片描述
在这里插入图片描述

这样也是可以的
在这里插入图片描述

因为这是第三方的,所以不一定被spring管理的,所以还是new吧

在这里插入图片描述
在resouces目录底下添加这个,那么启动的时候就是这个了

在这里插入图片描述
在这里插入图片描述
在第三方包上打断点,要先下载资源才可以断点

适配器

适配器就是一个转换的东西
比如把110V电压转换为220V
这样就可以适用很多东西了

Sil4j也是一个适配器
现在我们来实现一下

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
这个就是适配器了,现在看客户端如何去调用了

在这里插入图片描述
在这里插入图片描述

我们这个没有直接调用sprint方法,但是依然可以打印日志

有适配器的原因就是一开始没有设计好,所以用适配器来补偿

在这里插入图片描述
所以spring也是基于适配器实现的,因为原来用的是servlet

统一数据返回格式

统一数据返回格式也是在拦截器实现的,不然每个都写太麻烦了

在这里插入图片描述
然后就是继承,实现两个方法

然后加上注解@ControllerAdvice

第一个是是否要对返回结果进行重写
第二个是如何进行重写

body就是目标方法返回的结果,就是controller返回的结果
supports的两个参数就是对哪些controller进行处理的意思
直接返回true就是对所有的controller都进行处理

在这里插入图片描述
在这里插入图片描述

这样还真的返回了result结果了

在这里插入图片描述
如果原来是result类型,就不用分装了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
但是有些时候controller返回string类型的时候,就会报错,我的没有报错,我们可以这样处理
就不会报错了
发生的原因是类型不匹配

统一异常处理

在这里插入图片描述
在这里插入图片描述
这些都会发生异常

在这里插入图片描述

在这里插入图片描述

还有就是我们可以对异常进行分类

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样状态码就变了

@ControllerAdvice就是这两种特殊bean

改图书管理系统代码

在这里插入图片描述
看的出来我们的项目出问题了
在这里插入图片描述

主要是统一结果返回把结果改变了
所以出错了

因为前端接受的时候我们没有看做为result返回,所以有错,改一下就可以了

在这里插入图片描述
如果不行就看看是不是缓存的问题

在这里插入图片描述
注意
在这里插入图片描述
如果controller返回的是String类型
但是前端接收到的还是String类型
为什么呢
在这里插入图片描述
在这里插入图片描述
objectMapper.writeValueAsString因为这个方法返回的是String,是json字符串—》不能获取里面的数据
spring会对我们的字符串不进行处理,返回是字符串就是字符串,返回是类的话,就会变成json
所以第一可以在前端处理
在这里插入图片描述
第一个是把字符串转为对象
第二个是把对象转为字符串
现在我们来后端处理
因为这是我们后端的问题

在这里插入图片描述
我们在controller这里设置一下就可以了

总结

相关文章:

  • [VMware]卸载VMware虚拟机和Linux系统ubuntu(自记录版)
  • NTS库学习,找bug中......
  • docker高级
  • AI agent(以AutoGPT为例)和AI Workflow 区别
  • 【PyTorch】2024保姆级安装教程-Python-(CPU+GPU详细完整版)-
  • leetcode刷题-动态规划08
  • MYSQL数据备份与恢复(mysqldump)
  • 青少年编程与数学 02-010 C++程序设计基础 11课题、程序结构
  • 8_安装Thrift
  • jsonp
  • 采样算法二:去噪扩散隐式模型(DDIM)采样算法详解教程
  • SpringBoot-配置优先级
  • vue中computed方法使用;computed返回函数
  • (新版本onenet)stm32+esp8266/01s mqtt连接onenet上报温湿度和远程控制(含小程序)
  • CST的UAV无人机RCS --- A求解器 - 一维距离像(HRRP)和正弦图(Sinogram)
  • 01背包之---应用篇
  • JS 获取星期几
  • 基于AI人工智能UI自动化测试工具:Midscene
  • A*算法超级详细讲解
  • 文档识别-C#中英文文档识别接口-PDF文件内容识别API
  • 安亭做网站公司/百度搜索网页版
  • 做ppt如何从网站插入视频/网络广告营销的概念
  • 有没有专做推广小说的网站/seo黑帽教学网
  • 网站怎么做要多少钱/超级优化大师
  • 长安营销服务协同管理平台网站/最新新闻热点素材
  • wordpress主题知言/seo下拉优化