SpringBoot 에 서 는@Valid 를 사용 하여 폼 검사 및 일반적인 검사 규칙 을 만 듭 니 다.
19579 단어 폼 검증
<dependency>
<groupId>org.hibernategroupId>
<artifactId>hibernate-validatorartifactId>
<version>6.0.13.Finalversion>
dependency>
2.콩 주입:
@Configuration
public class FactoryConfig {
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
}
3.파라미터 검사 가 필요 한 Controller 에 검사 주 해 를 추가 합 니 다.
@ApiOperation(value = " ")
@PostMapping(value = "/login")
public ResponseMessage loginRest(@Valid @RequestBody LoginInfoVO loginInfoVO, HttpServletRequest request) {
try {
logger.info(JSON.toJSONString(loginInfoVO));
UserDetailVO userDetailVO = userInfoService.getUserByUserName(loginInfoVO, request);
if (null == userDetailVO) {
throw new TokenAccessException(ResponseEnum.QUERY_FAILED.getCode(), ResponseEnum.QUERY_FAILED.getMessage());
}
} catch (Exception e) {
logger.error(" ", e);
return Result.success(ResponseEnum.ERROR.getCode(), " ", null);
}
}
4.bean 에 검사 규칙 추가
package com.adc.da.entity.precise.vo;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
public class LoginInfoVO {
@NotBlank(message = " ")
private String username;
@NotBlank(message = " ")
private String password;
@NotBlank(message = " ")
private String verifyCode;
@NotBlank(message = "sessionId ")
private String sessionId;
}
5.통 일 된 이상 처리 방법 추가
@ControllerAdvice
@Order(value = 0)
public class MethodArgumentNotValid {
@ResponseBody
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseMessage defultExcepitonHandler(MethodArgumentNotValidException exception) throws Exception {
logger.error(exception.getMessage(), exception);
List<ValidErrorVO> validErrorList = new ArrayList<>();
BindingResult result = exception.getBindingResult();
for (FieldError fieldError : result.getFieldErrors()) {
validErrorList.add(new ValidErrorVO(fieldError.getField(), fieldError.getDefaultMessage()));
logger.warn("valid error: obj[{}], filed[{}], message[{}]", fieldError.getObjectName(), fieldError.getField(), fieldError.getDefaultMessage());
}
ErrorBackVO errorBackVO = new ErrorBackVO(validErrorList);
Map<String, ErrorBackVO> map = new HashMap<>();
map.put("ErrorBackVO", errorBackVO);
//
return Result.error(ResponseEnum.SCAN_VALID_FAILED.getCode(), ResponseEnum.SCAN_VALID_FAILED.getMessage(), map);
}
}
6.테스트
로그 인 인터페이스 인삼 에서 verifyCode 삭제
1.입 참:
{
"password": "string",
"sessionId": "string",
"username": "string"
}
2.응답 데이터:
{
"respCode": "4005",
"data": {
"ErrorBackVO": {
"validErrorVOList": [
{
"file": "verifyCode",
"message": " "
}
]
}
},
"ok": false,
"message": " "
}
차단 검사 성공
첨부:일반적인 검사 규칙
@Null null
@NotNull null, 0
@NotBlank Null Trim 0, , .
@NotEmpty NULL EMPTY.
@CreditCardNumber
@Email , null, , 。
@URL(protocol=,host=, port=,regexp=, flags=) ip
Booelan
@AssertTrue Boolean true
@AssertFalse Boolean false
@Size(min=, max=) (Array,Collection,Map,String)
@Length(min=, max=) Validates that the annotated string is between min and max included.
@Past Date Calendar
@Future Date Calendar
@Pattern String
, Stirng,Integer , int , "" int, Stirng "",Integer null
@Min Number String
@Max Number String
@DecimalMax . BigDecimal .
@DecimalMin . BigDecimal .
@Digits Number String
@Digits(integer=,fraction=) ,interger ,fraction 。
@Range(min=, max=) Checks whether the annotated value lies between (inclusive) the specified minimum and maximum
더 재 미 있 고 재 미 있 는 콘 텐 츠,제 블 로그 교류 에 오신 것 을 환영 합 니 다.
만담 을 좋아 하 는 친구 도 제 유 튜브 에 오 셔 서 곽 선생님 의 만담 을 들 어보 세 요.