日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

詳解Java后端優(yōu)雅驗證參數(shù)合法性

瀏覽:34日期:2022-08-16 17:26:15

1、首先創(chuàng)建一個測試實體類Person,并攜帶如上注解,其注解的作用描述在message

package com.clickpaas.pojo;import com.fasterxml.jackson.annotation.JsonFormat;import lombok.Data;import org.hibernate.validator.constraints.Length;import org.hibernate.validator.constraints.Range;import javax.validation.constraints.*;import java.math.BigDecimal;import java.util.Date;import java.util.List;/** * @author 方延杰 * @version 1.0 * @since 2020/12/10 9:04 下午 */@Datapublic class Person { @Null(message = 'death必須為null') private String death; @AssertTrue(message = 'bool必須為true') private boolean bool; @AssertFalse(message = 'fal必須為false') private boolean fal; @Min(value = 1, message = 'min必須為數(shù)字,其值大于或等于指定的最小值') private Integer min; @Max(value = 10, message = 'max必須為數(shù)字,其值小于或等于指定的最大值') private Integer max; @DecimalMin(value = '1', message = 'minDeci最小不能小于1') private BigDecimal minDeci; @DecimalMax(value = '10', message = 'maxDeci最大不能大于10') private BigDecimal maxDeci; @Size(min = 1, max = 2, message = 'list集合的長度最小不能小于1,最大不能大于2') private List<Object> list; @Digits(integer = 4, fraction = 2, message = 'digits整數(shù)位不能超過4個,小數(shù)位不能超過2個') private BigDecimal digits; /** * 將前臺傳來的日期數(shù)據(jù)映射到此字段 */ @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = 'yyyy-MM-dd HH:mm:ss', timezone = 'GMT+8') @Past(message = 'past必須為過去的日期') private Date past; @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = 'yyyy-MM-dd HH:mm:ss', timezone = 'GMT+8') @Future(message = 'future必須為將來的日期') private Date future; @Pattern(regexp = '^1[3|4|5|7|8][0-9]{9}$', message = 'phone必須符合正則表達(dá)式') private String phone; @Email(message = 'email必須是郵箱格式') private String email; @Length(min = 1, max = 2, message = 'length長度最小不能小于1,最大不能大于2') private String length; @NotEmpty(message = 'id不能為null,長度大于0') private String id; @Range(min = 1, max = 12, message = 'month最小不能小于1,最大不能大于12') private Integer month; @NotBlank(message = 'name不能為null,字段串長度大于0(限字符串)') private String name;}

2、封裝返回響應(yīng)體

package com.clickpaas.response;import lombok.AllArgsConstructor;import lombok.Data;/** * @author 方延杰 * @version 1.0 * @since 2019/7/3 4:32 下午 */@Data@AllArgsConstructorpublic class CodeMsg { private int code; private String msg; /** * 失敗 */ public static CodeMsg SERVER_ERROR = new CodeMsg(500, '服務(wù)端異常');}

package com.clickpaas.response;import lombok.AllArgsConstructor;import lombok.Data;/** * @author 方延杰 * @version 1.0 * @since 2019/7/3 4:35 下午 */@Data@AllArgsConstructorpublic class Result<T> { /** * 返回狀態(tài)碼 除200其余全部失敗 */ private int code; /** * 返回信息 除success其余全部失敗 */ private String msg; /** * 泛型數(shù)據(jù) */ private T data; /** * 成功時返回的類型 * * @param data 數(shù)據(jù) * @param <T> 泛型 * @return 泛型數(shù)據(jù) */ public static <T> Result<T> success(T data) { return new Result<>(200, 'success', data); } public static <T> Result<T> fail(CodeMsg codeMsg) { return new Result<>(codeMsg); } private Result(CodeMsg codeMsg) { if (codeMsg == null) { return; } this.code = codeMsg.getCode(); this.msg = codeMsg.getMsg(); }}

3、創(chuàng)建使用增強(qiáng)器攔截并返回異常信息

package com.clickpaas.config;import com.clickpaas.response.CodeMsg;import com.clickpaas.response.Result;import org.springframework.web.bind.MethodArgumentNotValidException;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.RestControllerAdvice;import javax.servlet.http.HttpServletRequest;import java.util.Objects;/** * @author 方延杰 * @version 1.0 * @since 2018/12/10 4:59 下午 */@RestControllerAdvicepublic class GlobalExceptionInterceptor { @ExceptionHandler(value = MethodArgumentNotValidException.class) public Result<Object> exceptionHandler(HttpServletRequest request, Exception e) { String errMsg = '處理失敗'; if (e instanceof MethodArgumentNotValidException) { // 拿到參數(shù)校驗具體異常信息 errMsg = Objects.requireNonNull(((MethodArgumentNotValidException) e).getBindingResult().getFieldError()).getDefaultMessage(); } return Result.fail(new CodeMsg(500, errMsg)); }}

4、創(chuàng)建控制層測試

package com.clickpaas.controller;import com.clickpaas.pojo.Person;import org.springframework.validation.annotation.Validated;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RestController;/** * @author 方延杰 * @version 1.0 * @since 2020/12/10 9:03 下午 */@RestControllerpublic class ValidController { @PostMapping('/valid') public String valid(@Validated @RequestBody Person person) { return 'success'; }}

5、測試符合驗證請求體訪問,請求體如下:

{ 'death':null, 'bool':true, 'fal':false, 'min':1, 'max':10, 'minDeci':1, 'maxDeci':10, 'list':[ {},{} ], 'digits':1144.12, 'past':'2020-10-01 10:00:00', 'future':'2022-10-01 10:00:00', 'phone':'15900445584', 'email':'yanjie.fang@clickpaas.com', 'length':'ab', 'id':' ', 'name':'a'}

詳解Java后端優(yōu)雅驗證參數(shù)合法性

6、故意修改不符合驗證的數(shù)據(jù)

詳解Java后端優(yōu)雅驗證參數(shù)合法性

7、如果想做整體驗證,如下:

package com.clickpaas.uitl;import javax.validation.ConstraintViolation;import javax.validation.Validation;import javax.validation.Validator;import java.util.List;import java.util.Set;import java.util.stream.Collectors;/** * Bean整體校驗工具類 * * @author 方延杰 * @version 1.0 * @since 2020/12/10 10:08 下午 */public class ValidatorUtils { private static final Validator VALIDATOR = Validation.buildDefaultValidatorFactory().getValidator(); /** * Bean整體校驗,有不合規(guī)范,拼接message */ public static String validate(Object obj, Class<?>... groups) { StringBuilder errorMessage = new StringBuilder(); Set<ConstraintViolation<Object>> resultSet = VALIDATOR.validate(obj, groups); if (resultSet.size() > 0) { //如果存在錯誤結(jié)果,則將其解析并進(jìn)行拼湊后異常拋出 List<String> errorMessageList = resultSet.stream().map(ConstraintViolation::getMessage).collect(Collectors.toList()); errorMessageList.forEach(o -> errorMessage.append(o).append(';')); } return errorMessage.toString(); }}

8、整體測試類

詳解Java后端優(yōu)雅驗證參數(shù)合法性

到此這篇關(guān)于詳解Java后端優(yōu)雅驗證參數(shù)合法性的文章就介紹到這了,更多相關(guān)Java 驗證參數(shù)合法性內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
sm捆绑调教国产免费网站在线观看| 六月婷婷综合| 亚洲福利精品| a国产在线视频| zzzwww在线看片免费| 成人国产综合| 国产精品伦理久久久久久| 日韩成人综合| 久久黄色影院| 91精品二区| 首页亚洲欧美制服丝腿| 蜜桃视频免费观看一区| 亚洲有吗中文字幕| 日韩在线电影| 国产精品久久久久毛片大屁完整版| 日本国产亚洲| 国产福利资源一区| 精品一区二区三区免费看| 国产不卡一区| 久久精品国产68国产精品亚洲| 国产在线不卡| 蜜桃久久av一区| 日本不卡高清| 国产精品午夜一区二区三区| 久久精品网址| 久久国产电影| 视频在线观看一区二区三区| 日韩国产91| 国产+成+人+亚洲欧洲在线| 亚洲www啪成人一区二区| 色88888久久久久久影院| 日韩午夜电影| 日本色综合中文字幕| 久久亚洲不卡| 日韩和欧美一区二区| 国产精品久久久久久久久久久久久久久 | 欧美日韩精品一区二区三区在线观看| 蜜桃久久久久久久| 久久国产精品美女| 久久精品国内一区二区三区| 福利一区二区三区视频在线观看| 视频一区二区中文字幕| 91大神在线观看线路一区| 国产毛片一区| 国产伦精品一区二区三区千人斩| 久久久国产精品入口麻豆| 欧美性感美女一区二区| 亚洲精品中文字幕乱码| 亚洲欧美日韩一区在线观看| 麻豆视频久久| 美女国产精品久久久| 成人免费电影网址| 国产69精品久久| 国产一区二区色噜噜| 亚洲永久av| 日韩成人精品一区| 韩日一区二区| 天堂va在线高清一区| 一本综合精品| 欧美一区网站| 亚洲高清av| 黑丝一区二区| 国产午夜一区| 99精品小视频| 日韩av字幕| 国内亚洲精品| 国产精品久久久久久久久久久久久久久 | 国产精品呻吟| 免费的成人av| 久久男人天堂| 欧美一级二区| 国产视频欧美| 91亚洲成人| 97久久中文字幕| 亚洲精品成人| 日本一区二区高清不卡| 日本免费新一区视频| 99久精品视频在线观看视频| 国产毛片久久久| 久久午夜视频| 亚洲午夜一级| 国精品产品一区| 欧美视频二区| 在线亚洲精品| 91看片一区| 卡一卡二国产精品| 国产免费av国片精品草莓男男| 首页欧美精品中文字幕| 欧美不卡高清| 日韩国产一区二区| 国产精品1区| 亚洲精品欧洲| 亚洲成人精选| 欧美成人a交片免费看| 国产精品久一| 日韩不卡在线观看日韩不卡视频 | 亚洲视频综合| 国产一区二区色噜噜| 国产日本精品| 免费久久精品视频| 欧美jjzz| 国产99久久| 香蕉视频亚洲一级| 麻豆国产精品一区二区三区 | 亚洲乱亚洲高清| 日韩视频一区| 欧美另类综合| 秋霞影视一区二区三区| 日本精品黄色| 韩日一区二区| 久久精品二区亚洲w码| 国产日本精品| 国产乱人伦精品一区| 日韩av午夜在线观看| 日本一区免费网站| 亚洲专区视频| 中文精品电影| 亚洲精品麻豆| 亚洲资源网站| 亚洲影院天堂中文av色| 日韩中文字幕av电影| 老司机久久99久久精品播放免费| 99视频精品视频高清免费| 欧美一区二区性| 亚洲性视频h| 国产91精品对白在线播放| 欧美a级片一区| 妖精视频成人观看www| 亚洲在线国产日韩欧美| 亚洲欧美网站| 免费成人性网站| 亚洲乱亚洲高清| 欧美中文一区| 国产精品一区毛片| 久久久免费人体| 国产精品成人a在线观看| 国语精品一区| 黄色在线观看www| 在线观看精品| 在线 亚洲欧美在线综合一区| 亚洲一区二区毛片| 最近国产精品视频| 青青草视频一区| 欧美激情亚洲| 伊人网在线播放| 午夜久久一区| 日韩国产一区二| 久久久免费人体| 精品丝袜在线| 99pao成人国产永久免费视频 | 久久av偷拍| 欧美激情国产在线| 久久婷婷一区| 丝袜a∨在线一区二区三区不卡| 午夜久久av| 国产精品白丝久久av网站| 成人午夜亚洲| 午夜欧美视频| 欧美日韩va| 欧美激情另类| 国产偷自视频区视频一区二区| 亚洲精品欧洲| 国产成人精选| 亚洲欧洲午夜| 日本精品一区二区三区在线观看视频| 国产精品久久久久久模特| 三级精品视频| 日韩精品一二三四| 国产精品极品在线观看| 欧美日韩视频免费观看| 欧美日韩黑人| 青青草伊人久久| 免费一二一二在线视频| 日韩影院免费视频| 久久爱www成人| 国产精品97| 91精品国产自产精品男人的天堂| www在线观看黄色| 蜜臀久久99精品久久久久久9| 国产欧美一区二区三区米奇| 久久国产亚洲| 国产乱码精品一区二区三区四区 | 国产高清日韩| 欧美日韩视频| 国产精品久久久久久久久久齐齐| 99久久视频| 日韩高清电影一区| 日韩久久一区二区三区| 日本va欧美va瓶| 日韩深夜视频| 日本欧美一区| 免费欧美一区| 欧美精品成人| 久久国产高清| 国产伦久视频在线观看| 国产午夜精品一区在线观看| 欧美特黄一级| 亚洲深夜视频| 国产欧美一区二区三区国产幕精品 | 亚洲精品动态|