springboot表單提交之validator校驗(yàn)
前言
表單提交是最常見的數(shù)據(jù)提交方式,我們經(jīng)常會(huì)填寫表單信息,比如用戶名,身份證,手機(jī)號等等,因此就會(huì)產(chǎn)生身份證是否合法,用戶名是否為空,雖然我們可以直接在前臺使用js就進(jìn)行格式的校驗(yàn),但如果使用postman工具直接發(fā)請求呢?使用我們后端也需要進(jìn)行對數(shù)據(jù)的校驗(yàn),這樣極大的確保數(shù)據(jù)的安全性和合法性。
1.新建一個(gè)Springboot項(xiàng)目,并且添加web依賴。下面是本項(xiàng)目的全部依賴
<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,然后我們新建一個(gè)User類來模擬用戶注冊時(shí)提交的表單信息。
這里涉及到幾個(gè)注解:
@NotEmpty(message=“用戶名不能為空”) |
---|
@Length(min=6,max = 12,message=“用戶名長度必須位于6到12之間”) |
@Email(message=“請輸入正確的郵箱”) |
@Pattern(regexp = “正則表達(dá)式”, message = “身份證格式錯(cuò)誤”) |
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 = "身份證格式錯(cuò)誤") private String idCard; }
3.然后書寫一個(gè)簡單的控制器來進(jìn)行模擬訪問:
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){//一個(gè)BindingResult對應(yīng)一個(gè)@Valid注解的參數(shù),用來表示校驗(yàn)消息 StringBuffer stringBuffer = new StringBuffer();//使用StringBuffer拼接錯(cuò)誤信息,比如用戶名為空,長度等 if(bindingResult.hasErrors()){//判讀是否攜帶錯(cuò)誤信息 List<ObjectError> list =bindingResult.getAllErrors();//獲取所有錯(cuò)誤信息對象 for (ObjectError objectError:list) {//遍歷對象,獲取錯(cuò)誤的具體信息 //將所有信息進(jìn)行拼接 stringBuffer.append(objectError.getDefaultMessage()); stringBuffer.append("---"); } } return stringBuffer!=null?stringBuffer.toString():"";//將錯(cuò)誤信息返回 } }
4.這里涉及到一個(gè)接口:BindingResult。
方法名 | 作用 |
---|---|
hasErrors() | 判斷當(dāng)前參數(shù)是否符合 |
getAllErrors() | 獲取錯(cuò)誤信息對象 |
getDefaultMessage() | 獲取錯(cuò)誤信息 |
輸入一半正確的,一般錯(cuò)誤的:
都正確的數(shù)據(jù):
總結(jié)
到此這篇關(guān)于springboot表單提交之validator校驗(yàn)的文章就介紹到這了,更多相關(guān)springboot validator校驗(yàn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot參數(shù)校驗(yàn)Validator框架詳解
- Springboot?hibernate-validator?6.x快速校驗(yàn)示例代碼
- springboot中validator數(shù)據(jù)校驗(yàn)功能的實(shí)現(xiàn)
- springboot validator枚舉值校驗(yàn)功能實(shí)現(xiàn)
- SpringBoot 使用hibernate validator校驗(yàn)
- springboot使用Validator校驗(yàn)方式
- springboot使用hibernate validator校驗(yàn)方式
- SpringBoot使用Validator進(jìn)行參數(shù)校驗(yàn)實(shí)戰(zhàn)教程(自定義校驗(yàn),分組校驗(yàn))
相關(guān)文章
Java將List轉(zhuǎn)換為String的幾種方式
我們大家在實(shí)際開發(fā)中經(jīng)常遇到List轉(zhuǎn)為String字符串的情況,下面這篇文章主要給大家介紹了關(guān)于Java將List轉(zhuǎn)換為String的幾種方式,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05Java線程編程中Thread類的基礎(chǔ)學(xué)習(xí)教程
這篇文章主要介紹了Java線程編程中Thread類的基礎(chǔ)學(xué)習(xí)教程,Thread類包含諸多操作線程的方法,非常重要,需要的朋友可以參考下2015-12-12SpringBoot初始化接口CommandLineRunner示例詳解
這篇文章主要介紹了SpringBoot初始化接口CommandLineRunner,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07基于Java和GeoTools的Shapefile矢量數(shù)據(jù)縮略圖生成實(shí)踐
這篇文章主要介紹了基于Java和GeoTools的Shapefile矢量數(shù)據(jù)縮略圖生成實(shí)踐,需要的朋友可以參考下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