色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

SpringBoot整合Hibernate Validator實(shí)現(xiàn)參數(shù)驗(yàn)證功能

瀏覽:14日期:2023-05-11 08:38:14

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

一、xml引入Hibernate Validator

<!-- 驗(yàn)證器 --><dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.1.5.Final</version></dependency>

二、通過(guò)注解在實(shí)體類進(jìn)行參數(shù)校驗(yàn)

@Datapublic class UserModel { @NotNull(message = '用戶名稱不能為空!') private String userName; @NotNull(message = 'age不能為null!') @Range(min = 1, max = 888, message = '范圍為1至888') private Integer age; /** * 日期格式化轉(zhuǎn)換 */ @NotNull(message = '日期不能為null!') private Date date;}

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

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

三、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層這里只需要在實(shí)體類的前面加上@Valid注解,這個(gè)注解可以實(shí)現(xiàn)數(shù)據(jù)的驗(yàn)證。這里BindingResult是存儲(chǔ)了校驗(yàn)時(shí)的錯(cuò)誤信息,驗(yàn)證有誤時(shí)將錯(cuò)誤信息返回給前端。這里不使用BindingResult的時(shí)候,控制臺(tái)會(huì)報(bào)MethodArgumentNotValidException,這里可以通過(guò)自定義異常類來(lái)捕捉它,然后去掉BindingResult,以及難看的if判斷。

四、自定義異常類捕捉MethodArgumentNotValidException

@RestControllerAdvicepublic class GlobalExceptionAdvice { @ExceptionHandler(value = MethodArgumentNotValidException.class) public JsonData validException(MethodArgumentNotValidException e) { //驗(yàn)證post請(qǐng)求的參數(shù)合法性 MethodArgumentNotValidException notValidException = e; String msg = notValidException.getBindingResult().getFieldError().getDefaultMessage(); return JsonData.buildError(msg); }}

使用PostMan的測(cè)試結(jié)果如下:

SpringBoot整合Hibernate Validator實(shí)現(xiàn)參數(shù)驗(yàn)證功能

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

到此這篇關(guān)于SpringBoot整合Hibernate Validator實(shí)現(xiàn)參數(shù)驗(yàn)證功能的文章就介紹到這了,更多相關(guān)SpringBoot 參數(shù)驗(yàn)證 內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 草草影院ccyy免费看片 | 国产成人a毛片在线 | 欧美日韩精品一区二区三区视频播放 | 一级一级特黄女人精品毛片 | 综合久久久久久 | 九九在线精品视频播放 | 亚洲精品综合一区二区三区 | 国产精品综合久成人 | 国产理论视频在线观看 | 久久频这里精品99香蕉久 | 久久精品国产在爱久久 | 欧美一级毛片欧美一级无片 | 日本高清毛片视频在线看 | 性感毛片 | 在线视频日韩精品 | 久久精视频 | 99国产精品免费观看视频 | 欧美日韩国产在线观看一区二区三区 | 亚洲最新网址 | 亚洲精选在线 | 亚洲免费观看在线视频 | 亚洲天堂成人在线观看 | 欧美成一级 | 高清一区二区在线观看 | 欧美aaaaa激情毛片 | 韩国美女豪爽一级毛片 | 99久久综合精品国产 | a级毛片免费在线观看 | 亚洲美女色成人综合 | 国产欧美一区二区另类精品 | 波野多结衣在线观看 | 新版天堂中文资源官网 | 91精品国产91久久久久久 | 亚洲网在线观看 | 亚洲男人的天堂在线视频 | 中文字幕成人免费高清在线视频 | 国产亚洲一级精品久久 | 69凹凸国产成人精品视频 | 亚洲国产精品成人综合久久久 | 三级全黄的全黄三级三级播放 | 欧美特黄一级aa毛片 |