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

Spring Boot下如何校驗Spring MVC的請求參數及如何自定義校驗注解

開發 后端
Spring Boot提供了spring-boot-starter-validation 為Bean的校驗提供支持。我們可以通過一系列的校驗注解對Java Bean的屬性進行校驗。

在Java世界里,用于Java Bean的校驗的標準規范是JSR 380,又被稱作Bean Validation 2.0。而JSR 380的實現是Hibernate Validator。

Spring Boot提供了spring-boot-starter-validation 為Bean的校驗提供支持。我們可以通過一系列的校驗注解對Java Bean的屬性進行校驗。

本文將演示如何在對Spring MVC的請求參數進行校驗。當然它可以用在任何Java Bean的校驗上。

我們先新建一個演示項目,注意除了添加“Spring Web”依賴,還需要額外添加“Validation”依賴,從Spring Boot 2.3后,我們需要顯示添加此依賴。

常用JSR 380注解及如何校驗請求DTO

@Data
public class PersonDto {
@NotNull(message = "姓名不能為空")
private String name;
@Min(value = 18, message = "年紀最小18")
@Max(value = 60, message = "年紀最大60")
private Integer age;
@Email(message = "地址只能郵件")
private String email;
}

在DTO這個JavaBean上使用JSR 380注解,主要的注解有:

  • @NotNull :校驗注解的屬性不能為null
  • @AssertTrue : 校驗注解的屬性是true
  • @Size : 校驗大小范圍是在min和max之間,可以是String、Collection、Map,和數組屬性
  • @Min: 校驗注解的屬性最小不能小于設定的值
  • @Max: 校驗注解的屬性最大不能大于設定的值
  • @Pattern:校驗當前字符串屬性符合指定的正則表達式
  • @Email :校驗注解屬性是一個有效的郵件地址
  • @NotEmpty:校驗注解的屬性不能為null或者是empty,以是String、Collection、Map,和數組屬性
  • @NotBlank: 校驗文本屬性不為null或者空格
  • @Positive 和 @PositiveOrZero :校驗整數是正數/正數或0
  • @Negative 和 @NegativeOrZero :校驗整數是負數/負數或0
  • @Past and @PastOrPresent :校驗日期是過去/過去或現在
  • @Future and @FutureOrPresent :校驗日期是未來/未來或現在

注意上面的“message”中設置提示錯誤的信息。

控制器如何生效及如何校驗請求參數

@RestController
@RequestMapping("/people")
@Validated //2
public class PersonController {

@PostMapping
public String save(@Valid @RequestBody PersonDto personDto){ //1
return "OK";
}

@GetMapping("/findByAge") //2
public String findByAge(@Range(min = 18,max = 60, message = "年紀只能是18到60之間") Integer age){
return "OK";
}
}

1、校驗DTO,只需要在@RequestBody前加上注解“@Valid”,若出現校驗錯誤,拋出MethodArgumentNotValidException

2、檢驗請求中的參數(包括路徑變量),我們需要在類上注解“@Validated”才會生效,若出現校驗錯誤,拋出ConstraintViolationException。此處的@Range注解來自于Hibernate Validator,非標準JSR 380注解。

全局異常處理,給前端友好的校驗提示

當出現校驗錯誤時,Spring Boot只會拋出異常,所以為了讓前端更友好的處理這些異常,我們將對這些拋出的異常做出處理。

@RestControllerAdvice
public class CustomExceptionHandler {

@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(MethodArgumentNotValidException.class)
public Map<String, String> validationExceptionHandler(MethodArgumentNotValidException ex) {
Map<String, String> errors = new HashMap<>();
ex.getBindingResult().getAllErrors().forEach((error) -> {
String fieldName = ((FieldError) error).getField();
String errorMessage = error.getDefaultMessage();
errors.put(fieldName, errorMessage);
});
return errors;
}

@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(ConstraintViolationException.class)
public String validationExceptionHandler(ConstraintViolationException ex) {

return ex.getMessage();
}
}

驗證效果

運行應用,并違反校驗規則,如圖:

如何自定義檢驗注解

上面我們使用了JSR 380以及Hibernate的注解來校驗,這節我們演示如何自定義校驗注解。

我們通過定義個校驗注解“@Enumeration”和在“EnumerationValidator”類中定義校驗規則。

當前例子演示功能為:只能是枚舉里允許的值,否則校驗不通過。

  • 注解定義

@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = EnumerationValidator.class) //3
public @interface Enumeration {
String message() default "屬性只能從列表中來"; //1
String[] values(); //2
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}

1、message屬性定義錯誤信息

2、values設置可選的枚舉值

3、通過“@Constraint”指定校驗的類

注意:若沒有groups()和payload(),會報:javax.validation.constraintdefinitionexception: hv000074

  • 校驗邏輯類

public class EnumerationValidator implements ConstraintValidator<Enumeration,String> {
private String message;
private List<String> allowable;
@Override
public void initialize(Enumeration enumeration){
this.message = enumeration.message();
this.allowable = Arrays.asList(enumeration.values());
}

@Override
public boolean isValid(String value, ConstraintValidatorContext context){
return this.allowable.contains(value);
}
}

這里的邏輯很簡單,只需要可選的枚舉值包含被校驗的值即可。

  • 控制器中,當然也配合了類上注解的“@Validated”

@GetMapping("/findByGender")
public String findByGender(@Enumeration(values = {"男","女"}, message = "性別只能是男或女") String gender){
return "OK";
}

啟動驗證結果:

感謝對我的書《從企業級開發到云原生微服務:Spring Boot實戰》的支持。

參考資料:

https://medium.com/codex/spring-boot-create-custom-annotation-to-validate-request-parameter-dcf483539d90

https://www.baeldung.com/spring-boot-bean-validation

https://reflectoring.io/bean-validation-with-spring-boot/

文章出自:??愛科學的衛斯理??,如有轉載本文請聯系愛科學的衛斯理今日頭條號。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2024-10-14 17:18:27

2021-08-12 10:32:50

Spring Boot參數校驗分組校驗

2021-08-10 15:11:27

Spring Boot參數校驗

2023-12-04 07:27:54

SpringMVC方法

2025-03-10 01:00:00

Spring參數解析器

2025-03-13 07:33:46

Spring項目開發

2021-08-13 08:36:15

SpringMVC自定義

2025-05-27 07:07:29

2025-09-26 05:00:00

2022-06-28 14:57:09

FormatterSpring

2017-08-03 17:00:54

Springmvc任務執行器

2022-03-07 07:33:24

Spring自定義機制線程池

2020-11-25 11:20:44

Spring注解Java

2025-05-15 07:11:51

2018-07-06 15:58:34

SpringSchemaJava

2023-10-07 14:49:45

2022-06-27 08:16:34

JSON格式序列化

2023-09-19 22:41:30

控制器HTTP

2023-10-23 08:18:50

掃描SpringBean

2021-10-22 14:50:23

Spring BootJava
點贊
收藏

51CTO技術棧公眾號

99riav视频在线观看| 精品久久无码中文字幕| 精品盗摄女厕tp美女嘘嘘| 欧美色道久久88综合亚洲精品| 麻豆精品蜜桃一区二区三区| 一级久久久久久| 亚洲色图欧美| 日韩av有码在线| 色一情一区二区三区| 182tv在线播放| 久久久久久久电影| 91网免费观看| 男操女视频网站| 国内在线观看一区二区三区| 国产婷婷成人久久av免费高清| 手机在线成人免费视频| 少妇高潮一区二区三区喷水| 成人av集中营| 亚洲一区二区三区在线看 | 亚洲高清在线一区| 欧美视频13p| 国产小视频免费| 国产高清视频免费最新在线| 国产乱理伦片在线观看夜一区| 青青草99啪国产免费| 日韩欧美国产成人精品免费| 亚洲成人一品| 亚洲国产高清高潮精品美女| 一本色道久久亚洲综合精品蜜桃| 123区在线| 亚洲品质自拍视频网站| 麻豆av一区| 欧美性猛交 xxxx| 蜜臀久久99精品久久久久宅男| 久久久久国产精品一区| 懂色av粉嫩av蜜臀av一区二区三区| 校花撩起jk露出白色内裤国产精品| 911精品产国品一二三产区| 国产极品尤物在线| 色呦呦呦在线观看| 亚洲色欲色欲www| 亚洲国产精品一区二区第一页| 视频三区在线观看| 成人一区在线看| 91福利入口| 一区二区三区午夜| 欧美aaaaa成人免费观看视频| 国外视频精品毛片| 精品少妇爆乳无码av无码专区| 欧美电影三区| 神马国产精品影院av| 91精品啪在线观看国产| 日韩欧美一级| 欧美一级生活片| 精品国产鲁一鲁一区二区三区| 国产伊人久久| 欧美精品日韩一区| 三区视频在线观看| 久久gogo国模啪啪裸体| 制服.丝袜.亚洲.另类.中文| 中文字幕 91| 日本精品久久| 5月丁香婷婷综合| 日韩欧美中文在线视频| 日韩在线电影| 在线成人免费观看| 在线观看你懂的视频| 一区二区三区视频免费视频观看网站| 在线综合亚洲欧美在线视频 | 成人久久18免费网站麻豆| 成人av中文| 天堂在线视频免费| 久久久久久久久伊人| 亚洲高清乱码| 1区2区在线观看| 亚洲午夜精品在线| 日本三级免费网站| 成人国产一区| 日韩免费成人网| 免费黄色三级网站| jlzzjlzz亚洲女人| 美女av一区二区| 免费在线观看黄网站| 丝袜美腿亚洲综合| 成人网中文字幕| 日韩在线视频观看免费| 久久夜色精品国产欧美乱极品| 欧美精品一区在线| 免费网站成人| 亚洲成在线观看| 日韩高清第一页| 精品资源在线| 日韩中文在线中文网在线观看| 欧美色图亚洲天堂| 久久资源在线| 99久热re在线精品视频| 黄色免费在线播放| 亚洲精品国产第一综合99久久 | 亚洲小说欧美另类激情| 色呦呦久久久| 欧美在线free| 国产免费a级片| 国产中文字幕一区二区三区| 不卡毛片在线看| 黄色一级视频免费看| 国产资源在线一区| 久久精品magnetxturnbtih| 69久久精品| 性做久久久久久免费观看| 亚洲综合日韩欧美| 欧美激情极品| 欧美日韩国产91| 亚洲 小说区 图片区| 成人动漫一区二区三区| 在线免费观看成人网| 性欧美18xxxhd| 日韩一级高清毛片| 国产精品久久免费观看| 亚洲激情午夜| 91手机在线视频| 九色porny丨首页在线| 色94色欧美sute亚洲线路一久| 成人啪啪18免费游戏链接| 91麻豆国产自产在线观看亚洲| 2018日韩中文字幕| 高h放荡受浪受bl| 亚洲女同女同女同女同女同69| 99视频精品免费| 亚洲人成网亚洲欧洲无码| 久久久久久久久久久免费 | 亚洲成人教育av| 欧美爱爱免费视频| 激情伊人五月天久久综合| 日韩一区二区三区高清| 亚洲精品一区| 亚洲精品天天看| 日韩精品人妻中文字幕| 成人激情小说网站| 日韩精品久久一区二区| 日韩一区网站| 美女国内精品自产拍在线播放| 亚洲一级av毛片| 国产精品美女久久久久aⅴ | 一区二区三区久久精品| 国产免费a视频| 国产日韩欧美综合在线| 人妻内射一区二区在线视频| 四虎884aa成人精品最新| 97视频在线观看免费| 三级视频在线看| 亚洲福利视频导航| 少妇激情一区二区三区视频| 亚洲国产欧美国产综合一区| 国产传媒一区二区三区| 国产天堂在线播放视频| 欧美成人精精品一区二区频| 国产在线观看免费av| 不卡视频一二三四| 日韩人妻精品无码一区二区三区| 亚洲综合福利| 国产精品美女久久久久久免费| 成人欧美亚洲| 3751色影院一区二区三区| 国产真实乱在线更新| 国产盗摄视频一区二区三区| 国产精品三级一区二区| 欧美爱爱网站| 国产91热爆ts人妖在线| 亚洲成人三级| 日韩欧美国产电影| 影音先锋亚洲天堂| 久久精品夜色噜噜亚洲a∨| 中文久久久久久| 一区二区蜜桃| 精品婷婷色一区二区三区蜜桃| 浪潮色综合久久天堂| 日日狠狠久久偷偷四色综合免费| 国产99视频在线| 日韩欧美在线视频日韩欧美在线视频 | av一本久道久久综合久久鬼色| 国产极品在线视频| 91视频综合| 国产伦精品一区二区三区高清| 97se综合| 欧美理论电影在线观看| 深夜福利视频在线观看| 欧美日韩国产一二三| 国产一级淫片免费| 国产精品久久久久久久久久久免费看| 久久黄色一级视频| 日韩中文字幕不卡| 国产黄色激情视频| 欧美日韩国产免费观看视频| 99久热re在线精品视频| 欧美不卡高清一区二区三区| 欧美人交a欧美精品| 日韩黄色影片| 欧美成人a∨高清免费观看| 无码人妻丰满熟妇精品区| 亚洲欧美成aⅴ人在线观看| www.av欧美| 懂色av一区二区三区蜜臀| 日韩一级理论片| 99精品免费视频| 成年人视频大全| 欧美xxav| 欧美日韩一区综合| 国产精品成人自拍| 成人有码在线播放| 无人区在线高清完整免费版 一区二| 久久艳片www.17c.com| 国产中文字幕在线| 精品中文视频在线| 欧美 日韩 国产 在线| 欧美一区二区三区思思人| 激情视频网站在线观看| 亚洲一区自拍偷拍| 我要看一级黄色录像| 国产无一区二区| 一起草在线视频| 丰满少妇久久久久久久| www激情五月| 老色鬼精品视频在线观看播放| 免费无码av片在线观看| 亚洲国产婷婷| av无码久久久久久不卡网站| 久久久久久美女精品| 亚洲欧美日韩另类精品一区二区三区| 国产成人三级| 欧美一进一出视频| 猛男gaygay欧美视频| 久久久久se| 首页亚洲中字| 美乳视频一区二区| 日韩在线你懂的| 久久精品国产一区二区三区日韩| 91精品丝袜国产高跟在线| 不卡日韩av| 亚洲午夜精品| 国产免费高清一区| 女人抽搐喷水高潮国产精品| 国产一区二区三区四区五区在线| 风间由美中文字幕在线看视频国产欧美| 99成人在线| 亚洲在线观看视频| 久久中文字幕一区二区| 成人xvideos免费视频| 91国产一区| 91成人免费在线观看| 99精品中文字幕在线不卡 | 日韩欧美天堂| 看高清中日韩色视频| 久久99国内| 五月天亚洲综合情| 国产精品久久久久久| 欧美性受黑人性爽| 国产精品黄色| 男人天堂网视频| 日本不卡在线视频| www.久久久久久久久久久| 国产精品一区不卡| 国产chinese中国hdxxxx| 91香蕉视频在线| www亚洲色图| 亚洲色图.com| 久久精品亚洲无码| 91久久精品一区二区| 中文 欧美 日韩| 日韩亚洲欧美一区二区三区| 免费看日韩av| 亚洲欧美中文日韩在线v日本| 91露出在线| 久久久久久一区二区三区| 国产夫妻在线播放| 国产精品欧美一区二区三区奶水| 精品视频一区二区三区在线观看| 国产精品永久入口久久久| 亚洲专区视频| 日日噜噜夜夜狠狠久久丁香五月| 日韩网站在线| 国产色视频在线播放| 国产不卡在线一区| 精品无码国产污污污免费网站 | gogo大尺度成人免费视频| 国产偷久久久精品专区| 国产探花一区二区| japanese在线播放| 日韩中文欧美在线| 成人做爰69片免费| 国产精品美女久久久久av爽李琼| 久久久精品国产sm调教| 欧洲精品在线观看| 高清一区二区三区四区| 在线观看日韩欧美| 超碰在线cao| 91免费在线视频网站| 色橹橹欧美在线观看视频高清| 最近看过的日韩成人| 久久不射网站| 欧美激情一区二区三区p站| 国产精品久久久久久久久免费相片| 久久久久黄色片| 欧美精品高清视频| 欧美伦理影视网| 久久免费国产视频| 成人激情久久| 视频一区二区综合| 香蕉久久夜色精品国产| 日本成人在线免费| 日韩理论片网站| 国产精品午夜一区二区| 日韩h在线观看| 色呦呦呦在线观看| 91久久极品少妇xxxxⅹ软件| 成人同人动漫免费观看| 干日本少妇首页| 成人妖精视频yjsp地址| 成人免费视频网站入口::| 欧美视频日韩视频在线观看| 涩爱av在线播放一区二区| 久久琪琪电影院| 欧州一区二区三区| 永久免费在线看片视频| 精久久久久久久久久久| 中文字幕黄色网址| 91黄视频在线| 韩日视频在线| 国产精品成人在线| 国产欧美日韩精品一区二区三区| 怡红院av亚洲一区二区三区h| 国产69精品久久久久777| 小泽玛利亚一区二区免费| 欧美三级日韩三级| 国产在线视频网| 国产精品99免视看9| 亚洲宅男一区| 99草草国产熟女视频在线| www国产亚洲精品久久麻豆| 日本一区二区不卡在线| 欧美va亚洲va香蕉在线| 免费网站在线观看人| 古典武侠综合av第一页| 欧美日韩亚洲一区| 中文字幕在线观看91| 亚洲第一综合色| 天堂中文资源在线观看| 97香蕉超级碰碰久久免费软件| 色婷婷av一区二区三区丝袜美腿| www一区二区www免费| 久久午夜电影网| 欧美国产一级片| 日韩在线国产精品| 国产美女亚洲精品7777| 91国在线高清视频| 9人人澡人人爽人人精品| 亚洲日本视频在线观看| 亚洲香蕉在线观看| 色999久久久精品人人澡69| 潘金莲一级淫片aaaaaa播放1| 国产大陆a不卡| 国产 欧美 日韩 在线| 亚洲香蕉成视频在线观看| 久久亚洲国产精品尤物| 麻豆视频传媒入口| 99视频热这里只有精品免费| 中文字幕av影院| 日韩少妇与小伙激情| 亚洲日本视频在线| 国产无套内射久久久国产| 国产精品美女久久福利网站| 精品国产无码一区二区| 国产91精品青草社区| 波多野结衣在线观看一区二区三区| 91pony九色| 黑人精品xxx一区一二区| 岛国最新视频免费在线观看| 91精品在线观| 在线亚洲成人| 国产天堂av在线| 国产视频久久久久| 伊人久久大香| 爱福利视频一区二区| 自拍偷拍国产亚洲| 视频国产一区二区三区| 成人激情在线观看| 亚洲麻豆一区| 日本精品在线免费观看| 亚洲精品国精品久久99热一| 欧美激情福利| 欧美私人情侣网站| 亚洲精品ww久久久久久p站| 裸体xxxx视频在线| 99在线视频播放| 看国产成人h片视频| 欧美精品亚洲精品日韩精品| 视频一区视频二区国产精品| 牛牛影视一区二区三区免费看| 制服丝袜中文字幕第一页 | 亚洲第一区第二区第三区| 欧美日韩国产中字|