一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - springboot 參數(shù)格式校驗(yàn)操作

springboot 參數(shù)格式校驗(yàn)操作

2021-09-24 11:47taiguolaotu Java教程

這篇文章主要介紹了springboot 參數(shù)格式校驗(yàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springboot 參數(shù)格式校驗(yàn)

@Validated

字面意思校驗(yàn)

springboot 參數(shù)格式校驗(yàn)操作

@RequestBody

該注解不用多說,意思是接收為json格式的參數(shù)

@Validated

字面意思校驗(yàn), 需要配合@NotBlank 或者 @NotNull 注解才能生效

進(jìn)入到請(qǐng)求體參數(shù)中。

springboot 參數(shù)格式校驗(yàn)操作

springboot 參數(shù)注解校驗(yàn)

1.添加依賴

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-validation</artifactId>
  4. </dependency>
  1. package com.xl.annotation;
  2. import lombok.Data;
  3. import org.hibernate.validator.constraints.Length;
  4. import org.hibernate.validator.constraints.Range;
  5. import javax.validation.constraints.*;
  6. import java.math.BigDecimal;
  7. import java.util.Date;
  8. @Data
  9. public class User {
  10.  
  11. @NotNull(message = "ID不能為空")
  12. @Range(min = 1, max = 100, message = "ID必須在1到100之間")
  13. private Integer id;
  14.  
  15. @NotNull(message = "姓名不能為空")
  16. @Length(min = 2, max = 6, message = "姓名必須在2到6位之間")
  17. private String name;
  18.  
  19. @NotNull(message = "余額不能為空")
  20. @DecimalMax(value = "30.50", message = "余額不能超過30.5")
  21. @DecimalMin(value = "1.50", message = "余額不能低于1.5")
  22. private BigDecimal amount;
  23.  
  24. @NotNull(message = "生日不能為空")
  25. @Past(message = "生日必須是過去")
  26. private Date birthday;
  27.  
  28. @NotBlank(message = "郵箱不能為空")
  29. @Email(message = "郵箱格式不正確")
  30. private String email;
  31.  
  32. @NotBlank(message = "手機(jī)號(hào)不能為空")
  33. @Pattern(regexp = "^(((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(16[6])|(17[0135678])|(18[0-9])|(19[89]))\\d{8})$", message = "手機(jī)號(hào)格式錯(cuò)誤")
  34. private String phone;
  35. }

2.controller層

  1. package com.xl.annotation;
  2. import io.swagger.annotations.Api;
  3. import io.swagger.annotations.ApiOperation;
  4. import io.swagger.annotations.ApiParam;
  5. import org.springframework.validation.BindingResult;
  6. import org.springframework.validation.ObjectError;
  7. import org.springframework.validation.annotation.Validated;
  8. import org.springframework.web.bind.annotation.*;
  9. import javax.validation.ValidationException;
  10. import javax.validation.constraints.Max;
  11. import javax.validation.constraints.NotNull;
  12.  
  13. @RestController
  14. @Validated
  15. @Api(value = "手機(jī)驗(yàn)證",description = "手機(jī)驗(yàn)證")
  16. public class MobileController {
  17. @ApiOperation("手機(jī)驗(yàn)證")
  18. @RequestMapping("/phone")
  19. public String mobilePattern( Phone phone){
  20. return "chengg";
  21. }
  22. @PostMapping("/getUser")
  23. @ApiOperation("手機(jī)驗(yàn)證12")
  24. public String getUserStr( @NotNull(message = "name 不能為空")@RequestParam String name,
  25. @Max(value = 99, message = "不能大于99歲")@RequestParam Integer age) {
  26. return "name: " + name + " ,age:" + age;
  27. }
  28. /* @PostMapping("/getUser1")
  29. @ApiOperation("手機(jī)驗(yàn)證c")
  30. public String getUser(@RequestBody @Validated User user, BindingResult bindingResult) {
  31. validData(bindingResult);
  32. return "name: " + user.getName() + " ,age:" + user.getAge();
  33. }*/
  34. private void validData(BindingResult bindingResult) {
  35. if (bindingResult.hasErrors()) {
  36. StringBuffer sb = new StringBuffer();
  37. for (ObjectError error : bindingResult.getAllErrors()) {
  38. sb.append(error.getDefaultMessage());
  39. }
  40. throw new ValidationException(sb.toString());
  41. }
  42. }
  43.  
  44. @PostMapping("/test")
  45. @ApiOperation(value = "測(cè)試", notes = "")
  46. public String test(@ApiParam(name = "test", value = "參數(shù)", required = true) @Validated @RequestBody User test, BindingResult bindingResult) {
  47. validData(bindingResult);
  48. if(bindingResult.hasErrors()){
  49. String errorMsg = bindingResult.getFieldError().getDefaultMessage();
  50. return errorMsg;
  51. }
  52. return "參數(shù)驗(yàn)證通過";
  53. }
  54. }

3.自定義一個(gè)拋出異常類

  1. package com.xl.annotation;
  2. import org.springframework.http.HttpStatus;
  3. import org.springframework.web.bind.annotation.ExceptionHandler;
  4. import org.springframework.web.bind.annotation.ResponseStatus;
  5. import org.springframework.web.bind.annotation.RestControllerAdvice;
  6. import javax.validation.ConstraintViolation;
  7. import javax.validation.ConstraintViolationException;
  8. import javax.validation.ValidationException;
  9. import java.util.Set;
  10.  
  11. /**
  12. * 自定義驗(yàn)證拋出異常
  13. */
  14. @RestControllerAdvice
  15. public class GlobalExceptionHandler {
  16. @ExceptionHandler(ValidationException.class)
  17. @ResponseStatus(HttpStatus.BAD_REQUEST)
  18. public String handle(ValidationException exception) {
  19. if(exception instanceof ConstraintViolationException){
  20. ConstraintViolationException exs = (ConstraintViolationException) exception;
  21.  
  22. Set<ConstraintViolation<?>> violations = exs.getConstraintViolations();
  23. for (ConstraintViolation<?> item : violations) {
  24. //打印驗(yàn)證不通過的信息
  25. System.out.println(item.getMessage());
  26. }
  27. }
  28. return exception.getMessage();
  29. }
  30. }

4.加一個(gè)當(dāng)檢測(cè)第一個(gè)參數(shù)不合法時(shí)立即返回錯(cuò)誤不會(huì)繼續(xù)進(jìn)行校驗(yàn)

  1. package com.xl.annotation;
  2. import org.hibernate.validator.HibernateValidator;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. import javax.validation.Validation;
  6. import javax.validation.Validator;
  7. import javax.validation.ValidatorFactory;
  8.  
  9. @Configuration
  10. public class ValidatorConf {
  11. @Bean
  12. public Validator validator() {
  13. ValidatorFactory validatorFactory = Validation.byProvider( HibernateValidator.class )
  14. .configure()
  15. .failFast( true )
  16. .buildValidatorFactory();
  17. Validator validator = validatorFactory.getValidator();
  18. return validator;
  19. }
  20. }

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持我們。

原文鏈接:https://blog.csdn.net/taiguolaotu/article/details/118336396

延伸 · 閱讀

精彩推薦
  • Java教程Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程Java實(shí)現(xiàn)搶紅包功能

    Java實(shí)現(xiàn)搶紅包功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)搶紅包功能,采用多線程模擬多人同時(shí)搶紅包,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程升級(jí)IDEA后Lombok不能使用的解決方法

    升級(jí)IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級(jí),尋思已經(jīng)有好久沒有升過級(jí)了。升級(jí)完畢重啟之后,突然發(fā)現(xiàn)好多錯(cuò)誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java8中Stream使用的一個(gè)注意事項(xiàng)

    Java8中Stream使用的一個(gè)注意事項(xiàng)

    最近在工作中發(fā)現(xiàn)了對(duì)于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個(gè)非常重要的注意點(diǎn),所以這篇文章主要給大家介紹了關(guān)于Java8中S...

    阿杜7472021-02-04
  • Java教程xml與Java對(duì)象的轉(zhuǎn)換詳解

    xml與Java對(duì)象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對(duì)象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下...

    Java教程網(wǎng)2942020-09-17
  • Java教程20個(gè)非常實(shí)用的Java程序代碼片段

    20個(gè)非常實(shí)用的Java程序代碼片段

    這篇文章主要為大家分享了20個(gè)非常實(shí)用的Java程序片段,對(duì)java開發(fā)項(xiàng)目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
主站蜘蛛池模板: 日本美女xx| 精品久久久久久国产 | 国产99青草全福视在线 | 99re8在线精品视频免费播放 | 99资源在线观看 | 热99re久久精品精品免费 | 色中色破解版 | 男生操女生漫画 | 麻麻与子乱肉小说怀孕 | 暖暖视频高清图片免费完整版 | 国产在线伊人 | 草莓秋葵菠萝蜜绿巨人污 | 午夜精品久久久久久久99蜜桃i | 五月天婷婷网亚洲综合在线 | 小寡妇好紧进去了好大看视频 | 99久久久久国产精品免费 | 亚洲精品久久久成人 | 猫咪av| 精品国产一区二区三区在线 | 欧美一级乱妇老太婆特黄 | 九九热在线观看视频 | 国产午夜免费视频 | www.87福利| 欧美三级不卡视频 | 乳女教师欲乱动漫无修版动画3d | 久久九九精品国产自在现线拍 | 日本男男gaygays | 丰满大屁股美女一级毛片 | www.国产一区二区三区 | 欧美影院一区二区三区 | 福利片免费一区二区三区 | 成人福利免费视频 | 97就去干 | 美女被狂揉下部羞羞动漫 | 肉大捧一进一出视频免费播放 | 国产综合第一页 | 99热在这里只有精品 | 国产精品二区高清在线 | 欧美一区二区三区视视频 | 日韩精品久久不卡中文字幕 | 美女校花被调教出奶水 |