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)文章
SpringBoot如何實現(xiàn)word文檔轉(zhuǎn)pdf
這篇文章主要介紹了SpringBoot如何實現(xiàn)word文檔轉(zhuǎn)pdf,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
Java實現(xiàn)經(jīng)典游戲Flappy Bird的示例代碼
Flappy?Bird是13年紅極一時的小游戲,即摁上鍵控制鳥的位置穿過管道間的縫隙。本文將用Java語言實現(xiàn)這一經(jīng)典的游戲,需要的可以參考一下2022-02-02
Java求解兩個非負整數(shù)最大公約數(shù)算法【循環(huán)法與遞歸法】
這篇文章主要介紹了Java求解兩個非負整數(shù)最大公約數(shù)算法,結(jié)合實例形式分析了java求解最大公約數(shù)的實現(xiàn)方法,并附帶了循環(huán)法與遞歸法算法思路,需要的朋友可以參考下2018-03-03
Idea代理設(shè)置與Java程序的代理設(shè)置方式
文章總結(jié):學(xué)習WebService時,使用Fiddler抓取包數(shù)據(jù),發(fā)現(xiàn)Idea代理設(shè)置與Java程序代理設(shè)置不同,Java程序需要在發(fā)送請求前設(shè)置代理,代碼如下2025-01-01
SpringBoot整合PageHelper實現(xiàn)分頁查詢功能詳解
PageHelper是mybatis框架的一個插件,用于支持在mybatis執(zhí)行分頁操作。本文將通過SpringBoot整合PageHelper實現(xiàn)分頁查詢功能,需要的可以參考一下2022-03-03
Java數(shù)據(jù)結(jié)構(gòu)順序表從零基礎(chǔ)到精通進階
程序中經(jīng)常需要將一組數(shù)據(jù)元素作為整體管理和使用,需要創(chuàng)建這種元素組,用變量記錄它們,傳進傳出函數(shù)等。一組數(shù)據(jù)中包含的元素個數(shù)可能發(fā)生變化,順序表則是將元素順序地存放在一塊連續(xù)的存儲區(qū)里,元素間的順序關(guān)系由它們的存儲順序自然表示2022-03-03

