【JavaEE进阶】——第八节.SpringBoot统一功能处理

news2024/11/25 16:01:32

作者简介:大家好,我是未央;

博客首页:未央.303

系列专栏:JavaEE进阶

每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!

文章目录

前言

一、统一用户的登录

1.1 Spring AOP 实现用户统一登录验证

1.2Spring拦截器实现统一用户的登录验证

1.3 实例演示(通过url访问controller层的方法)

二、统一异常处理

三、统一数据格式返回

3.1 统一数据返回格式的优点

3.2 统一数据返回格式的实现

四、总结

总结



 

前言


一、统一用户的登录

在学习Spring AOP之前,用户登录权限的验证是由每个方法中自己验证。

1.1 Spring AOP 实现用户统一登录验证

而学习了Spring AOP之后,可以通过Spring AOP的前置通知或环绕通知来实现,具体实现代码如下:

但如果在以上Spring AOP的切面中实现用户权限效验的功能,有以下两个问题: 

  • 1.没办法获取到HttpSession对象。
  • 2.我们要对一部分方法进行拦截,而另一部分方法不拦截,如注册方法和登录方法是不拦截的,这样的话排除方法的规则很难定义,甚至没办法定义。

要解决上述问题,就需要使用下边的Spring拦截器:

对于以上问题Spring中提供了具体的实现拦截器:HandlerInterceptor,拦截器的实现分为以下两个步骤:

1、创建自定义拦截器,实现 HandlerInterceptor 接口的perHandle(执行具体方法之前的预处理)方法。

2、将自定义拦截器加入 WebMvcConfiger的 addInterceptors方法中


1.2Spring拦截器实现统一用户的登录验证

1、自定义拦截器,实现HandlerInterceptor,重新preHandle(返回boolean方法)


2、配置拦截规则 


1.3 实例演示(通过url访问controller层的方法)


二、统一异常处理

为什么要对异常进行统一处理呢?

 上面我们的controller层的代码明显是有问题的,我们用浏览器访问一下该方法:

 可以看到,我们什么都没有返回给前端——》这个时候前端同学完全都不知道发生什么?

所有我们有必要对异常进行统一处理,以便不管怎样都有返回值。

 🔔我们的异常拦截是针对整个项目来进行异常拦截的,不用具体配置哪些类需要异常拦截 


三、统一数据格式返回

3.1 统一数据返回格式的优点

  • 方便前端程序员更好的接受和解析后端数据接口返回的数据。
  • 降低前端程序员和后端程序员的沟通成本,按照某个格式实现就可以了,因为所有接口都是这样返回的。
  • 有利于项目统一数据的维护和修改。
  • 有利于后端技术部门的统一规范的标准制定,不会出现稀奇古怪的返回内容。

3.2 统一数据返回格式的实现

统一的数据返回格式可以使用@ControllerAdvice+ResponseBodyAdvice的方式实现,具体实现代码如下:


四、总结

  • 统一用户登录权限的效验使用WebMvcConfigurer+HandlerInterceptor来实现
  • 统一异常处理使用@ControllerAdvice+@ExceptionHandler来实现
  • 统一返回值处理使用@ControllerAdvice+ResponseBodyAdvice来处理

总结

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/559558.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能公厕引导系统为未来共享公厕发展新趋势打造基础

智慧公厕管理系统可以提高公厕的服务质量和管理效率,实现公厕的自动化管理和数据分析。该系统可以广泛应用于各类公共场所,如商场、公园、机场、医院等。 一、智慧公厕引导系统案例展示 智慧公厕管理系统还可以实现公厕的人口统计和安全监控等功能。服务…

【今天聊聊AI】AI歌手会取代流行歌手吗

一、聊聊AI歌手发展现状 近日,“AI孙燕姿”火遍全网,AI孙燕姿翻唱林俊杰的《她说》、周董的《爱在西元前》、赵雷的《成都》等等歌曲让网友听了直呼:“听了一晚上,出不去了。” 现在AI歌手技术到底已经发展到了怎样的地步&#xf…

MySQL千万级数据优化方案

简介 ↓↓↓处理千万级数据的MySQL数据库,可以采取以下优化措施↓↓↓ 使用索引:确保对经常用于查询和排序的字段添加索引。不要在查询中使用SELECT *,而是明确指定需要的字段。分区表:如果表中的数据按照时间或其他维度进行划分&…

26岁机电专业,零基础转行学云计算,求推荐靠谱机构!

26岁机电专业,零基础转行学云计算,求推荐靠谱机构! 关于26岁零基础转行云计算,求机构推荐这类问题。建议可以先把自己的具体需求整理清楚,例如自身的学习能力情况、需要学习的专业的技术内容、你想要通过培训学习达到什…

承接vue2->vue3的一些变动

1.Vue3简介 2020年9月18日,Vue.js发布3.0版本,代号:One Piece(海贼王)耗时2年多、2600次提交、30个RFC、600次PR、99位贡献者github上的tags地址:https://github.com/vuejs/vue-next/releases/tag/v3.0.0 …

NetApp FAS 混合闪存阵列协助您建构简单易用、聪明智慧、值得信赖的储存基础架构

NetApp FAS 混合闪存阵列 主要优势 1、简单易用:节省您宝贵的时间、金钱和人力 •几分钟内完成储存资源配置。 •以获证实的效率技术降低成本。 •可在单一系统上管理档案与区块资料。 2、聪明智慧:灵活因应瞬息万变的业务需求 •以不中断营运的方式扩…

javascript中的错误类型

javascript 中的错误类型: SyntaxErrorTypeErrorReferenceErrorRangeErrorURLErrorError SyntaxError 语法错误 // 当您在编写一个函数时忘记了括号 ,)来括起您的代码,您将收到一个SyntaxError错误 function say(text) {return text; }say(shark;// …

[论文阅读72]Parameter-Efficient Transfer Learning for NLP

1. 基本信息 题目论文作者与单位来源年份Parameter-Efficient Transfer Learning for NLPNeil Houlsby等Google Research,雅盖隆大学-波兰PMLR2019 Houlsby N, Giurgiu A, Jastrzebski S, et al. Parameter-efficient transfer learning for NLP[C]//Internationa…

代码随想录训练营Day49| 121. 买卖股票的最佳时机 122.买卖股票的最佳时机II

目录 学习目标 学习内容 121. 买卖股票的最佳时机 122.买卖股票的最佳时机II 学习目标 121. 买卖股票的最佳时机 122.买卖股票的最佳时机II 学习内容 121. 买卖股票的最佳时机 121. 买卖股票的最佳时机 - 力扣(LeetCode)https://leetcode.cn/prob…

chatgpt赋能Python-python_ip地址转换

Python IP地址转换:原理、常用函数和示例 在网络编程中,IP地址是一个很重要的概念。Python提供了很多IP地址转换函数,这篇文章将讲解其原理、常用函数和示例。 IP地址转换原理 IP地址是由32位表示的二进制数,它是计算机在网络上…

socket概述 python中如何使用TCP/UDP协议实现通信-教程

很多编程语言中,都使用scoket套接字实现网络通信。 Socket是对TCP/IP协议的封装,Socket本身就是一个调用接口(API),方便程序员用Socket使用TCP/IP协议簇,实现网络通信。 不同编程语言,shiyong…

基于ROS2的costmap中Obstacle Layer中对障碍物信息的增加与删除机制的方案调研。

文章目录 1.背景2.目标3. 障碍物信息添加方式发送数据的数据结构与接收数据的数据结构 4. 障碍物清理机制4.1 可调参数4.2 优化光追算法4.3 障碍物跟踪 1.背景 基于costmap地图,使用navigation导航时,会出现由于激光雷达/图像测距的局限性, …

RocketMQ 在小米的多场景灾备实践案例

作者:邓志文、王帆 01 为什么要容灾? 在小米内部,我们使用 RocketMQ 来为各种在线业务提供消息队列服务,比如商城订单、短信通知甚至用来收集 IoT 设备的上报数据,可以说 RocketMQ 的可用性就是这些在线服务的生命线…

我写了个操作系统,却被别人给骂了!

前言 哈喽,小伙伴们好,我是子牙。是一个擅长深入研究Windows内核、Linux内核、Hotspot源码的资深程序员,之前是JVM专家,手写过JVM。所以做老师后,第一个打造的课程便是《手写JVM》小班, 一经推出就受到了学…

我的苹果手机的越狱之旅

最近因为业务需要,需要一台越狱手机;就把测试机6plus拿来做越狱使用,在此之前先大致说明一下越狱的原理、应用、流程以及可能存在的问题: 越狱是指通过一些技术手段,使iOS设备可以访问到iOS系统的全部控制权&#xff0…

抛弃Vuex,使用Pinia

Pinia 符合直觉的 Vue.js 状态管理库 文章目录 Pinia 符合直觉的 Vue.js 状态管理库1.简介2.为什么要使用Pinia3.安装3.1 挂载pinia 4.创建一个store容器4.1 Option 参数4.2 Setup 参数 5.三个重要概念5.1 State5.2 Getter**5.3 Action** 6.购物车实例6.1 商品列表组件 1.简介 …

【Python-Django】如何在一个项目中创建多个app模块

django开发案例:a​​​​​【Django】开发日报_1_Day:用户管理系统案例-创建项目_django 开发用户管理系统_代码骑士的博客-CSDN博客 前面做过的管理系统项目功能比较单一,只用一个模块就能解决问题。如果想创建多个不同的模块的话&#xf…

Nodejs之HTTP模块

目录 前言一,创建HTTP模块1.1 基本使用1.2 注意事项 二,查看报文2.1 浏览器查看HTTP报文2.2 利用request获取HTTP请求报文2.2.1 获取请求行和请求头 2.2.2 获取请求路径2.2.3 获取查询字符串 三,跟请求报文相关的练习四,设置响应报…

聊天机器人开发实战--(微信小程序+SpringCloud+Pytorch+Flask)【完整版】

文章目录 前言架构小程序端管理端运维端 交互聊天页面聊天发送流程历史聊天记录个人中心 总结 前言 没想到从五一之后,到现在鸽了那么久。没办法,实话实说,确实忙,五一期间就没怎么休息,开局第一周,准备IE…