精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

久久天天躁狠狠躁夜夜躁2014| 色婷婷精品大视频在线蜜桃视频 | 岛国在线视频网站| 91丨九色丨尤物| 国产免费一区视频观看免费 | 欧美日韩影视| 精品一区二区免费在线观看| 97婷婷涩涩精品一区| 超碰人人人人人人人| 99精品在免费线中文字幕网站一区| 婷婷丁香久久五月婷婷| 亚洲资源在线网| 日韩一级免费视频| 免费一级欧美片在线观看| 欧美黑人又粗大| 在线观看亚洲大片短视频| 国产精品久av福利在线观看| 欧美伊人久久久久久久久影院| 国产精品国三级国产av| 国产高清美女一级毛片久久| 成人激情自拍| 在线免费不卡电影| 少妇人妻大乳在线视频| 好操啊在线观看免费视频| 久久一区二区三区四区| 成人在线资源网址| 91成人国产综合久久精品| 亚洲免费中文| 羞羞色国产精品| 玖玖爱免费视频| 久久精品国产亚洲夜色av网站 | 男人的天堂在线视频| 国产精品羞羞答答xxdd| 国产精品久久久av久久久| 日本视频免费在线| 欧美涩涩视频| 欧美精品生活片| 三上悠亚在线观看视频| 成人av动漫在线观看| 精品亚洲国产视频| 一起草在线视频| av综合网站| 欧美成人vps| 奇米777在线| 久久99成人| 91精品蜜臀在线一区尤物| 天堂在线中文在线| 自拍偷拍亚洲| 91精品综合久久久久久| 一个色综合久久| 日韩毛片网站| 4438x亚洲最大成人网| 日韩一级免费在线观看| 欧美黑人一区| 91高清在线观看| 国产免费视频传媒| 成人国产综合| 欧美日韩国产另类不卡| 日本不卡一区在线| 国产精品99久久免费| 7777女厕盗摄久久久| 污色网站在线观看| 国产aa精品| 欧美tk—视频vk| 国产chinese中国hdxxxx| 国产精品香蕉| 亚洲精品资源在线| 亚洲一区 欧美| 四季av一区二区三区免费观看| xvideos亚洲人网站| h色网站在线观看| 亚洲天堂男人| 青青a在线精品免费观看| 一级片视频在线观看| 秋霞影院一区二区| 成人亲热视频网站| 亚洲奶汁xxxx哺乳期| 97精品视频在线观看自产线路二| 蜜桃91精品入口| 日本在线免费| 亚洲午夜在线电影| av丝袜天堂网| 欧美片网站免费| 亚洲精品suv精品一区二区| 一卡二卡三卡四卡| 婷婷综合亚洲| 51精品在线观看| 亚洲综合精品视频| av在线一区二区三区| 神马影院一区二区三区| 在线āv视频| 色婷婷亚洲精品| 日本少妇一级片| 色综合综合网| 九九热精品在线| 69国产精品视频免费观看| 久久精品国产成人一区二区三区| 91免费版网站在线观看| 日本福利片高清在线观看| 国产精品丝袜久久久久久app| 91.com在线| 欧美91在线|欧美| 精品国产免费人成在线观看| 免费看91的网站| 伊人久久大香线蕉综合热线| 国产精品免费久久久| 懂色av成人一区二区三区| 中文字幕精品—区二区四季| www精品久久| 99er精品视频| 亚洲偷欧美偷国内偷| 麻豆视频在线观看| 美女视频网站久久| 国产另类第一区| av毛片在线免费| 在线视频你懂得一区二区三区| 91亚洲一线产区二线产区| 欧美亚洲国产激情| 9.1国产丝袜在线观看| 国产精品女同一区二区| 国产欧美精品一区二区三区四区| 免费特级黄色片| 99视频这里有精品| 国产亚洲a∨片在线观看| 日韩av电影网| 国产98色在线|日韩| 五月天色婷婷综合| 日本久久二区| 国产亚洲aⅴaaaaaa毛片| 免费av网站在线| 97精品久久久久中文字幕 | 夜夜精品视频| 成人欧美一区二区三区黑人免费| 老司机精品视频在线观看6| 欧美午夜精品久久久久久孕妇| aaaaa级少妇高潮大片免费看| 1024日韩| 国产另类自拍| 国产不卡123| 精品久久久久久久人人人人传媒| 成人免费毛片东京热| 极品少妇一区二区三区精品视频 | 欧美三区在线| 国产成人免费电影| 免费在线观看的电影网站| 日韩一区二区在线看片| 精品人妻伦九区久久aaa片| 精品一区二区精品| 伊人久久av导航| avtt久久| 欧美俄罗斯乱妇| 欧美 日韩 国产 在线| 亚洲午夜电影在线观看| 涩视频在线观看| 精品91在线| 精品综合久久| 国产免费不卡| 国产一区二区日韩精品欧美精品| 久久这里只有精品9| 国产精品污网站| 国产一区二区在线观看免费视频| 羞羞答答成人影院www| 91久久在线观看| 日本在线视频网址| 日韩大陆欧美高清视频区| 亚洲婷婷综合网| 国产精品美女一区二区三区| 成人不卡免费视频| 亚洲国内欧美| 欧美大香线蕉线伊人久久| 国产精品久久亚洲不卡| 色偷偷9999www| 午夜精品一区二区三| 亚洲成人精品一区二区| 少妇大叫太粗太大爽一区二区| 日本一不卡视频| 亚洲小说欧美另类激情| 国产精品x8x8一区二区| 2019中文字幕免费视频| 91在线品视觉盛宴免费| 91精品国产91久久久久久一区二区 | 国产精品福利片| 成人午夜在线影视| 亚洲精品videossex少妇| 亚洲精品国产精品乱码视色| 亚洲人成小说网站色在线| 最新国产精品自拍| 老司机午夜免费精品视频| 在线观看成人一级片| 欧美人妖视频| 成人免费黄色网| 久久青草伊人| 精品国产一区二区三区久久久狼| 国产91免费在线观看| 欧洲精品一区二区三区在线观看| 欧美极品视频在线观看| 国产亚洲精品免费| 91人妻一区二区| 麻豆精品在线视频| 日韩在线综合网| 91超碰成人| 日韩av电影免费在线观看| 日本一区精品视频| 国产精品最新在线观看| 两个人看的在线视频www| 久久中文久久字幕| 福利小视频在线观看| 亚洲国产精品va| 国产精品视频第一页| 日韩欧美国产成人| 欧美精品xxxxx| 国产精品无圣光一区二区| 三级黄色片网站| 成人黄色在线视频| 亚洲色图欧美自拍| 日本欧美韩国一区三区| 久久久999视频| 亚洲视频免费| 丰满人妻一区二区三区53号| 日韩成人a**站| 青青草原成人| 婷婷精品在线| 精品国产一区二区三区麻豆小说| 欧美精品三级在线| 成人日韩在线电影| 成人av色网站| 国产精品久久中文| 在线成人av观看| 777精品视频| 极品在线视频| 性色av一区二区三区红粉影视| 日本在线视频网址| 久久6精品影院| 91高清在线观看视频| 精品国模在线视频| 秋霞成人影院| 久久精品青青大伊人av| 麻豆视频在线| 精品国产欧美成人夜夜嗨| 在线免费看黄网站| 俺也去精品视频在线观看| 色综合久久影院| 日韩小视频在线观看| 免费观看在线黄色网| 自拍偷拍免费精品| 免费av在线网址| 精品国模在线视频| 中文在线手机av| 欧美激情视频一区二区| 免费污视频在线| 97色在线播放视频| 在线观看欧美日韩电影| 国产成人精品一区二区| 日韩久久一区二区三区| 国产精品久久久久77777| 欧美激情三区| 2014亚洲精品| 国产成人福利av| 欧美国产视频在线观看| 成人久久一区| 在线观看三级网站| 伊人影院久久| 男人揉女人奶房视频60分| 久热精品在线| www.国产视频.com| 国产成a人亚洲精| 久久久久麻豆v国产精华液好用吗 在线观看国产免费视频 | 26uuu久久噜噜噜噜| 日本韩国欧美| 91精品国产综合久久香蕉最新版| 国产精品3区| 精品无人区一区二区三区 | 国产91色综合久久免费分享| 天堂www中文在线资源| 久久在线观看免费| 国产福利在线导航| 亚洲一区二区三区在线播放| 日韩人妻无码一区二区三区99| 91黄色小视频| av在线亚洲天堂| 日韩精品在线看| 国产在线激情视频| 97在线日本国产| 四虎影视国产精品| 极品校花啪啪激情久久| 欧美一区2区| 日本免费a视频| 蜜桃av一区二区| 欧美激情一区二区三区p站| 国产偷国产偷亚洲高清人白洁| av激情在线观看| 欧美性猛xxx| www.国产麻豆| 宅男66日本亚洲欧美视频| 欧美性受ⅹ╳╳╳黑人a性爽| 国产99在线|中文| 视频精品一区二区三区| 亚洲aⅴ天堂av在线电影软件| 一区在线视频| xxxx在线免费观看| 2017欧美狠狠色| 久久精品99久久久久久| 欧美日韩在线观看一区二区 | 日韩在线 中文字幕| 欧美不卡123| 日本免费视频在线观看| 全球成人中文在线| jizz性欧美2| 精品一区二区成人免费视频| 久久最新视频| 最近中文字幕无免费| 亚洲激情图片一区| 中文字幕第315页| 亚洲精品在线视频| japanese色国产在线看视频| 成人h猎奇视频网站| 欧洲激情视频| 日av中文字幕| 91天堂素人约啪| 日本一区二区网站| 日韩欧美中文字幕公布| 男人资源在线播放| 国产精品h片在线播放| 天堂av一区二区三区在线播放| 2018中文字幕第一页| 国产成人综合亚洲网站| 午夜精品福利在线视频| 欧美日韩国产高清一区二区 | 97国产在线观看| ady日本映画久久精品一区二区| 老司机av福利| 国产在线精品一区二区三区不卡 | 综合一区在线| www.污网站| 亚洲三级视频在线观看| 一区二区三区免费观看视频| 一本色道久久综合狠狠躁篇怎么玩 | 色哟哟精品观看| 在线亚洲精品福利网址导航| 香蕉视频黄色片| 欧洲日韩成人av| 亚州国产精品| 99久久国产宗和精品1上映| 久久亚洲综合av| 小泽玛利亚一区二区三区视频| 亚洲午夜久久久久久久| 三上悠亚激情av一区二区三区| 久久艹中文字幕| 久久久久看片| 男人的天堂官网 | 99re精彩视频| 自拍偷拍亚洲激情| 国产普通话bbwbbwbbw| 欧美日韩成人网| 风间由美中文字幕在线看视频国产欧美| 国产欧美123| 99久久夜色精品国产网站| aaa人片在线| 一区二区欧美日韩视频| 中文字幕系列一区| 精品一区二区成人免费视频| 国产毛片精品国产一区二区三区| 欧美成人精品欧美一级| 精品剧情在线观看| jizz内谢中国亚洲jizz| 亚洲欧美日韩精品久久久| 国产精品99久久久久久久女警| 久久久久久久久久久久久久免费看| 亚洲福利视频二区| 你懂得影院夜精品a| 吴梦梦av在线| 99re热视频这里只精品| 欧美在线视频精品| 欧美乱妇40p| 私拍精品福利视频在线一区| 天天干在线影院| 亚洲精品国产精品乱码不99| 亚洲人视频在线观看| 国产精品一区二区三区在线播放 | 日本www在线播放| 国产精品日韩成人| 亚洲精品久久久久久无码色欲四季 | 国产高清无密码一区二区三区| 国产成人亚洲欧洲在线| 中文字幕精品久久久久| 4438全国亚洲精品观看视频| 久久精品午夜福利| 亚洲欧美乱综合| 欧美女v视频| 9a蜜桃久久久久久免费| 日韩激情视频在线观看| 国模无码国产精品视频| 日韩国产高清视频在线| **欧美日韩在线| 女人扒开屁股爽桶30分钟| 中文字幕在线免费不卡| 五月天婷婷在线观看| 成人美女免费网站视频| 亚洲欧美卡通另类91av| 久久久久久久黄色|