SpringBoot 2.7教程:SpringBoot + Web 项目搭建及实践应用-2022年最新图文版本
SpringBoot 2.7教程:SpringBoot + Web 项目搭建,异常捕获处理-2022年最新图文版本
SpringBoot 2.7教程:SpringBoot + Mysql 项目应用-2022年最新图文版本
SpringBoot 2.7教程:SpringBoot 集成 jsp 页面开发 -2022年最新图文版本
SpringBoot 2.7教程:SpringBoot 实现文件上传,图片上传并显示功能-2022年最新图文版本
SpringBoot 2.7教程:springboot 设置全局字符编码,解决乱码问题-2022年最新图文版
SpringBoot 2.7教程:SpringBoot mybatis 多数据源的整合方法-2022年最新图文版本
SpringBoot 2.7教程:SpringBoot 整合 RocketMQ 项目搭建-2022年最新图文版本
SpringBoot 2.7教程:SpringBoot 整合 RabbitMQ 项目搭建-2022年最新图文版本
SpringBoot 2.7教程:SpringBoot 整合 MongoDB 项目搭建-2022年最新图文版本
SpringBoot 2.7教程:SpringBoot 整合 Redisson 项目搭建-2022年最新图文版本
SpringBoot 2.7教程:SpringBoot 整合 Redis 项目搭建-2022年最新图文版本
本章主要目标:
学习使用SpringBoot参数校验。本章接上一章SpringBoot Web 项目,如不会的可以点击查看:SpringBoot 2.6 系列2022年最新图文版本:1.SpringBoot Web项目入门搭建。
下面我们开始进行搭建系统。
一、新建项目 web-validation
二、修改pom文件,添加validation
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
三、新建controller.UserController
import com.duoduo.webvalidation.controller.form.UserForm;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/***
* @date: 2022/6/3
* @author: fenghaikuan
* @description: TODO
*/
@RestController
public class UserController {
@PutMapping("user/createUser")
public String createUser(@Validated @RequestBody UserForm userForm) {
return userForm.toString();
}
}
四、新建请求实体类contorller.form.UserForm
/***
* @date: 2022/6/3
* @author: fenghaikuan
* @description: TODO
*/
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]