<input id="0qass"><u id="0qass"></u></input>
  • <input id="0qass"><u id="0qass"></u></input>
  • <menu id="0qass"><u id="0qass"></u></menu>

    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()獲取錯誤信息

    5.運行項目,使用postman進行測試:

    • 當我們輸入錯誤信息:
      在這里插入圖片描述
      在這里插入圖片描述
    • 輸入一半正確的,一般錯誤的:
      在這里插入圖片描述
    • 都正確的數據:
      在這里插入圖片描述
    相關推薦
    ??2020 CSDN 皮膚主題: 游動-白 設計師:白松林 返回首頁
    多乐彩