Springboot——参数校验
springboot参数校验注解
在controller层需要对前端传来的参数进行校验
校验简单数据类型
使用springboot自带的validation工具可以从后端对前端传来的数据进行校验
使用方法:
- 创建项目时引入I/O场景下的validation起步依赖
- 使用maven创建项目时,引入起步依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
- 添加注解
@Validated控制器开启参数校验功能 - 在参数前添加校验标准的注解,判断参数
| 注解 | 作用 |
|---|---|
@NotNull |
判断包装类是否为null |
@NotBlank |
判断字符串是否为null或者是空串(去掉首位空格) |
@NotEmpety |
判断集合是否为空 |
@Length |
判断字符的长度(最大或最小) |
@Min |
判断数值最小值 |
@Max |
判断数值最大值 |
@Email |
判断邮箱是否合法 |
例如:
@RequestMapping("/t2")
@ResponseBody
public String t2(@NotBlank @Length(min = 1,max = 5) String username,
@NotNull @Min(0) @Max(50) Integer age,
@NotEmpty @RequestParam List<String> address,
@NotBlank @Email String email){
System.out.println(username);
System.out.println(age);
System.out.println(address);
System.out.println(email);
return "请求成功";
}
异常处理
当抛出ConstraintViolationException异常时,可以使用SpringMVC的异常处理器处理异常,也可以使用springboot的异常处理器。
springboot使用BasicErrorController来进行异常处理,当出现异常时,会跳转到
resources/templates/error.html,只需要对error.html进行编辑就可以处理,当然后台还是会报异常的,如果需要详细的处理异常,那么就需要采用SpringMVC的异常处理器来处理了
校验对象类型参数
校验对象类型参数,实际是判断传来对象的属性
使用方法:
- 在对象属性前添加校验标准
- 在对象参数前添加注解
@Validated,并将异常信息封装到BindingResult对象中
例如:
public class User {
@NotBlank(message = "用户名不能为空")
private String username;
@NotNull(message = "id不能为空")
private int id;
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", id=" + id +
'}';
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
@RequestMapping("/t3")
@ResponseBody
public String t3(@Validated User user, BindingResult result){
//判断是否有异常
if (result.hasErrors()){
List<ObjectError> list = result.getAllErrors();
for (ObjectError err:list
) {
FieldError fieldError = (FieldError) err;
System.out.println(fieldError.getDefaultMessage());
}
throw new RuntimeException("参数验证");
}
System.out.println(user);
return "请求成功";
}
注意:对对象参数进行校验时不需要给controller添加@Validated注解,只需要给对象参数添加注解就可以,校验标准应该添加在对象的属性中
Springboot——参数校验的更多相关文章
- 补习系列(4)-springboot 参数校验详解
目录 目标 一.PathVariable 校验 二.方法参数校验 三.表单对象校验 四.RequestBody 校验 五.自定义校验规则 六.异常拦截器 参考文档 目标 对于几种常见的入参方式,了解如 ...
- springboot 参数校验详解
https://www.jianshu.com/p/89a675b7c900 在日常开发写rest接口时,接口参数校验这一部分是必须的,但是如果全部用代码去做,显得十分麻烦,spring也提供了这部分 ...
- SpringBoot 参数校验的方法
Introduction 有参数传递的地方都少不了参数校验.在web开发中,前端的参数校验是为了用户体验,后端的参数校验是为了安全.试想一下,如果在controller层中没有经过任何校验的参数通过s ...
- springmvc、springboot 参数校验
参数校验在项目中是必不可少的,不仅前端需要校验,为了程序的可靠性,后端也需要对参数进行有效性的校验.下面将介绍在springmvc或springboot项目中参数校验的方法 准备工作: 引入校验需要用 ...
- SpringBoot 参数校验
一.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- springboot参数校验
为了能够进行嵌套验证,必须手动在Item实体的props字段上明确指出这个字段里面的实体也要进行验证.由于@Validated不能用在成员属性(字段)上,但是@Valid能加在成员属性(字段)上,而且 ...
- springboot学习-jdbc操作数据库--yml注意事项--controller接受参数以及参数校验--异常统一管理以及aop的使用---整合mybatis---swagger2构建api文档---jpa访问数据库及page进行分页---整合redis---定时任务
springboot学习-jdbc操作数据库--yml注意事项--controller接受参数以及参数校验-- 异常统一管理以及aop的使用---整合mybatis---swagger2构建api文档 ...
- springboot项目--传入参数校验-----SpringBoot开发详解(五)--Controller接收参数以及参数校验----https://blog.csdn.net/qq_31001665/article/details/71075743
https://blog.csdn.net/qq_31001665/article/details/71075743 springboot项目--传入参数校验-----SpringBoot开发详解(五 ...
- springboot 接口参数校验
前言 在开发接口的时候,参数校验是必不可少的.参数的类型,长度等规则,在开发初期都应该由产品经理或者技术负责人等来约定.如果不对入参做校验,很有可能会因为一些不合法的参数而导致系统出现异常. 上一篇文 ...
- Java web服务端参数校验Javax.validation (springboot)
一.基本使用 Javax.validation是spring集成自带的一个参数校验接口.可通过添加注解来设置校验条件. 下面以springboot项目为例进行说明.创建web项目后,不需要再添加其他的 ...
随机推荐
- (新手向)在Linux中使用VScode编写 "Hello,world"程序,并编写测试-Ubuntu20.4
本文意在帮助 Go 语言初学者在 Linux环境下编写自己的第一个Golang程序 难点主要在 VScode 中 Go 插件的下载 与 go.mod 以及编译运行和 第一个Go测试程序的使用 前提准备 ...
- pyinstall打包工具使用简介
使用pyinstall进行多个文件打包,直接打包主入口文件即可 pyinstaller MainUI.py -F -n ServerMonitorv200 -i PIC.ico -w 此处MainUI ...
- 存算分离实践:JuiceFS 在中国电信日均 PB 级数据场景的应用
01- 大数据运营的挑战 & 升级思考 大数据运营面临的挑战 中国电信大数据集群每日数据量庞大,单个业务单日量级可达到 PB 级别,且存在大量过期数据(冷数据).冗余数据,存储压力大:每个省公 ...
- AES 简介 以及 C# 和 js 实现【加密知多少系列】
〇.AES 简介 AES 的全称是 Advanced Encryption Standard,意思是高级加密标准.它的出现主要是为了取代 DES(Data Encryption StandardDat ...
- Centos Linux 设置 jar 包 开机自启动
1.设置jar包可执行权限 点击查看代码 mkdir /usr/java cd /usr/java chmod 777 xxx.jar 2.编写脚本文件 touch xxx.sh 将文件放置到 /us ...
- 基于深度学习的车型识别系统(Python+清新界面+数据集)
摘要:基于深度学习的车型识别系统用于识别不同类型的车辆,应用YOLO V5算法根据不同尺寸大小区分和检测车辆,并统计各类型数量以辅助智能交通管理.本文详细介绍车型识别系统,在介绍算法原理的同时,给出P ...
- 如何通过Java应用程序将PDF转为图片格式?
PDF文件和图片文件,这是两种完全不一样的格式,可是有的时候这两种格式却是有相互转换的需要,大家在工作中遇到PDF文件转图片文件的问题时是怎么解决的呢?你们使用的方法简单方便吗?如果很麻烦的话,不妨来 ...
- 机器学习系列入门系列[七]:基于英雄联盟数据集的LightGBM的分类预测
1. 机器学习系列入门系列[七]:基于英雄联盟数据集的LightGBM的分类预测 1.1 LightGBM原理简介 LightGBM是2017年由微软推出的可扩展机器学习系统,是微软旗下DMKT的一个 ...
- 二进制安装k8s v1.25.4 IPv4/IPv6双栈
二进制安装k8s v1.25.4 IPv4/IPv6双栈 https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了 介绍 kubernetes( ...
- Springfox与SpringDoc——swagger如何选择(SpringDoc入门)
本文分享自天翼云开发者社区@<Springfox与SpringDoc--swagger如何选择(SpringDoc入门)>,作者: 才开始学技术的小白 0.引言 之前写过一篇关于swagg ...