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项目后,不需要再添加其他的 ...
随机推荐
- return、break与continue的区别
前言 在上一篇文章中,壹哥给大家介绍了while.do-while两种循环结构,并且给大家总结了两种循环的区别.实际上,我们在利用循环执行重复操作的过程中,还存在着另一个需求:如何中止,或者说提前结束 ...
- 移动端pdf预览---vue-pdf
<template> <div class="mainBody"> <!-- <div v-if="isLoading" c ...
- 一个基于GPT模型实现的Git Commit信息自动生成工具
每次提交代码的时候,你是否有为如何写Commit Message而迟迟按不下提交的时刻呢?然后,死磨硬泡写了一些并提交后,又被review的小伙伴吐槽了呢?相信很多小伙伴有过这样的经历吧? 趁着最近C ...
- 在云服务器上搭建个人版chatGPT及后端Spring Boot集成chat GPT
总结/朱季谦 本文分成两部分,包括[国内服务器上搭建chat GPT]和[后端Spring Boot集成chat GPT]. 无论是在[国内服务器上搭建chat GPT]和[后端Spring Boot ...
- [ACM]TL-Kruskal
#include<iostream> #include<cstdio> using namespace std; struct edge { int u; int v; int ...
- Mybatis 获取自增主键 useGeneratedKeys与keyProperty 解答
Mybatis 获取自增主键 今天开发的时候遇到一个疑惑,业务场景是这样的, 但是百度好久没有找到合适的解答,于是自己向同事了解,感觉还不错,因此写上了这个文章 有一个表A和一个表B A就是一个主表, ...
- 二进制安装Kubernetes(k8s) v1.23.4
1.环境 网段 物理主机:192.168.1.0/24 service:10.96.0.0/12 pod:172.16.0.0/12 如果有条件建议k8s集群与etcd集群分开安装 1.1.k8s基础 ...
- 为kubernetes(k8s)单独配置kubectl工具
介绍 Kubernetes API 是一个 HTTP REST API.这个 API 是真正的 Kubernetes 用户界面,通过它可以完全控制它.这意味着每个 Kubernetes 操作都作为 A ...
- python文字转语音库及使用方法
作者:陈哲链接:https://www.zhihu.com/question/473797102/answer/2019063801来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...
- 多线程socketserver
模块:socketserver tcp协议: 服务端: import socketserver class MyRequestHandle(socketserver.BaseRequestHandle ...