springboot表單提交之validator校驗(yàn)
前言
表單提交是最常見(jiàn)的數(shù)據(jù)提交方式,我們經(jīng)常會(huì)填寫(xiě)表單信息,比如用戶名,身份證,手機(jī)號(hào)等等,因此就會(huì)產(chǎn)生身份證是否合法,用戶名是否為空,雖然我們可以直接在前臺(tái)使用js就進(jìn)行格式的校驗(yàn),但如果使用postman工具直接發(fā)請(qǐng)求呢?使用我們后端也需要進(jìn)行對(duì)數(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類(lèi)來(lái)模擬用戶注冊(cè)時(shí)提交的表單信息。
這里涉及到幾個(gè)注解:
| @NotEmpty(message=“用戶名不能為空”) |
|---|
| @Length(min=6,max = 12,message=“用戶名長(zhǎng)度必須位于6到12之間”) |
| @Email(message=“請(qǐng)輸入正確的郵箱”) |
| @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="用戶名長(zhǎng)度必須位于6到12之間")
private String userName;
@NotEmpty(message="密碼不能為空")
@Length(min=6,message="密碼長(zhǎng)度不能小于6位")
private String passWord;
@Email(message="請(qǐng)輸入正確的郵箱")
private String email;
@Pattern(regexp = "^(\\d{18,18}|\\d{15,15}|(\\d{17,17}[x|X]))$", message = "身份證格式錯(cuò)誤")
private String idCard;
}
3.然后書(shū)寫(xiě)一個(gè)簡(jiǎn)單的控制器來(lái)進(jìn)行模擬訪問(wè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對(duì)應(yīng)一個(gè)@Valid注解的參數(shù),用來(lái)表示校驗(yàn)消息
StringBuffer stringBuffer = new StringBuffer();//使用StringBuffer拼接錯(cuò)誤信息,比如用戶名為空,長(zhǎng)度等
if(bindingResult.hasErrors()){//判讀是否攜帶錯(cuò)誤信息
List<ObjectError> list =bindingResult.getAllErrors();//獲取所有錯(cuò)誤信息對(duì)象
for (ObjectError objectError:list) {//遍歷對(duì)象,獲取錯(cuò)誤的具體信息
//將所有信息進(jìn)行拼接
stringBuffer.append(objectError.getDefaultMessage());
stringBuffer.append("---");
}
}
return stringBuffer!=null?stringBuffer.toString():"";//將錯(cuò)誤信息返回
}
}
4.這里涉及到一個(gè)接口:BindingResult。
| 方法名 | 作用 |
|---|---|
| hasErrors() | 判斷當(dāng)前參數(shù)是否符合 |
| getAllErrors() | 獲取錯(cuò)誤信息對(duì)象 |
| getDefaultMessage() | 獲取錯(cuò)誤信息 |


輸入一半正確的,一般錯(cuò)誤的:

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

總結(jié)
到此這篇關(guān)于springboot表單提交之validator校驗(yàn)的文章就介紹到這了,更多相關(guān)springboot validator校驗(yàn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(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í)際開(kāi)發(fā)中經(jīng)常遇到List轉(zhuǎn)為String字符串的情況,下面這篇文章主要給大家介紹了關(guān)于Java將List轉(zhuǎn)換為String的幾種方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05
Spring Boot 中的Servlet簡(jiǎn)單使用
在spring boot中添加自己的Servlet有兩種方法,代碼注冊(cè)Servlet和注解自動(dòng)注冊(cè)(Filter和Listener也是如此)。這篇文章主要介紹了Spring Boot 中的Servlet簡(jiǎn)單使用,需要的朋友可以參考下2017-04-04
Java線程編程中Thread類(lèi)的基礎(chǔ)學(xué)習(xí)教程
這篇文章主要介紹了Java線程編程中Thread類(lèi)的基礎(chǔ)學(xué)習(xí)教程,Thread類(lèi)包含諸多操作線程的方法,非常重要,需要的朋友可以參考下2015-12-12
關(guān)于idea中ssm框架的編碼問(wèn)題分析
在實(shí)際開(kāi)發(fā)中需要將操作系統(tǒng)編碼、文件編碼、頁(yè)面編碼以及tomcat服務(wù)器編碼保持一致,而tomcat在默認(rèn)情況下是使用UTF-8,這就使得其打印的日志文件出現(xiàn)中文亂碼,因此在一般情況下,只需要將tomcat服務(wù)器的編碼改為GBK即可2021-06-06
SpringBoot初始化接口CommandLineRunner示例詳解
這篇文章主要介紹了SpringBoot初始化接口CommandLineRunner,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(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

