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

Springboot參數(shù)校驗(yàn)之分組校驗(yàn)、嵌套校驗(yàn)的實(shí)現(xiàn)

 更新時(shí)間:2023年08月22日 09:48:40   作者:臨時(shí)工  
日常開(kāi)發(fā)中,免不了需要對(duì)請(qǐng)求參數(shù)進(jìn)行校驗(yàn),諸如判空,長(zhǎng)度,正則,集合等,復(fù)雜一點(diǎn)的請(qǐng)求參數(shù)可能會(huì)包含嵌套,分組校驗(yàn),本文就詳細(xì)的介紹一下,感興趣的可以了解一下

日常開(kāi)發(fā)中,免不了需要對(duì)請(qǐng)求參數(shù)進(jìn)行校驗(yàn),諸如判空,長(zhǎng)度,正則,集合等,復(fù)雜一點(diǎn)的請(qǐng)求參數(shù)可能會(huì)包含嵌套,分組校驗(yàn)。

我們由簡(jiǎn)入深開(kāi)始,一文搞定參數(shù)校驗(yàn)!

1. 簡(jiǎn)單判空

  • GET請(qǐng)求,字符串類型參數(shù):使用@NotBlank注解 @NotBlank String mobile
  • GET請(qǐng)求,int,long byte等類型參數(shù):使用@NotNull注解 @NotNull Integer userNum
  • POST請(qǐng)求,以body中參數(shù)為json為例:使用@Valid注解 @Valid UserReq userReq,UserReq中字段使用@NotBlank 或@NotNull

以下均為POST請(qǐng)求,以body中參數(shù)類型為json舉例

2. 參數(shù)長(zhǎng)度校驗(yàn)

@Size(min=5,max = 20)
    private String nickName;

長(zhǎng)度5-20之間

3. 正則校驗(yàn)

 @Pattern(regexp = "^\\d{15}|\\d{18}$")
    private String idCard;

15或18位數(shù)字

4. 集合校驗(yàn)

 @NotEmpty
    private List<User> users;

集合不能為空

5.分組校驗(yàn)

分組校驗(yàn)需要先定義好分組,比如

舉例,定義一個(gè)AddView類

public interface AddView {
}

針對(duì)上面的users集合使用分組

public class UserReq {
? ? private static final long serialVersionUID = 1L;
? ? /**
? ? ?* id
? ? ?*/
? ? @NotNull
? ? private Long id;
? ? /**
? ? ?* 用戶集合
? ? ?*/
? ? @NotEmpty(groups = {AddView.class, UpdateView.class})
? ? private List<User> users;
}

通過(guò)配置groups使users在新增和修改的時(shí)候才會(huì)校驗(yàn)。
在請(qǐng)求方法上設(shè)置 @Validated,在修改users時(shí),校驗(yàn)參數(shù)不能為空集合

 @PostMapping("users")
    public Response<Void> users(@RequestBody @Validated({UpdateView.class}) UserReq userReq) {
        // to do something
        return RespUtil.success();
    }

6. 嵌套校驗(yàn)

同樣的我們用users舉例;如果我們想要對(duì)users中某個(gè)字段也進(jìn)行校驗(yàn),那么怎么實(shí)現(xiàn)呢?
也很簡(jiǎn)單,只需要再加一個(gè)@Valid

public class UserReq {
? ? private static final long serialVersionUID = 1L;
? ? /**
? ? ?* id
? ? ?*/
? ? @NotNull
? ? private Long id;
? ? /**
? ? ?* 用戶集合
? ? ?*/
? ? @NotEmpty(groups = {AddView.class, UpdateView.class})
? ? @Valid
? ? private List<User> users;
}

User內(nèi)字段設(shè)置

public class User {
? ? private static final long serialVersionUID = 1L;
? ? /**
? ? ?* id
? ? ?*/
? ? @NotNull
? ? private Long userId;
? ? /**
? ? ?* 姓名
? ? ?*/
? ? @NotBlank
? ? private String name;
}

這樣就實(shí)現(xiàn)了參數(shù)的嵌套校驗(yàn)+分組校驗(yàn)的組合。

當(dāng)然,在包javax.validation.constraints下還有很多其他注解來(lái)選擇支持不同場(chǎng)景的需要,比如@DecimalMax @DecimalMin @Email @Max @Min Negative等,這里僅列舉常用的幾個(gè)起到拋磚引玉的作用。

7. 請(qǐng)求header參數(shù)校驗(yàn)

有時(shí)候我們不單單需要校驗(yàn)body中參數(shù),還有可能需要校驗(yàn)header中參數(shù),比如常見(jiàn)的token啊、timestamp啊等等。

那就可以利用spring提供的@RequestHeader來(lái)實(shí)現(xiàn),用法也很簡(jiǎn)單

@PostMapping("login")
    public Response<Void> login(@RequestBody @Valid LoginReq loginReq,
                                @NotBlank @RequestHeader("token") String token) {
        // to do something
        return RespUtil.success();

這里我們就實(shí)現(xiàn)了對(duì)header參數(shù)token的判空處理。
后記:參數(shù)校驗(yàn)場(chǎng)景各種各樣,對(duì)于這些簡(jiǎn)單的使用,掌握好了還是能夠覆蓋大部分需求的;常用的必須掌握,不常用的我們需要知道,萬(wàn)一哪天遇到了,我們就知道在哪里去查現(xiàn)成的輪子可以使用;當(dāng)然,對(duì)于復(fù)雜的參數(shù)校驗(yàn),有可能需要您自定義注解實(shí)現(xiàn),或者通過(guò)過(guò)濾器等方式實(shí)現(xiàn)。不必拘泥于固定形式。一切以結(jié)果為導(dǎo)向。

到此這篇關(guān)于Springboot參數(shù)校驗(yàn)之分組校驗(yàn)、嵌套校驗(yàn)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Springboot 參數(shù)校驗(yàn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot整合FastDFS方法過(guò)程詳解

    SpringBoot整合FastDFS方法過(guò)程詳解

    這篇文章主要介紹了SpringBoot整合FastDFS方法過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 模仿百度紅包福袋界面實(shí)例代碼

    模仿百度紅包福袋界面實(shí)例代碼

    新年到新年到,紅包搶不停。在我搶紅包的時(shí)候意外的發(fā)現(xiàn)了百度的福袋界面挺不錯(cuò)的,于是抽時(shí)間專門寫篇文章來(lái)完成百度紅包界面吧
    2016-02-02
  • SpringBoot項(xiàng)目中Druid自動(dòng)登錄功能實(shí)現(xiàn)

    SpringBoot項(xiàng)目中Druid自動(dòng)登錄功能實(shí)現(xiàn)

    Druid是Java語(yǔ)言中最好的數(shù)據(jù)庫(kù)連接池,Druid能夠提供強(qiáng)大的監(jiān)控和擴(kuò)展功能,這篇文章主要介紹了SpringBoot項(xiàng)目中Druid自動(dòng)登錄功能實(shí)現(xiàn),需要的朋友可以參考下
    2024-08-08
  • Mybatis Generator Plugin悲觀鎖實(shí)現(xiàn)示例

    Mybatis Generator Plugin悲觀鎖實(shí)現(xiàn)示例

    本文將從悲觀鎖為例,讓你快速了解如何實(shí)現(xiàn)Mybatis Generator Plugin。文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 你真的知道Java中對(duì)象的銷毀嗎

    你真的知道Java中對(duì)象的銷毀嗎

    java自帶垃圾回收機(jī)制,會(huì)自動(dòng)識(shí)別內(nèi)存中不再會(huì)被使用的對(duì)象并將其銷毀,釋放內(nèi)存,下面這篇文章主要介紹了Java中對(duì)象銷毀的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • JAVA流控及超流控后的延遲處理實(shí)例

    JAVA流控及超流控后的延遲處理實(shí)例

    這篇文章主要介紹了JAVA流控及超流控后的延遲處理,以實(shí)例形式較為詳細(xì)的分析了Java進(jìn)行流量控制的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2014-12-12
  • Java實(shí)現(xiàn)修改圖片文件名的方法示例

    Java實(shí)現(xiàn)修改圖片文件名的方法示例

    在很多應(yīng)用中,用戶需要對(duì)文件進(jìn)行重命名操作,包括圖片文件,圖片文件的重命名操作可以是基于文件內(nèi)容、日期、用戶輸入等,本項(xiàng)目的目標(biāo)是實(shí)現(xiàn)一個(gè)Java程序,能夠修改圖片文件的文件名,并進(jìn)行簡(jiǎn)單的文件名處理,需要的朋友可以參考下
    2025-02-02
  • Java實(shí)現(xiàn)圖片模糊效果詳解

    Java實(shí)現(xiàn)圖片模糊效果詳解

    圖片模糊是圖像處理中的一種常見(jiàn)效果,它通過(guò)平均周圍像素的顏色來(lái)使圖像變得模糊,下面我們來(lái)看看如何使用Swing庫(kù)實(shí)現(xiàn)圖片模糊效果吧
    2025-02-02
  • 關(guān)于jpa?querydsl嵌套查詢demo

    關(guān)于jpa?querydsl嵌套查詢demo

    這篇文章主要介紹了關(guān)于jpa?querydsl?嵌套查詢demo,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java實(shí)現(xiàn)簡(jiǎn)單的遞歸操作方法實(shí)例

    Java實(shí)現(xiàn)簡(jiǎn)單的遞歸操作方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)簡(jiǎn)單的遞歸操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02

最新評(píng)論