SpringBoot 2.6 系列2022年最新图文版本:1.SpringBoot Web项目入门搭建
SpringBoot 2.6 系列2022年最新图文版本:2.SpringBoot + Mysql 项目搭建
SpringBoot 2.6 系列2022年最新图文版本:3.SpringBoot + Redis 项目搭建
SpringBoot 2.6 系列2022年最新图文版本:4.SpringBoot + validation参数校验
本章主要目标:
学习使用SpringBoot参数校验。本章接上一章SpringBoot Web 项目,如不会的可以点击查看:SpringBoot 2.6 系列2022年最新图文版本:1.SpringBoot Web项目入门搭建。
一、新建项目 web-validation 二、修改pom文件,添加validation下面我们开始进行搭建系统。
三、新建controller.UserControllerorg.springframework.boot spring-boot-starter-weborg.springframework.boot spring-boot-starter-validation
import com.duoduo.webvalidation.controller.form.UserForm;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@RestController
public class UserController {
@PutMapping("user/createUser")
public String createUser(@Validated @RequestBody UserForm userForm) {
return userForm.toString();
}
}
四、新建请求实体类contorller.form.UserForm
public class UserForm {
@NotNull(message = "请输入用户名")
@Pattern(regexp = "^.{2,5}", message = "用户名格式不正确")
public String userName;
@NotNull(message = "请输入手机号")
@Pattern(regexp = "^\d{11}$", message = "手机号格式不正确")
public String phone;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
五、验证测试
PUT http://localhost:8080/user/creatUser
错误日志:
2022-06-04 16:10:10.522 WARN 17845 --- [nio-8080-exec-2] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public java.lang.String com.duoduo.webvalidation.controller.UserController.createUser(com.duoduo.webvalidation.controller.form.UserForm): [Field error in object 'userForm' on field 'phone': rejected value [183000000]; codes [Pattern.userForm.phone,Pattern.phone,Pattern.java.lang.String,Pattern]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userForm.phone,phone]; arguments []; default message [phone],[Ljavax.validation.constraints.Pattern$Flag;@1353004b,^d{11}$]; default message [手机号格式不正确]] ]
六、参数验证常用注解
| 注解 | 验证的数据类型 | 备注 |
| Null | 任意类型 | 参数值必须是 Null |
| NotNull | 任意类型 | 参数值必须不是 Null |
| NotBlank | 只能作用于字符串 | 字符串不能为 null,而且字符串长度必须大于0,至少包含一个非空字符串 |
| NotEmpty | CharSequence Collection Map Array | 字符串:字符串长度必须大于0,空字符串(“ ”)可以通过校验; Collection:集合大小必须大于0; Map:map的大小必须大于0; Array:数组长度必须大于0; |
| Size | CharSequence Collection Map Array | 同 NotEmpty |
| Range | 数字类型 字符串类型 | 数值或者字符串的值必须在 min 和 max 指定的范围内 |
| Length | 字符串类型 | 字符串的长度在min 和 max 之间 |
| Pattern | 字符串类型 | 验证字符串是否符合正则表达式 |
| Min | 整型类型 | 参数值必须大于等于 最小值 |
| Max | 整型类型 | 参数值必须小于等于 最大值 |
| DecimalMin | 整型类型 | 参数值必须大于等于 最小值 |
| DecimalMax | 整型类型 | 参数值必须小于等于 最大值 |
| AssertTrue | 布尔类型 | 参数值必须为 true |
| AssertFalse | 布尔类型 | 参数值必须为 false |
| Past | 时间类型 | 参数值必须小于 当前时间 |
| Future | 时间类型 | 参数值必须大于 当前时间 |
常用:
.*代表任意字符
?代表0-1次
+代表1-N次
^$代表开始结束
|代表或
[]代表字符集任意,[a-z]、[abc]



