最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot校驗(yàn)工具類詳細(xì)代碼示例

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

校驗(yàn)工具類

這個(gè)實(shí)現(xiàn)邏輯很簡(jiǎn)單,就是調(diào)用string的正則表達(dá)式

我這里的代碼要導(dǎo)入糊涂工具包

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

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

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

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

正則表達(dá)式常量類

public abstract class RegexPatterns {
    /**
     * 手機(jī)號(hào)正則
     */
    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}$";
    /**
     * 驗(yàn)證碼正則, 6位數(shù)字或字母
     */
    public static final String VERIFY_CODE_REGEX = "^[a-zA-Z\\d]{6}$";

}

附:自定義注解工具類

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

我寫(xiě)了個(gè)demo,還是很好用的,不過(guò)需要手動(dòng)調(diào)用校驗(yàn)方法

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);
    }
}

總結(jié) 

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

相關(guān)文章

  • Spring Boot如何開(kāi)啟并使用郵件服務(wù)

    Spring Boot如何開(kāi)啟并使用郵件服務(wù)

    這篇文章主要介紹了Spring Boot如何開(kāi)啟并使用郵件服務(wù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 自定義類加載器的父類為何是AppClassLoader說(shuō)明

    自定義類加載器的父類為何是AppClassLoader說(shuō)明

    這篇文章主要介紹了自定義類加載器的父類為何是AppClassLoader說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java實(shí)現(xiàn)貪吃蛇游戲源碼

    Java實(shí)現(xiàn)貪吃蛇游戲源碼

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)貪吃蛇游戲源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • Java 如何解析key為動(dòng)態(tài)的json操作

    Java 如何解析key為動(dòng)態(tài)的json操作

    這篇文章主要介紹了Java 如何解析key為動(dòng)態(tài)的json操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • Spring中@ConfigurationProperties的用法解析

    Spring中@ConfigurationProperties的用法解析

    這篇文章主要介紹了Spring中@ConfigurationProperties的用法解析,傳統(tǒng)的Spring一般都是基本xml配置的,后來(lái)spring3.0新增了許多java config的注解,特別是spring boot,基本都是清一色的java config,需要的朋友可以參考下
    2023-11-11
  • Java實(shí)現(xiàn)走迷宮回溯算法

    Java實(shí)現(xiàn)走迷宮回溯算法

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)走迷宮回溯算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • IDEA中使用Typora編輯md文件的方法

    IDEA中使用Typora編輯md文件的方法

    這篇文章主要介紹了IDEA中使用Typora編輯md文件的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • SpringBoot集成Knife4j/Swagger:接口文檔自動(dòng)生成,告別手寫(xiě)API文檔

    SpringBoot集成Knife4j/Swagger:接口文檔自動(dòng)生成,告別手寫(xiě)API文檔

    本文將詳細(xì)講解SpringBoot如何快速集成Knife4j/Swagger,從環(huán)境搭建、基礎(chǔ)配置、接口注解使用,到進(jìn)階優(yōu)化,全程附完整代碼示例,感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • 使用maven命令安裝jar包到本地倉(cāng)庫(kù)的方法步驟

    使用maven命令安裝jar包到本地倉(cāng)庫(kù)的方法步驟

    這篇文章主要介紹了使用maven命令安裝jar包到本地倉(cāng)庫(kù)的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • SpringBoot+Nacos+Kafka微服務(wù)流編排的簡(jiǎn)單實(shí)現(xiàn)

    SpringBoot+Nacos+Kafka微服務(wù)流編排的簡(jiǎn)單實(shí)現(xiàn)

    本文主要介紹了SpringBoot+Nacos+Kafka微服務(wù)流編排的簡(jiǎn)單實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評(píng)論

手机| 上虞市| 四平市| 芦山县| 仁寿县| 延长县| 定西市| 桐庐县| 略阳县| 宣化县| 海阳市| 瑞金市| 华坪县| 富宁县| 兴文县| 永兴县| 南靖县| 昭苏县| 宜春市| 都江堰市| 香港 | 沂水县| 双鸭山市| 贵溪市| 咸宁市| 巴塘县| 陕西省| 涟水县| 黄山市| 屏东市| 鄂伦春自治旗| 嘉黎县| 个旧市| 清流县| 民县| 垦利县| 德化县| 小金县| 怀来县| 雷州市| 宁都县|