springboot表單提交之validator校驗
前言
表單提交是最常見的數(shù)據(jù)提交方式,我們經(jīng)常會填寫表單信息,比如用戶名,身份證,手機號等等,因此就會產(chǎn)生身份證是否合法,用戶名是否為空,雖然我們可以直接在前臺使用js就進行格式的校驗,但如果使用postman工具直接發(fā)請求呢?使用我們后端也需要進行對數(shù)據(jù)的校驗,這樣極大的確保數(shù)據(jù)的安全性和合法性。
1.新建一個Springboot項目,并且添加web依賴。下面是本項目的全部依賴
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.5.Final</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

2.為了方便演示,我引入了Lombok,然后我們新建一個User類來模擬用戶注冊時提交的表單信息。
這里涉及到幾個注解:
| @NotEmpty(message=“用戶名不能為空”) |
|---|
| @Length(min=6,max = 12,message=“用戶名長度必須位于6到12之間”) |
| @Email(message=“請輸入正確的郵箱”) |
| @Pattern(regexp = “正則表達式”, message = “身份證格式錯誤”) |
User.java的代碼:
package com.ctvit.validatordemo.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
/**
* 用戶名,密碼,郵箱,身份證
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {
@NotEmpty(message="用戶名不能為空")
@Length(min=6,max = 12,message="用戶名長度必須位于6到12之間")
private String userName;
@NotEmpty(message="密碼不能為空")
@Length(min=6,message="密碼長度不能小于6位")
private String passWord;
@Email(message="請輸入正確的郵箱")
private String email;
@Pattern(regexp = "^(\\d{18,18}|\\d{15,15}|(\\d{17,17}[x|X]))$", message = "身份證格式錯誤")
private String idCard;
}
3.然后書寫一個簡單的控制器來進行模擬訪問:
package com.ctvit.validatordemo.controller;
import com.ctvit.validatordemo.pojo.User;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.List;
@RestController
public class UserController {
@PostMapping("/Register")
public String Register(@Valid User user, BindingResult bindingResult){//一個BindingResult對應(yīng)一個@Valid注解的參數(shù),用來表示校驗消息
StringBuffer stringBuffer = new StringBuffer();//使用StringBuffer拼接錯誤信息,比如用戶名為空,長度等
if(bindingResult.hasErrors()){//判讀是否攜帶錯誤信息
List<ObjectError> list =bindingResult.getAllErrors();//獲取所有錯誤信息對象
for (ObjectError objectError:list) {//遍歷對象,獲取錯誤的具體信息
//將所有信息進行拼接
stringBuffer.append(objectError.getDefaultMessage());
stringBuffer.append("---");
}
}
return stringBuffer!=null?stringBuffer.toString():"";//將錯誤信息返回
}
}
4.這里涉及到一個接口:BindingResult。
| 方法名 | 作用 |
|---|---|
| hasErrors() | 判斷當前參數(shù)是否符合 |
| getAllErrors() | 獲取錯誤信息對象 |
| getDefaultMessage() | 獲取錯誤信息 |


輸入一半正確的,一般錯誤的:

都正確的數(shù)據(jù):

總結(jié)
到此這篇關(guān)于springboot表單提交之validator校驗的文章就介紹到這了,更多相關(guān)springboot validator校驗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot參數(shù)校驗Validator框架詳解
- Springboot?hibernate-validator?6.x快速校驗示例代碼
- springboot中validator數(shù)據(jù)校驗功能的實現(xiàn)
- springboot validator枚舉值校驗功能實現(xiàn)
- SpringBoot 使用hibernate validator校驗
- springboot使用Validator校驗方式
- springboot使用hibernate validator校驗方式
- SpringBoot使用Validator進行參數(shù)校驗實戰(zhàn)教程(自定義校驗,分組校驗)
相關(guān)文章
Java將List轉(zhuǎn)換為String的幾種方式
我們大家在實際開發(fā)中經(jīng)常遇到List轉(zhuǎn)為String字符串的情況,下面這篇文章主要給大家介紹了關(guān)于Java將List轉(zhuǎn)換為String的幾種方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-05-05
Java線程編程中Thread類的基礎(chǔ)學(xué)習(xí)教程
這篇文章主要介紹了Java線程編程中Thread類的基礎(chǔ)學(xué)習(xí)教程,Thread類包含諸多操作線程的方法,非常重要,需要的朋友可以參考下2015-12-12
SpringBoot初始化接口CommandLineRunner示例詳解
這篇文章主要介紹了SpringBoot初始化接口CommandLineRunner,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07
基于Java和GeoTools的Shapefile矢量數(shù)據(jù)縮略圖生成實踐
這篇文章主要介紹了基于Java和GeoTools的Shapefile矢量數(shù)據(jù)縮略圖生成實踐,需要的朋友可以參考下2024-08-08
關(guān)于Java中static關(guān)鍵字的用法
這篇文章主要介紹了關(guān)于Java中static關(guān)鍵字的用法,static:意為靜態(tài)的,在?Java?里面作為靜態(tài)修飾符,可以理解為全局的意思,static?不僅可以修飾成員變量,成員方法,還可以修飾代碼塊,需要的朋友可以參考下2023-08-08

