本篇使用 Springboot3 框架,IDEA2022 编辑器,java17 版本。
在 上一篇 的基础上进行优化
添加依赖
在 pom.xml
中添加依赖,记得更新 maven
<!-- validation 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
pojo 类中添加验证规则
/pojo/User.java 文件
-
message 自定义验证提示信息
-
regexp 定义正则
package com.holly.pojo;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class User {
@NotNull
private int id;
@NotEmpty(message = "用户名不能为空")
private String username;
@NotEmpty(message = "密码不能为空")
private String password;
@NotEmpty(message = "别名不能为空")
@Pattern(regexp = "^\\S{1,10}$")
private String nickname;
@NotEmpty
@Email
private String email;
private String userPic;
private LocalDateTime createTime;
private LocalDateTime updateTime;
}
请求参数添加 @Valid
注解
/controller/UserController 中的 add 方法
@PostMapping
public String add(@Valid User user) {
userService.add(user);
return "添加成功";
}
全局异常处理
创建包目录 exception,新建 exception/ValidationException.java
package com.holly.exception;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
@ControllerAdvice
public class ValidationException {
@ExceptionHandler(Exception.class)
public Object handleException(Exception e) {
e.printStackTrace();
return StringUtils.hasLength(e.getMessage()) ? e.getMessage() : "操作失败";
}
}
常用验证注解
-
@NotNull
不为 null -
@Null
必须是 null -
@NotBlank
不能为空字符串或全空格 -
@NotEmpty
字符串不能为空 -
@Max
最大值 -
@Min
最小值 -
@Length(min=,max=)
长度范围 -
@Size(min=,max=)
长度范围 -
@Email
邮箱 -
@URL
url -
@Pattern
正则验证 -
@AssertFalse
boolean 值必须是 false -
@AssertTrue
boolean 值必须是 true