精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

SpringBoot接口參數統一校驗

開發 架構
在進行單個參數校驗時,一定要在Controler類上加@Validated注解,否則校驗不會生效。

SpringBoot檢驗注解

@Null 限制只能為null。

@NotNull 限制必須不為null。

@NotEmpty 只作用于字符串類型,字符串不為空,并且長度不為0。

@NotBlank 只作用于字符串類型,字符串不為空,并且trim()后不為空串。

@AssertFalse 限制必須為false。

@AssertTrue 限制必須為true。

@DecimalMax(value) 限制必須為一個不大于指定值的數字。

@DecimalMin(value) 限制必須為一個不小于指定值的數字。

@Digits(integer,fraction) 限制必須為一個小數,且整數部分的位數不能超過integer,小數部分的位數不能超過fraction。

@Future 限制必須是一個將來的日期。

@Past 驗證注解的元素值(日期類型)比當前時間早。

@Max(value) 限制必須為一個不大于指定值的數字。

@Min(value) 限制必須為一個不小于指定值的數字。

@Pattern(value) 限制必須符合指定的正則表達式。

@Size(max,min) 限制字符長度必須在min到max之間。

@Email 驗證注解的元素值是Email,也可以通過正則表達式和flag指定自定義的email格式。

注意:

@NotNull 適用于任何類型被注解的元素必須不能與NULL。

@NotEmpty 適用于String Map或者數組不能為Null且長度必須大于0。

@NotBlank 只能用于String上面 不能為null,調用trim()后,長度必須大于0。

單個參數校驗

@RestController
@RequestMapping("validator/")
@Validated
public class ValidatorController {
@GetMapping("/add")
public String add(@NotNull(message = "address不能為空") String address) {
return "檢驗通過";
}
}

請求:127.0.0.1:8080/validator/add?address=中國。

返回:檢驗通過。

請求:127.0.0.1:8080/validator/add。

返回:address不能為空。

說明:在進行單個參數校驗時,一定要在Controler類上加@Validated注解,否則校驗不會生效。

實體類參數校驗

實體User類:

public class User {
@NotBlank(message = "請輸入名稱")
@Length(message = "名稱不能超過個 {max} 字符", max = 5)
public String name;

@NotNull(message = "請輸入年齡")
@Range(message = "年齡范圍為 {min} 到 {max} 之間", min = 1, max = 100)
public Integer age;

public String getName() {return name;}
public void setName(String name) {this.name = name;}
public Integer getAge() {return age;}
public void setAge(Integer age) {this.age = age;}
}

controller類:

@RestController
@RequestMapping("validator/")
public class ValidatorController {
@PostMapping("/add")
public String addUser(@RequestBody @Valid User user, BindingResult bindingResult) {
//查看所有字段是否驗證通過
if (bindingResult.hasErrors()) {
//返回第一條錯誤信息
return bindingResult.getAllErrors().get(0).getDefaultMessage();
}
return "檢驗通過";
}
}

執行如下:

說明:如果采用BindingResult方式來存儲異常結果,就必須自己來處理異常。即接口中有BindingResult參數,就必須使用要有上方7,8,9行代碼進行異常處理,否則程序會正常執行。

統一異常管理

實體User類,同上。controller類如下:

@RequestMapping("validator/")
public class ValidatorController {
@PostMapping("/add")
public String addUser(@Valid @RequestBody User user) {
return "檢驗通過";
}
}

執行結果:

這里沒有采用BindingResult來存儲異常,程序在這里會報錯。可以在這個地方增加統一異常管理。通過報錯信息可以知道需要對MethodArgumentNotValidException進行管理,代碼如下:

@RestControllerAdvice
public class ValidatedExceptionHander {
@ExceptionHandler(MethodArgumentNotValidException.class)
public String MethodArgumentNotValidHandler(MethodArgumentNotValidException exception) {
String exceptionInfo = exception.getBindingResult().getAllErrors().get(0).getDefaultMessage();
return exceptionInfo;
}
}

再次執行:

使用spring boot校驗器

檢驗器代碼:

@Component
public class ValidatorUtil implements ApplicationContextAware {
// 通過Spring獲得校驗器
private static Validator validator;

@Override
public void setApplicationContext(ApplicationContext applicationContext){
Validator validatorBean = applicationContext.getBean(Validator.class);
setValidator(validatorBean);
}

public static void setValidator(Validator validatorBean){
if (validatorBean instanceof LocalValidatorFactoryBean) {
validator = ((LocalValidatorFactoryBean) validatorBean).getValidator();
} else if (validatorBean instanceof SpringValidatorAdapter) {
validator = validatorBean.unwrap(Validator.class);
} else {
validator = validatorBean;
}
}

public static <T> void validate(T object){
Set<ConstraintViolation<T>> violationSet = validator.validate(object);
for (ConstraintViolation<T> violation : violationSet) {
throw new ValidationException(violation.getMessage());
}
}
}

統一異常管理:

@RestControllerAdvice
public class ValidatedExceptionHander {
@ExceptionHandler(value = ValidationException.class)
public String ValidationException(ValidationException exception) {
return exception.getMessage();
}
}

controller類如下:

@RestController
@RequestMapping("validator/")
public class ValidatorController {
@PostMapping("/add")
public String addUser(@RequestBody User user) {
ValidatorUtil.validate(user);
return "檢驗通過";
}
}

執行如下:

說明:這么做的好處是可以自由的對實體進行檢驗,與以上方式相比較為靈活。

分組校驗

同一個實體在不同的操作中的校驗方式是不同的,這就要用到分組校驗。比如實體User在新增操作時,id是沒有的,但是在更新操作時id又必須存在。通過下面例子來講解一下是如何實現的。

實體user:

public class User {
@NotNull(message = "id不能為空", groups = {User.UpdateGroup.class})
@Null(message = "id必須為空", groups = {User.InsertGroup.class})
public Integer id;

@NotBlank(message = "請輸入名稱")
@Length(message = "名稱不能超過個 {max} 字符", max = 5)
public String name;

@NotNull(message = "請輸入年齡")
@Range(message = "年齡范圍為 {min} 到 {max} 之間", min = 1, max = 100)
public Integer age;

public Integer getId() {return id;}
public void setId(Integer id) {this.id = id;}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public Integer getAge() {return age;}
public void setAge(Integer age) {this.age = age;}

public interface InsertGroup{}
public interface UpdateGroup{}
}

統一異常:

@RestControllerAdvice
public class ValidatedExceptionHander {
@ExceptionHandler(MethodArgumentNotValidException.class)
public String MethodArgumentNotValidHandler(MethodArgumentNotValidException exception) {
String exceptionInfo = exception.getBindingResult().getAllErrors().get(0).getDefaultMessage();
return exceptionInfo;
}
}

controller類:

@RestController
@RequestMapping("validator/")
public class ValidatorController {
@GetMapping("/update")
public String updateUser(@Validated(User.UpdateGroup.class) @RequestBody User user) {
return "更新成功";
}
@GetMapping("/insert")
public String insertUser(@Validated(User.InsertGroup.class) @RequestBody User user) {
return "保存成功";
}
}

執行如下:

@Validated和@Valid區別

@Validated 對@Valid 進行了二次封裝,但在分組、注解位置、嵌套驗證等功能上有所不同。

不同點

@Valid

@Validated

來源

是Hibernate validation 的 校驗注解

是 Spring Validator 的校驗注解,是 Hibernate validation 基礎上的增加版

注解位置

用在 構造函數、方法、方法參數 和 成員屬性上

用在 類、方法和方法參數上。但不能用于成員屬性

嵌套驗證

用在級聯對象的成員屬性上面

不支持

分組

無此功能

提供分組功能,可以在入參驗證時,根據不同的分組采用不同的驗證機制

責任編輯:姜華 來源: 今日頭條
相關推薦

2023-03-16 08:23:33

2022-05-30 08:03:06

后端參數校驗異常處理

2023-11-08 13:33:00

AOP技術信息

2021-05-18 09:25:54

SpringBoot參數校驗

2023-11-29 07:23:04

參數springboto

2011-07-19 14:38:06

jQuery Mobi

2020-02-04 18:42:53

充電接口歐盟蘋果

2024-05-29 08:12:55

接口參數格式

2022-05-03 10:43:43

SpringJava

2024-06-13 08:19:08

Controller接口參數

2024-10-28 08:32:22

統一接口響應SpringBoot響應框架

2024-08-01 09:10:03

2021-08-12 10:32:50

Spring Boot參數校驗分組校驗

2021-08-10 15:11:27

Spring Boot參數校驗

2021-11-10 10:03:18

SpringBootJava代碼

2022-05-07 10:09:01

開發Java日志

2020-03-10 13:13:15

程序員接口參數編程語言

2025-05-27 07:07:29

2019-09-29 10:23:09

APIJava編程語言

2022-03-28 14:23:26

HarmonyAI算法統一推理接口
點贊
收藏

51CTO技術棧公眾號

av影院在线| 亚洲精品无码专区| 亚州av乱码久久精品蜜桃| 欧美日韩二区三区| 久久成人福利视频| 飘雪影院手机免费高清版在线观看| 丝袜美腿成人在线| 欧美成人精品在线播放| 日韩精品人妻中文字幕有码| 偷拍视频一区二区三区| 成人欧美一区二区三区在线播放| 国产原创精品| 亚洲一区中文字幕永久在线| 一区二区精品| 久久精品国产亚洲精品| 亚洲精品乱码久久久久久不卡| 成人在线观看免费播放| 亚洲国产综合色| 亚洲三区四区| 99热这里精品| 视频一区在线视频| 久久免费视频网站| 欧美肥妇bbwbbw| 亚洲制服欧美另类| 精品日韩一区二区| 一起操在线视频| 午夜精品成人av| 婷婷综合另类小说色区| 懂色av一区二区三区四区五区| 色视频在线观看福利| 国产精品白丝av| 成人黄在线观看| 天天操天天干天天摸| 激情久久综合| 欧美夫妻性生活xx| 久草视频手机在线| 日韩精品一区二区久久| 亚洲欧美变态国产另类| 欧美无人区码suv| 波多野结衣一区二区三区免费视频| 欧美精品成人一区二区三区四区| 亚洲狼人综合干| 中文字幕乱码在线播放| 亚洲成人激情自拍| 国产美女在线一区| 日本小视频在线免费观看| 日韩毛片精品高清免费| 影音先锋欧美在线| 日本激情视频在线观看| 国产精品午夜在线| 性欧美精品一区二区三区在线播放| 黄色av网址在线免费观看| 久久综合丝袜日本网| 久久影院理伦片| 神马亚洲视频| 91麻豆6部合集magnet| 久久精品ww人人做人人爽| 婷婷久久久久久| 26uuu久久天堂性欧美| 麻豆精品蜜桃一区二区三区| 三级毛片在线免费看| 91美女精品福利| 美女精品国产| 国产精品麻豆一区二区三区| 欧美国产日本视频| 一区二区三区精品国产| a级影片在线| 亚洲一区二区在线播放相泽 | 在线观看日韩| 欧美黑人性视频| 国产 日韩 欧美 在线| 香蕉久久夜色精品| 国产精品高潮呻吟久久av野狼| 成人免费一区二区三区| 狠狠色狠狠色综合日日91app| 91亚洲国产精品| 人妻精品无码一区二区| 久久久一区二区三区捆绑**| 亚洲狠狠婷婷综合久久久| 国产在线观看a| 天天亚洲美女在线视频| www日韩在线观看| 久久69av| 国产丝袜一区二区三区免费视频| 亚洲毛片亚洲毛片亚洲毛片| 女主播福利一区| 欧美一级视频在线观看| 一区两区小视频| 国产成人一区在线| 欧美在线3区| 国产高清一区二区三区视频| 婷婷综合另类小说色区| 亚洲一区精品视频在线观看| 国产乱人伦丫前精品视频| 亚洲视频一区二区| 久草免费在线观看视频| 日韩黄色小视频| 99影视tv| 在线免费av网站| 亚洲成年人网站在线观看| 三级在线免费看| 白白在线精品| 久久久精品视频成人| 国产尤物在线视频| 国产一区二区三区日韩| 久久影院理伦片| 亚洲奶水xxxx哺乳期| 色成人在线视频| 久草免费资源站| 日韩电影一区| 欧美一区二区三区图| 99久久一区二区| 国产精品午夜免费| 欧美日韩亚洲一| 一区二区三区国产好| 中文字幕日韩精品在线| av资源免费观看| 国产美女精品一区二区三区| 日本免费高清一区| 欧美在线极品| 亚洲成人免费网站| 欧美成人一二三区| 另类小说视频一区二区| 91日本视频在线| 黄色美女网站在线观看| 欧美日韩免费看| 欧美激情一区二区三区p站| 99久久99久久精品国产片桃花 | 91成人精品在线| 久久精品视频在线| 中文字幕乱码一区二区| 国产亚洲人成网站| 久久久精品在线视频| 欧美午夜18电影| 久久免费视频网站| 日本韩国在线观看| 亚洲一区二区视频| 性一交一黄一片| 影音先锋成人在线电影| 成人av.网址在线网站| 成人高清在线| 欧美视频中文一区二区三区在线观看| brazzers精品成人一区| 欧美专区在线| 人偷久久久久久久偷女厕| 一区二区三区四区日本视频| 精品亚洲一区二区三区在线播放| 99热国产在线观看| 91视频你懂的| 免费黄色特级片| 狠狠色丁香婷婷综合影院| 国产精品都在这里| 电影av一区| 欧美日韩不卡视频| 亚洲不卡在线播放| 国产精品18久久久久久久久 | 美女诱惑一区二区| 亚洲欧美日韩精品在线| 深夜福利亚洲| 久久国产精品久久久| 亚洲精品无码久久久| 亚洲va在线va天堂| 中文字幕在线观看的网站| 久久高清免费观看| 亚洲精品中文综合第一页| a一区二区三区亚洲| 欧美另类暴力丝袜| 少妇人妻偷人精品一区二区| 色综合久久99| 你懂得在线观看| 国产成人综合精品三级| 国产午夜福利在线播放| 国内精品久久久久久久久电影网| 国产狼人综合免费视频| 最新黄网在线观看| 亚洲精品美女网站| 亚洲精品国产精品乱码视色| 亚洲三级电影网站| 久久久久9999| 久久国产精品色| 青春草国产视频| 欧美日韩中字| 粉嫩av免费一区二区三区| 吞精囗交69激情欧美| 久久成人这里只有精品| 特黄aaaaaaaaa真人毛片| 欧美在线999| 久青草视频在线观看| 国产亚洲自拍一区| 美女露出粉嫩尿囗让男人桶| 天堂精品中文字幕在线| 欧美日韩亚洲国产成人| 综合国产视频| 成人淫片在线看| 日韩久久一区二区三区| 欧美另类69精品久久久久9999| 国产小视频免费在线观看| 日韩精品中文字幕在线一区| 亚洲大尺度在线观看| 亚洲一区视频在线| 亚洲精品自拍视频在线观看| 91污片在线观看| 初高中福利视频网站| 日本一不卡视频| 秋霞无码一区二区| 欧美在线亚洲综合一区| 日本精品一区二区三区高清 久久| 91综合久久爱com| 国产精品自拍偷拍视频| 天堂av在线| 欧美精品xxx| 国产写真视频在线观看| 一色桃子一区二区| 亚洲日本在线播放| 欧美xxxxxxxx| 99视频在线观看免费| 精品视频色一区| 亚洲s码欧洲m码国产av| 午夜精品久久久| 欧美国产精品一二三| 1区2区3区精品视频| 国产成人一区二区在线观看| 99久久伊人精品| 男人添女人荫蒂国产| 精品一区免费av| 邪恶网站在线观看| 天堂成人国产精品一区| www.浪潮av.com| 亚洲久久一区| 草草视频在线免费观看| 欧美a级片网站| 久久精品在线免费视频| 99精品一区| 精品一区二区成人免费视频| 日本午夜一区| 欧美极品一区二区| 校花撩起jk露出白色内裤国产精品| 99一区二区| 国产精品白浆| 国产一区免费观看| 欧美美女在线直播| 国产在线一区二区三区四区| 久久精品福利| 久久99欧美| 日韩av网站在线免费观看| 精品伦精品一区二区三区视频| 精品亚洲免a| 久久精品久久精品国产大片| 校花撩起jk露出白色内裤国产精品| 久久久久久久久久久久久9999| 亚洲大片精品免费| 久久亚洲国产精品日日av夜夜| 亚洲永久精品唐人导航网址| 欧美中日韩免费视频| 精品国产99| 亚洲视频在线观看日本a| 日韩亚洲一区在线| 干日本少妇视频| 欧美日韩p片| 欧美在线一区视频| 美女精品一区| 国产又大又黄又猛| 国产一区91精品张津瑜| 国产无套精品一区二区三区| 99久久精品情趣| aaaaa级少妇高潮大片免费看| 久久精品一区二区三区av| 又色又爽的视频| 亚洲精品视频免费观看| 久久亚洲av午夜福利精品一区| 婷婷亚洲久悠悠色悠在线播放| 久久国产黄色片| 欧美三级日本三级少妇99| 国产日韩一级片| 亚洲国产黄色片| porn视频在线观看| 欧美成人免费在线观看| 天堂中文在线播放| 国产在线拍偷自揄拍精品| 我要色综合中文字幕| 麻豆久久久av免费| 一本精品一区二区三区| 黄网站欧美内射| 美女爽到高潮91| 丝袜熟女一区二区三区| 久久久久国产精品人| 91人妻一区二区三区蜜臀| 婷婷开心激情综合| 一区二区视频免费| 亚洲第一视频在线观看| av影片在线看| 午夜精品理论片| 自拍偷拍亚洲图片| 久久久久九九九| 欧美精品aa| 国产高潮免费视频| 不卡的av在线| 男人的午夜天堂| 日韩欧美在线视频日韩欧美在线视频 | 91国产福利在线| 国内爆初菊对白视频| 三级精品视频久久久久| 天堂在线中文网官网| 97se亚洲综合| 成人婷婷网色偷偷亚洲男人的天堂| 成人黄色大片网站| 激情综合网激情| 永久免费毛片在线观看| 黄色一区二区在线| 国产又黄又爽视频| 亚洲深夜福利网站| av白虎一区| 91丨九色丨国产| 97精品视频在线看| 日日摸天天爽天天爽视频| 成人的网站免费观看| 放荡的美妇在线播放| 欧美视频一区二| 精品久久av| 欧美在线视频播放| 国产成人福利av| 欧美黄色免费网址| 精品中文字幕一区二区小辣椒| 中文字幕被公侵犯的漂亮人妻| 亚洲成av人综合在线观看| www.av网站| 欧美精品在线看| 91丨精品丨国产| 在线综合视频网站| 日本视频中文字幕一区二区三区| 亚洲熟妇无码av| 欧美日韩国产专区| 五月婷婷激情在线| 久久久久久久久国产| 亚洲经典视频| 91精品国产毛片武则天| 国产米奇在线777精品观看| 日韩一卡二卡在线观看| 欧美日韩一区中文字幕| 91官网在线| 国产精品一区二区性色av| 日韩理论电影大全| 亚洲精品久久久中文字幕| 国产精品网站在线播放| 中文区中文字幕免费看| 综合激情国产一区| 日韩在线你懂得| 免费成人进口网站| 国产精品一级二级三级| 美女福利视频在线观看| 日韩欧美一区二区三区在线| 日本无删减在线| 国产一区二区精品在线| 亚洲一区二区三区四区五区午夜| 国产精品无码网站| 欧美天天综合色影久久精品| 欧美成人免费| 国产女人精品视频| 亚洲成人三区| 精品少妇人妻av一区二区三区| 亚洲mv大片欧洲mv大片精品| 日本韩国一区| 国产精品偷伦免费视频观看的| 四虎国产精品免费观看| 波多野结衣电影免费观看| 亚洲成人免费视频| 你懂的免费在线观看视频网站| 国产精品美女www爽爽爽视频| 97精品视频在线看| 国产精品一区二区在线免费观看| 午夜a成v人精品| 国产高清一区在线观看| 91九色精品视频| 亚洲精品麻豆| 超薄肉色丝袜一二三| 欧美日韩黄色影视| 欧美亚洲天堂| 美女主播视频一区| 精品在线免费视频| 日本亚洲欧美在线| 在线播放国产一区二区三区| 精品一区二区三区免费看| 日韩在线一级片| 中文字幕中文字幕在线一区| 好吊视频一二三区| 国产精品高潮视频| 亚洲婷婷在线| 中文天堂资源在线| 欧美zozozo| 四虎影视国产精品| 精品无码国模私拍视频| 中文久久乱码一区二区| 人妻91麻豆一区二区三区| 国产乱人伦真实精品视频| 在线看片欧美| 国产第一页精品| 亚洲精品国产精品乱码不99按摩| 一区二区三区无毛| 成人在线激情网| 亚洲一区电影777|