SpringBoot 에 서 는@Valid 를 사용 하여 폼 검사 및 일반적인 검사 규칙 을 만 듭 니 다.

19579 단어 폼 검증
1.pom.xml 에 hibenate-vaidator 도입
    <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

더 재 미 있 고 재 미 있 는 콘 텐 츠,제 블 로그 교류 에 오신 것 을 환영 합 니 다.
만담 을 좋아 하 는 친구 도 제 유 튜브 에 오 셔 서 곽 선생님 의 만담 을 들 어보 세 요.

좋은 웹페이지 즐겨찾기