springboot表單提交之validator校驗
前言
表單提交是最常見的數據提交方式,我們經常會填寫表單信息,比如用戶名,身份證,手機號等等,因此就會產生身份證是否合法,用戶名是否為空,雖然我們可以直接在前臺使用js就進行格式的校驗,但如果使用postman工具直接發請求呢?使用我們後端也需要進行對數據的校驗,這樣極大的確保數據的安全性和合法性。
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對應一個@Valid註解的參數,用來表示校驗消息 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() | 判斷當前參數是否符合 |
getAllErrors() | 獲取錯誤信息對象 |
getDefaultMessage() | 獲取錯誤信息 |
輸入一半正確的,一般錯誤的:
都正確的數據:
總結
到此這篇關於springboot表單提交之validator校驗的文章就介紹到這瞭,更多相關springboot validator校驗內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- @Valid 校驗無效,BindingResult未獲得錯誤的解決
- SpringBoot學習篇之@Valid與@Validated的區別
- springboot 參數格式校驗操作
- Spring4下validation數據校驗無效(maven)的解決
- springmvc項目使用@Valid+BindingResult遇到的問題