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

SpringBoot整合Hibernate Validator實現參數驗證功能

 更新時間:2020年06月17日 08:28:56   作者:陳大帥哥Ray  
這篇文章主要介紹了SpringBoot整合Hibernate Validator實現參數驗證功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

在前后端分離的開發(fā)模式中,后端對前端傳入的參數的校驗成了必不可少的一個環(huán)節(jié)。但是在多參數的情況下,在controller層加上參數驗證,會顯得特別臃腫,并且會有許多的重復代碼。這里可以引用Hibernate Validator來解決這個問題,直接在實體類進行參數校驗,驗證失敗直接返回錯誤信息給前端,減少controller層的代碼量。

一、xml引入Hibernate Validator

<!-- 驗證器 -->
<dependency>
   <groupId>org.hibernate.validator</groupId>
   <artifactId>hibernate-validator</artifactId>
   <version>6.1.5.Final</version>
</dependency>

二、通過注解在實體類進行參數校驗

@Data
public class UserModel {

  @NotNull(message = "用戶名稱不能為空!")
  private String userName;

  @NotNull(message = "age不能為null!")
  @Range(min = 1, max = 888, message = "范圍為1至888")
  private Integer age;

  /**
   * 日期格式化轉換
   */
  @NotNull(message = "日期不能為null!")
  private Date date;
}

這里用到的參數校驗的注解有@NotNull和@Range,message是到時候我們返回給前端的信息,注解的具體意思如下:

  • @Null 被注釋的元素必須為null
  • @NotNull 被注釋的元素不能為null
  • @AssertTrue 被注釋的元素必須為true
  • @AssertFalse 被注釋的元素必須為false
  • @Min(value) 被注釋的元素必須是一個數字,其值必須大于等于指定的最小值
  • @Max(value) 被注釋的元素必須是一個數字,其值必須小于等于指定的最大值
  • @DecimalMin(value) 被注釋的元素必須是一個數字,其值必須大于等于指定的最小值
  • @DecimalMax(value) 被注釋的元素必須是一個數字,其值必須小于等于指定的最大值
  • @Size(max,min) 被注釋的元素的大小必須在指定的范圍內。
  • @Digits(integer,fraction) 被注釋的元素必須是一個數字,其值必須在可接受的范圍內
  • @Past 被注釋的元素必須是一個過去的日期
  • @Future 被注釋的元素必須是一個將來的日期
  • @Pattern(value) 被注釋的元素必須符合指定的正則表達式。
  • @Email 被注釋的元素必須是電子郵件地址
  • @Length 被注釋的字符串的大小必須在指定的范圍內
  • @NotEmpty 被注釋的字符串必須非空
  • @Range 被注釋的元素必須在合適的范圍內

三、controller層的方法加上@Valid注解

@PostMapping("/testPost")public Object testPost(@RequestBody @Valid UserModel userModel, BindingResult result){  
                          
		 if(result.hasErrors()){    for(ObjectError error:result.getAllErrors()){      
						                        return error.getDefaultMessage();   
					 } 
											    
				   }  
		return userModel;
}

controller層這里只需要在實體類的前面加上@Valid注解,這個注解可以實現數據的驗證。這里BindingResult是存儲了校驗時的錯誤信息,驗證有誤時將錯誤信息返回給前端。這里不使用BindingResult的時候,控制臺會報MethodArgumentNotValidException,這里可以通過自定義異常類來捕捉它,然后去掉BindingResult,以及難看的if判斷。

四、自定義異常類捕捉MethodArgumentNotValidException

@RestControllerAdvice
public class GlobalExceptionAdvice {

  @ExceptionHandler(value = MethodArgumentNotValidException.class)
  public JsonData validException(MethodArgumentNotValidException e) {
    //驗證post請求的參數合法性
    MethodArgumentNotValidException notValidException = e;
    String msg = notValidException.getBindingResult().getFieldError().getDefaultMessage();
    return JsonData.buildError(msg);
  }
}

使用PostMan的測試結果如下:

具體的代碼可以在我的gitee上面 查看 ,springboot_validator

到此這篇關于SpringBoot整合Hibernate Validator實現參數驗證功能的文章就介紹到這了,更多相關SpringBoot 參數驗證 內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringBoot為啥不用配置啟動類的實現

    SpringBoot為啥不用配置啟動類的實現

    這篇文章主要介紹了SpringBoot為啥不用配置啟動類的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • Java實現批量合并Excel工作表

    Java實現批量合并Excel工作表

    這篇文章主要為大家詳細介紹了如何使用Java快速實現批量Excel工作表的合并,文中的示例代碼代碼講解詳細,有需要的小伙伴可以跟隨小編一起學習一下
    2023-10-10
  • Java中的JPA實體關系:JPA一對一,一對多(多對一),多對多

    Java中的JPA實體關系:JPA一對一,一對多(多對一),多對多

    Java Persistence API(JPA)是Java平臺上的一個對象關系映射(ORM)規(guī)范,用于簡化數據庫操作,其中實體關系的映射是核心內容之一,本文將深入淺出地探討JPA中的三種基本實體關系類型:一對一、一對多、多對多,揭示常見問題、易錯點及其避免策略,希望能幫助大家
    2024-06-06
  • java郵件收發(fā)功能實現代碼

    java郵件收發(fā)功能實現代碼

    這篇文章主要為大家詳細介紹了java郵件收發(fā)功能實現代碼,具有一定的參考價值,感興趣的朋友可以參考一下
    2016-06-06
  • WebUploader+SpringMVC實現文件上傳功能

    WebUploader+SpringMVC實現文件上傳功能

    WebUploader是由Baidu團隊開發(fā)的一個簡單的以HTML5為主,FLASH為輔的現代文件上傳組件。這篇文章主要介紹了WebUploader+SpringMVC實現文件上傳功能,需要的朋友可以參考下
    2017-06-06
  • 總結Java常用加解密方法AES?SHA1?md5

    總結Java常用加解密方法AES?SHA1?md5

    這篇文章主要為大家介紹了Java常用加密方法AES?SHA1?md5總結及示例demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Spring教程之refresh()執(zhí)行邏輯淺析

    Spring教程之refresh()執(zhí)行邏輯淺析

    這篇文章主要給大家介紹了關于Spring教程之refresh()執(zhí)行邏輯的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • JavaTCP上傳圖片代碼實例

    JavaTCP上傳圖片代碼實例

    今天小編就為大家分享一篇關于JavaTCP上傳圖片代碼實例,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • 使用springBoot中的info等級通過druid打印sql

    使用springBoot中的info等級通過druid打印sql

    這篇文章主要介紹了使用springBoot中的info等級通過druid打印sql,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java實現堆排序以及時間復雜度的分析

    java實現堆排序以及時間復雜度的分析

    本文主要介紹了java實現堆排序以及時間復雜度,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12

最新評論