亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Springboot校驗工具類詳細代碼示例

 更新時間:2024年02月02日 11:32:24   作者:憨憨小江  
這篇文章主要給大家介紹了關于Springboot校驗工具類的相關資料,工具類里面主要是封裝了一些常用字段驗證方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

校驗工具類

這個實現(xiàn)邏輯很簡單,就是調(diào)用string的正則表達式

我這里的代碼要導入糊涂工具包

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.7.17</version>
</dependency>
import cn.hutool.core.util.StrUtil;

public class RegexUtils {
    /**
     * 是否是無效手機格式
     * @param phone 要校驗的手機號
     * @return true:符合,false:不符合
     */
    public static boolean isPhoneInvalid(String phone){
        return mismatch(phone, RegexPatterns.PHONE_REGEX);
    }
    /**
     * 是否是無效郵箱格式
     * @param email 要校驗的郵箱
     * @return true:符合,false:不符合
     */
    public static boolean isEmailInvalid(String email){
        return mismatch(email, RegexPatterns.EMAIL_REGEX);
    }

    /**
     * 是否是無效驗證碼格式
     * @param code 要校驗的驗證碼
     * @return true:符合,false:不符合
     */
    public static boolean isCodeInvalid(String code){
        return mismatch(code, RegexPatterns.VERIFY_CODE_REGEX);
    }

    // 校驗是否不符合正則格式
    private static boolean mismatch(String str, String regex){
        if (StrUtil.isBlank(str)) {
            return true;
        }
        return !str.matches(regex);
    }
}

正則表達式常量類

public abstract class RegexPatterns {
    /**
     * 手機號正則
     */
    public static final String PHONE_REGEX = "^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$";
    /**
     * 郵箱正則
     */
    public static final String EMAIL_REGEX = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
    /**
     * 密碼正則。4~32位的字母、數(shù)字、下劃線
     */
    public static final String PASSWORD_REGEX = "^\\w{4,32}$";
    /**
     * 驗證碼正則, 6位數(shù)字或字母
     */
    public static final String VERIFY_CODE_REGEX = "^[a-zA-Z\\d]{6}$";

}

附:自定義注解工具類

還有一些情況,如果業(yè)務邏輯實在比較復雜,前端傳遞來的是字符串,在service層才轉換成對象的時候,就只能自定義校驗工具類了。

我寫了個demo,還是很好用的,不過需要手動調(diào)用校驗方法

import com.alibaba.fastjson.JSON;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.http.HttpStatus;

import javax.validation.*;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.util.Set;

/**
 * @Author : wangbin
 * @Date : 2023/2/16 14:49
 * @Description:
 */
public class ValidationUtils {
    public static void validate(@Valid Object user,Class<?> ... clazz) {
        try (ValidatorFactory factory = Validation.buildDefaultValidatorFactory()) {
            Validator validator = factory.getValidator();
            if(clazz==null){
                clazz=new Class[0];
            }
            Set<ConstraintViolation<@Valid Object>> validateSet = validator.validate(user,clazz );
            if (!CollectionUtils.isEmpty(validateSet)) {
                String messages = validateSet.stream()
                        .map(ConstraintViolation::getMessage)
                        .reduce((m1, m2) -> m1 + ";" + m2)
                        .orElse("參數(shù)輸入有誤!");
                throw DataImportException.httpError(HttpStatus.BAD_REQUEST,messages);
            }
        }


    }

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    static class User {
        @NotNull(message = "姓名不能為空",groups = ProcessInfoUpdateGroup.class)
        private String name;



        @Max(value = 200, message = "age不能超200")
        @Min(value = 0, message = "age不能小于0",groups = ProcessInfoCreateGroup.class)
        private Integer age;
    }

    public static void main(String[] args) {
        User wb = new User(null, 201);

        String s = com.alibaba.fastjson.JSON.toJSONString(wb);

        User user = JSON.parseObject(s, User.class);
        validate(user);
    }
}

總結 

到此這篇關于Springboot校驗工具類的文章就介紹到這了,更多相關Springboot校驗工具類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • FluentMybatis實現(xiàn)mybatis動態(tài)sql拼裝和fluent api語法

    FluentMybatis實現(xiàn)mybatis動態(tài)sql拼裝和fluent api語法

    本文主要介紹了FluentMybatis實現(xiàn)mybatis動態(tài)sql拼裝和fluent api語法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java?Runtime的使用詳解

    Java?Runtime的使用詳解

    這篇文章主要介紹了Java?Runtime的使用詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 關于replaceFirst使用時的注意事項

    關于replaceFirst使用時的注意事項

    這篇文章主要介紹了關于replaceFirst使用時的注意事項,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • idea創(chuàng)建springboot項目和springcloud項目的詳細教程

    idea創(chuàng)建springboot項目和springcloud項目的詳細教程

    這篇文章主要介紹了idea創(chuàng)建springboot項目和springcloud項目方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Springcloud Stream消息驅(qū)動工具使用介紹

    Springcloud Stream消息驅(qū)動工具使用介紹

    SpringCloud Stream由一個中間件中立的核組成,應用通過SpringCloud Stream插入的input(相當于消費者consumer,它是從隊列中接收消息的)和output(相當于生產(chǎn)者producer,它是發(fā)送消息到隊列中的)通道與外界交流
    2022-09-09
  • SpringBoot使用WebSocket實現(xiàn)前后端交互的操作方法

    SpringBoot使用WebSocket實現(xiàn)前后端交互的操作方法

    springboot使用websocket有兩種方式,一種是實現(xiàn)簡單的websocket,另外一種是實現(xiàn)STOMP協(xié)議,本篇講述如何使用springboot實現(xiàn)簡單的websocket,需要的朋友可以參考下
    2022-04-04
  • Java Object定義三個點實現(xiàn)代碼

    Java Object定義三個點實現(xiàn)代碼

    這篇文章主要介紹了Java Object定義三個點實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • HashMap和HashTable底層原理以及常見面試題

    HashMap和HashTable底層原理以及常見面試題

    今天小編就為大家分享一篇關于HashMap和HashTable底層原理以及常見面試題,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java后端SSM框架圖片上傳功能實現(xiàn)方法解析

    Java后端SSM框架圖片上傳功能實現(xiàn)方法解析

    這篇文章主要介紹了Java后端SSM框架圖片上傳功能實現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • Java并發(fā)編程之原子性-Atomic的使用

    Java并發(fā)編程之原子性-Atomic的使用

    這篇文章主要介紹了Java并發(fā)編程之原子性-Atomic的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論