SpringMVC中@ControllerAdvice 注解的三种使用场景

news2025/2/2 0:58:47

全局异常处理

/**
	可以定义多个方法,不同的方法处理不同的异常。如专门处理空指针的方法,专门处理数组越界……
*/
@ControllerAdvice
public class MyGlobalExceptionHandler{

	@ExceptionHandler(Exception.class)//指定异常处理类型
	public ModelAndView customException(Exception e){
		ModelAndView mv = new ModelAndView();
		mv.addObject("message",e.getMessage());
		mv.setViewName("myerror");
		return mv;
	}
}
/**
	处理无效参数的异常
*/
@ControllerAdvice
public class ErrorHandler{
	
	private final Logger log = LoggerFactory.getLogger(getClass());

	@ExceptionHandler(IllegalArgumentException.class)
	@ResponseStatus(HttpStatus.BAD_REQUEST)
	public void processValidationError(IllegalArgumentException e) {
		log.info("Returning HTTP 400 Bad Request", e);
	}
}

全局数据绑定

@ControllerAdvice
public class MyGlobalExceptionHandler{

	@ModelAttribute(name = "md") //该方法返回的key就是变量名,value就是返回值
	public Map<String,Object> mydata(){
		HashMap<String,Object> map = new HashMap<>();
		map.put("age",99);
		map.put("gender","男");
		return map;
	}
}
/**
	获取上面定义的全局数据
*/
@RestController
public class HelloController{
	
	@GetMapping("/hello")
	public String hello(Model model){
		Map<String,Object> map = model.asMap();
		System.out.println(map);
		int i = 1 / 0;
		return "hello controller advice";
	}
}

全局数据预处理

public class Book{
	private String name;
	private Long price;;
	//get、set省略
}

public class Author{
	private String name;
	private Integer age;
	//get、set省略
}
/**
	给接口变量取别名,区分两个实体中的相同属性名
*/
@PostMapping("/book")
public void addBook(@ModelAttribute("b") Book book,@ModelAttribute("a") Author author){

	System.out.println(book);
	System.out.println(author);
}
//请求数据处理
@InitBinder("b")
public void b(WebDataBinder binder){//注解表示该方法用来处理和Book和相关的参数,在方法中,给参数添加一个 b 前缀,即请求参数要有b前缀.
	binder.setFieldDefaultPrefix("b.");
}
@InitBinder("a")
public void a(WebDataBinder binder){
	binder.setFieldDefaultPrefix("a.");
}

发送请求
在这里插入图片描述

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

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

相关文章

一、基础-4.MySQL启动和客户端连接

一、启动 方法一&#xff1a; 1、winR&#xff0c;输入services.msc&#xff0c;按回车 2、找到MySQL&#xff0c;右键-启动/停止 MySQL安装后&#xff0c;默认已启动。 方法二、 1、winR&#xff0c;输入cmd&#xff0c;打开命令行 2、输入启动与停止命令 二、客户端连接 …

工业手持终端在工业现场的实际应用

在工业现场&#xff0c;RFID手持终端设备扮演着关键的角色。本文将介绍RFID手持终端设备在工业现场的功能和优势&#xff0c;并探讨其应用场景和最佳实践。同时&#xff0c;提供选择和使用RFID手持终端设备时的注意事项&#xff0c;以帮助企业实现有效的应用策略。 RFID手持终…

uniapp学习之【从一个小程序跳转到另一个小程序】

uni.navigateToMiniProgram({appId: ,path: pages/index/index?id123,extraData: {data1: test},success(res) {// 打开成功} })

【深度学习】日常笔记12

当⾯对更多的特征⽽样本不⾜时&#xff0c;线性模型往往会过拟合。 线性模型没有考虑到特征之间的 交互作⽤。对于每个特征&#xff0c;线性模型必须指定正的或负的权重&#xff0c;⽽忽略其他特征。与线性模型不同&#xff0c;神经⽹络并不局限于单独查看每个特征&#xff0c…

408 计算机考研-001-C语言-C语言基础-考研必学

408 计算机考研-001-C语言-C语言基础-考研必学 本文目录 408 计算机考研-001-C语言-C语言基础-考研必学考研C语言应掌握的内容考研真题2022 年考研真题第 1 题2022 年考研真题第 41 题2021 年考研真题第 42 题 一、打印&#xff1a;Hello, World二、数据类型1. 基本数据类型 三…

项目bug——编码问题报错(java.lang.IllegalStateException)

项目场景&#xff1a; 项目拉下后报错 问题描述 2023-07-17 14:26:07.596 ERROR 14300 — [ main] o.s.boot.SpringApplication : Application run failed java.lang.IllegalStateException: Failed to load property source from ‘file:/Users/wang/IdeaProjects/ms-famil…

ADS交叉耦合振荡器仿真

ADS交叉耦合振荡器仿真 摘要参考视频书籍 环境过程结果分析频率计算瞬态仿真差分电压输出查看相位噪声分析 摘要 本文主要参考视频中如何使用进行ADS交叉耦合振荡器仿真和分析&#xff0c;由于视频中有诸多错误和视频清晰度较低&#xff0c;虽然视频博主及时改正&#xff0c;为…

家用洗地机好用吗、智能洗地机品牌排行榜

在现如今&#xff0c;洗地机不算是什么稀奇的东西了。正相反&#xff0c;越来越多的家庭在清洁的时候都会使用洗地机。因为洗地机相比传统的清洁方式&#xff0c;更加便捷高效&#xff0c;清洁使用的时候简直就是事半功倍&#xff01;那么今天小编就为给大家盘点几款非常适合家…

3Ds max入门教程:快捷键命令和鼠标热键大全

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 起初&#xff0c;您可能需要花一些时间查找热键&#xff0c;但是一旦您使用它们记住了它们&#xff0c;它们将使您以至少两倍的速度产生结果。例如&#xff0c;当您进行建模&#xff08;移动、缩放、旋转等…

霍纳法则----快速入门,贼好理解

别问我&#xff0c;为什么写这个&#xff0c;我可能一辈子都在开发中用不到&#xff0c;纯粹应付八股。 公式我不知道咋打&#xff0c;就网上复制了个图片。 这是什么&#xff1f;是一个含x的多项式&#xff0c;他有很多次方。假设让你写代码&#xff0c;x的输入项&#xff0c;…

一文带你了解动态内存管理

目录 动态内存存在的意义 动态内存函数的介绍 malloc和free calloc realloc 常见的动态内存错误 对NULL指针解引用操作 对动态开辟的空间的越界访问 对非动态开辟内存使用free释放 使用free释放一块动态开辟内存的一部分 对同一块内存多次释放 动态开辟内存忘记释放…

时序预测 | MATLAB实现NARX非线性自回归外生模型房价预测

时序预测 | MATLAB实现NARX非线性自回归外生模型房价预测 目录 时序预测 | MATLAB实现NARX非线性自回归外生模型房价预测效果一览基本介绍研究内容程序设计参考资料效果一览 基本介绍 时序预测 | MATLAB实现NARX非线性自回归外生模型房价预测 研究内容 NARX(Nonlinear AutoReg…

抖音账号矩阵系统源码-开源部署开发者分享

抖音账号矩阵系统&#xff0c;短视频账号矩阵系统源码&#xff0c; 短视频矩阵是一种常见的视频编码标准&#xff0c;它通过将视频分成多个小块并对每个小块进行压缩来实现高效的视频传输。短视频多账号矩阵系统&#xff0c;通过多账号一键授权管理的方式&#xff0c;为运营人员…

90%的程序员都不知道Mysql索引下推

索引下推(Index Condition Pushdown) ICP 是Mysql5.6之后新增的功能&#xff0c;主要的核心点就在于把数据筛选的过程放在了存储引擎层去处理&#xff0c;而不是像之前一样放到Server层去做过滤。 虽然这是一个比较简单的概念&#xff0c;但是可能很多不细心的同学对于索引下推…

无需点跟踪,克服DragGAN缺陷!中科大联合上海AI Lab发布FreeDrag:可稳定拖动语义内容

FreeDrag无需点跟踪&#xff0c;即可实现更高质量的拖动编辑效果&#xff01; 近日&#xff0c;在AIGC的广阔世界里出现了一个火热的图像编辑方法—即通过在给定图像上通过把语义内容从原位置&#xff08;handle point&#xff09;拖动到目标位置&#xff08;target point&…

12宫格 抽奖逻辑实现【直接可用】

先看视频&#xff0c;比较卡&#xff0c;毕竟是视频转gif导出的 /*** Author : 马占柱* E-mail : mazhanzhu_3351163.com* Time : 2023/5/24 17:46* Desc : 12宫格 盲盒抽奖*/ public class NineLuckPan extends View {private Paint mPaint;private ArrayList<RectF>…

linux下安装jdk

1、创建目录 cd /opt mkdir /opt/jdk 2、将jdk放入/opt/jdk中 3、 解压目录 cd /opt/jdk tar -zxvf jdk-8u261-linux-x64.tar.gz 4、拷贝目录 mkdir /usr/local/java mv /opt/jdk/jdk1.8.0_261 /usr/local/java 5、配置环境变量的配置文件 vim /etc/profile 在配置文件中添加…

PyCharm 常用快捷键

目录 1、代码编辑快捷键 2、搜索/替换快捷键 3、代码运行快捷键 4、代码调试快捷键 5、应用搜索快捷键 6、代码重构快捷键 7、动态模块快捷键 8、导航快捷键 9、通用快捷键 1、代码编辑快捷键 序号快捷键作用1CTRLALTSPACE快速导入任意类2CTRLSHIFTENTER代码补全3SHI…

基于STM32LVGL8.2保姆级教程③代码框架移植

这里推荐去看正点原子的视频 对照教程一步步的移植即可 需要一点时间 点击传送门直达 如果你觉得太繁琐 也可以找我直接获取移植好的框架(免费分享) 移植完毕的工程截图~ 注意事项 这两个文件的内容默认是使用宏定义关闭的 需要你手动开启(我的代码已经完成了这一步)

自动上香木鱼念珠颂钵功德流量主小程序开发

自动上香木鱼念珠颂钵功德流量主小程序开发 自动上香木鱼念珠颂钵功德流量主小程序的功能包括&#xff1a; 自动上香&#xff1a;用户可以设置定时任务&#xff0c;小程序会在指定时间自动上香&#xff0c;无需用户手动操作。木鱼念珠&#xff1a;小程序提供虚拟的木鱼念珠&a…