Java 系統學習 | Springboot 數據驗證
本篇使用 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郵箱 -
@URLurl -
@Pattern正則驗證 -
@AssertFalseboolean 值必須是 false -
@AssertTrueboolean 值必須是 true

浙公網安備 33010602011771號