成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

SpringBoot + validation 接口參數(shù)校驗的思路詳解

瀏覽:130日期:2023-04-15 11:48:45

有參數(shù)傳遞的地方都少不了參數(shù)校驗。在web開發(fā)中,前端的參數(shù)校驗是為了用戶體驗,后端的參數(shù)校驗是為了安全。試想一下,如果在controller層中沒有經(jīng)過任何校驗的參數(shù)通過service層、dao層一路來到了數(shù)據(jù)庫就可能導(dǎo)致嚴重的后果,最好的結(jié)果是查不出數(shù)據(jù),嚴重一點就是報錯,如果這些沒有被校驗的參數(shù)中包含了惡意代碼,那就可能導(dǎo)致更嚴重的后果。

實踐

一、引入依賴

<!--引入spring-boot-starter-validation--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId></dependency>

二、使用校驗

在controller層的參數(shù)校驗可以分為兩種場景:

單個參數(shù)校驗實體類參數(shù)校驗

2.1 單參數(shù)校驗

/** * 參數(shù)校驗測試 控制類 * @author oyc */@RestController@RequestMapping('user')@Validatedpublic class RequestParamsValidatedController { private Logger logger = LoggerFactory.getLogger(this.getClass()); @GetMapping public User test(@NotNull(message = '姓名不能為空') String name, @NotNull(message = '年齡不能為空') @Max(value = 99, message = '不能大于200歲') Integer age) { logger.info('name:' + name + ' -age:' + age); return new User(name, age); }}

2.2 實體類參數(shù)校驗

/** * 參數(shù)校驗測試 控制類 * @author oyc */@RestController@RequestMapping('user')@Validatedpublic class RequestParamsValidatedController { private Logger logger = LoggerFactory.getLogger(this.getClass()); @PostMapping public User save(@Validated User user) { logger.info(user.toString()); return user; }}

package com.oycbest.springbootvalidated.vo; import javax.validation.constraints.*;import java.io.Serializable; /** * 用戶實體類 * @author oyc */public class User implements Serializable { private String userId; @NotNull(message = '用戶名不能為空') private String userName; @NotNull(message = '年齡不能為空') @Max(value = 100, message = '年齡不能大于100歲') private int age; @NotNull(message = '郵箱不能為空') @Email(message = '郵箱格式不正確') private String email; @NotNull(message = '電話號碼不能為空') private String phoneNumber; public User(@NotNull(message = '用戶名不能為空') String userName, int age) { this.userName = userName; this.age = age; } public User() { } public User(String userId, @NotNull(message = '用戶名不能為空') String userName, int age, String email, String phoneNumber) { this.userId = userId; this.userName = userName; this.age = age; this.email = email; this.phoneNumber = phoneNumber; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } @Override public String toString() { return 'User{' + 'userId=’' + userId + ’’’ + ', userName=’' + userName + ’’’ + ', age=' + age + ', email=’' + email + ’’’ + ', phoneNumber=’' + phoneNumber + ’’’ + ’}’; }}

2.3 定義統(tǒng)一異常處理

package com.oycbest.springbootvalidated.exception; import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.context.annotation.Bean;import org.springframework.http.HttpStatus;import org.springframework.stereotype.Component;import org.springframework.validation.BindException;import org.springframework.validation.FieldError;import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.ResponseStatus; import javax.validation.ConstraintViolation;import javax.validation.ConstraintViolationException;import javax.validation.ValidationException;import java.util.List;import java.util.Set; /** * 全局異常處理 * * @author oyc */@ControllerAdvice@Componentpublic class GlobalExceptionHandler { private Logger logger = LoggerFactory.getLogger(this.getClass()); @Bean public MethodValidationPostProcessor methodValidationPostProcessor() { return new MethodValidationPostProcessor(); } @ExceptionHandler @ResponseBody @ResponseStatus(HttpStatus.BAD_REQUEST) public String handle(ValidationException exception) { logger.error('請求異常:' + exception.getMessage()); if (exception instanceof ConstraintViolationException) { ConstraintViolationException exs = (ConstraintViolationException) exception; Set<ConstraintViolation<?>> violations = exs.getConstraintViolations(); for (ConstraintViolation<?> item : violations) { //打印驗證不通過的信息 logger.error('請求異常:' + item.getMessage()); } } return '請求異常: ' + exception.getMessage(); } @ResponseBody @ExceptionHandler(value = BindException.class) public String bindException(Exception e) { if (e instanceof BindException) { BindException exs = (BindException) e; List<FieldError> fieldErrors = exs.getFieldErrors(); for (FieldError item : fieldErrors) { logger.error('請求異常:' + item.getDefaultMessage()); } } logger.error('數(shù)據(jù)綁定異常:' + e.getMessage()); return '數(shù)據(jù)綁定異常'; } @ResponseBody @ExceptionHandler(value = Exception.class) public String defaultException(Exception e) { logger.error('請求異常:' + e.getMessage()); return '請求異常 ' + e.getMessage(); } }

三、約束性注解(簡單)說明

注解

功能

@AssertFalse

可以為null,如果不為null的話必須為false

@AssertTrue

可以為null,如果不為null的話必須為true

@DecimalMax

設(shè)置不能超過最大值

@DecimalMin

設(shè)置不能超過最小值

@Digits

設(shè)置必須是數(shù)字且數(shù)字整數(shù)的位數(shù)和小數(shù)的位數(shù)必須在指定范圍內(nèi)

@Future

日期必須在當前日期的未來

@Past

日期必須在當前日期的過去

@Max

最大不得超過此最大值

@Min

最大不得小于此最小值

@NotNull

不能為null,可以是空

@Null

必須為null

@Pattern

必須滿足指定的正則表達式

@Size

集合、數(shù)組、map等的size()值必須在指定范圍內(nèi)

@Email

必須是email格式

@Length

長度必須在指定范圍內(nèi)

@NotBlank

字符串不能為null,字符串trim()后也不能等于“”

@NotEmpty

不能為null,集合、數(shù)組、map等size()不能為0;字符串trim()后可以等于“”

@Range

值必須在指定范圍內(nèi)

@URL

必須是一個URL

到此這篇關(guān)于SpringBoot + validation 接口參數(shù)校驗的文章就介紹到這了,更多相關(guān)SpringBoot + validation 接口參數(shù)校驗內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Spring
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
精品在线你懂的| 无码av中文一区二区三区桃花岛| 在线影视一区二区三区| 国产婷婷一区二区| 偷拍与自拍一区| 亚洲美女视频在线免费观看| 久久久久久电影| 激情图片小说一区| 亚洲一区二区四区| 国产女人18毛片水真多成人如厕 | 日本色综合中文字幕| 在线播放日韩| 国产欧美久久久精品影院| jlzzjlzz亚洲日本少妇| 欧美一区2区视频在线观看| 六月婷婷色综合| 久久久蜜桃一区二区人| 1区2区3区精品视频| 91丨porny丨在线| 亚洲电影av| 亚洲成av人**亚洲成av**| 国产欧美精品一区二区色综合| 麻豆精品视频在线观看免费| 精品欧美久久久| 男女男精品视频网| 日韩欧美亚洲国产另类| 亚洲成人三级小说| 欧美日韩一级二级| 水蜜桃久久夜色精品一区的特点 | 欧美精品一区二区三区在线看午夜| 欧美大片一区二区| 激情成人午夜视频| 欧美日韩国产免费一区二区| 国产福利一区在线观看| 欧美一区中文字幕| 成人听书哪个软件好| 欧美r级在线观看| 高清beeg欧美| 2017欧美狠狠色| 欧美 日韩 国产一区二区在线视频| 国产欧美日韩不卡免费| 欧美女激情福利| ...av二区三区久久精品| 91久久视频| 亚洲一区二区三区国产| 亚洲福利专区| 亚洲精品免费视频| 亚洲一区二区三区免费在线观看| 亚洲成a人v欧美综合天堂下载 | 国产精品国产三级国产有无不卡 | 亚洲激情av| 亚洲精品大片www| 伊人久久婷婷色综合98网| 亚洲女女做受ⅹxx高潮| 国产伦精品一区| 日本三级韩国三级欧美三级| 欧美肥妇bbw| 99re这里都是精品| 中文字幕成人网| 99精品国产福利在线观看免费| 亚洲高清一区二区三区| 欧美午夜视频网站| 国产成人自拍网| 国产色一区二区| av成人天堂| 日韩成人dvd| 日韩一区二区三区精品视频| jizz一区二区| 亚洲欧美日韩成人高清在线一区| 92精品国产成人观看免费| 欧美一级在线免费| 欧美视频官网| 亚洲一区二区三区中文字幕在线| 日本韩国欧美三级| 国产精品香蕉一区二区三区| 26uuuu精品一区二区| 国内一区二区三区在线视频| 亚洲一区二区偷拍精品| 欧美日韩亚洲高清一区二区| 日本一区免费视频| 亚洲综合日韩| 国产在线精品一区二区三区不卡| 在线精品亚洲一区二区不卡| 国产一区二区福利| 国产麻豆成人传媒免费观看| 欧美激情综合色综合啪啪| 2014亚洲片线观看视频免费| 在线观看日韩av电影| 天天综合色天天综合色h| 日韩免费一区二区| 在线精品观看| 精品一区二区三区久久| 国产欧美一区二区三区在线看蜜臀| 精品成人国产| 免费人成在线不卡| 精品国精品自拍自在线| av电影在线观看不卡| 中文字幕av一区 二区| 久久久久se| 成人午夜大片免费观看| 一区二区在线观看av| 欧美军同video69gay| 欧美国产先锋| 男女性色大片免费观看一区二区 | 亚洲精选91| 久久国产精品一区二区| 欧美激情一区二区三区在线| 老牛影视一区二区三区| av在线不卡免费看| 亚洲国产精品久久久久婷婷884| 51午夜精品国产| 激情久久一区| 久久精品免费观看| 国产精品午夜春色av| 欧美日韩一区二区三区高清| 国产综合视频| 国产在线精品一区二区三区不卡| 亚洲欧美一区二区视频| 91精品久久久久久久99蜜桃| 国产一区二区高清视频| eeuss国产一区二区三区| 午夜一区二区三区视频| 久久久久久久久久久久久夜| 一本大道久久a久久综合婷婷| 91亚洲精品乱码久久久久久蜜桃| 5566中文字幕一区二区电影| 国产婷婷精品| 波多野结衣在线aⅴ中文字幕不卡| 亚洲国产精品人人做人人爽| 日韩女优av电影| 久久九九电影| 欧美精品一区二区三区久久久竹菊| 久久99热国产| 一区二区三区色| 精品少妇一区二区三区在线视频| 欧美一级网站| 欧美视频久久| caoporn国产精品| 国产原创一区二区| 天天色图综合网| 亚洲视频 欧洲视频| 久久精品夜色噜噜亚洲aⅴ| 日韩视频在线永久播放| 欧美日韩国产小视频| 日本高清免费不卡视频| 午夜在线精品偷拍| 999在线观看精品免费不卡网站| 欧美成人一区二区在线| 99精品视频在线播放观看| 国产精品123区| 精品一二三四区| 精品在线你懂的| 美女视频免费一区| 久久久久久影视| 制服丝袜在线91| 91久久精品国产91性色tv| 免费日韩视频| 国产亚洲毛片在线| 亚洲午夜精品久久| 欧美欧美全黄| 午夜精品视频| 欧美日本韩国在线| 91视视频在线观看入口直接观看www | 欧美视频中文字幕| 中文在线资源观看网站视频免费不卡| 久久久久久久高潮| 99久久国产综合精品女不卡| 午夜电影网亚洲视频| 亚洲欧洲精品天堂一级| 制服丝袜在线91| 久久久久久国产精品mv| 欧美jjzz| 91视频国产资源| 国产成人精品影视| 青青草国产精品97视觉盛宴 | 91久久综合| 91在线精品一区二区| 国产精品123区| 日产国产高清一区二区三区| 尤物在线观看一区| 国产区在线观看成人精品| 欧美日韩高清在线播放| 亚洲中字在线| 久久久久网址| 亚洲激情一区二区| 欧美freesex交免费视频| 视频在线观看国产精品| 国产欧美一区视频| 精品1区2区在线观看| 欧美日韩精品二区第二页| 久久青草久久| 亚洲综合社区| 久久蜜桃资源一区二区老牛| 一区二区三区高清视频在线观看| 欧美三级不卡| 91欧美激情一区二区三区成人| 久久精品久久99精品久久| 老司机午夜精品| 麻豆成人久久精品二区三区红| 日本中文字幕一区二区视频 |