1. 程式人生 > 程式設計 >springboot表單提交之validator校驗

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>
      www.cppcns.com
<groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>wZtLpBpQy1.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,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 cla程式設計客棧ss 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.toStrwZtLpBpQying():"";//將錯誤資訊返回
    }
}

4.這裡涉及到一個介面:BindingResult。

程式設計客棧
方法名 作用
hasErrors() 判斷當前引數是否符合
getAllErrors() 獲取錯誤資訊物件
getDefaultMessage() 獲取錯誤資訊

在這裡插入圖片描述
在這裡插入圖片描述

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

在這裡插入圖片描述

都正確的資料:

在這裡插入圖片描述

總結

到此這篇關於springboot表單提交之validator校驗的文章就介紹到這了,更多相關springboot validator校驗內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!