欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

我們由簡入深開始,一文搞定參數(shù)校驗!

1. 簡單判空

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

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

2. 參數(shù)長度校驗

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

長度5-20之間

3. 正則校驗

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

15或18位數(shù)字

4. 集合校驗

 @NotEmpty
    private List<User> users;

集合不能為空

5.分組校驗

分組校驗需要先定義好分組,比如

舉例,定義一個AddView類

public interface AddView {
}

針對上面的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;
}

通過配置groups使users在新增和修改的時候才會校驗。
在請求方法上設(shè)置 @Validated,在修改users時,校驗參數(shù)不能為空集合

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

6. 嵌套校驗

同樣的我們用users舉例;如果我們想要對users中某個字段也進(jìn)行校驗,那么怎么實現(xiàn)呢?
也很簡單,只需要再加一個@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;
}

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

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

7. 請求header參數(shù)校驗

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

那就可以利用spring提供的@RequestHeader來實現(xiàn),用法也很簡單

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

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

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

相關(guān)文章

  • SpringBoot整合FastDFS方法過程詳解

    SpringBoot整合FastDFS方法過程詳解

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

    模仿百度紅包福袋界面實例代碼

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

    SpringBoot項目中Druid自動登錄功能實現(xiàn)

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

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

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

    你真的知道Java中對象的銷毀嗎

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

    JAVA流控及超流控后的延遲處理實例

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

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

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

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

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

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

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

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

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

最新評論