通过Java Bean Validation API

通过Java Bean Validation API 的验证,对字符串、集合、数组等对象的大小进行验证。(如:通过限制参数的大小,来防止SQL注入)

1、添加依赖

<!-- Hibernate Validator -->
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.13.Final</version> <!-- 请根据需要选择版本 -->
</dependency>

<!-- JSR 303 / JSR 380 API -->
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>javax.validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>

2、创建一个 POJO 类

import javax.validation.constraints.Size;

public class FirstIdRequest {
    
    @Size(min = 5, max = 10, message = "firstId length must be between 5 and 10")
    private String firstId;

    // Getter and Setter
    public String getFirstId() {
        return firstId;
    }

    public void setFirstId(String firstId) {
        this.firstId = firstId;
    }
}

3、修改控制器方法

@PostMapping(value = "/getDetailsOfQualityInspectionByFirstId", produces = "text/plain;charset=UTF-8")
public String getDetailsOfQualityInspectionByFirstId(@Valid @RequestBody FirstIdRequest firstIdRequest, HttpServletRequest request) {
    String firstId = firstIdRequest.getFirstId();
    if (StringUtils.isEmpty(firstId)) {
        return ResultUtil.fail("ID不能为空!");
    }
    return commonService.common("unqualified/getDetailsOfQualityInspectionByFirstId", firstIdRequest);
}

4. 异常处理

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(javax.validation.ConstraintViolationException.class)
    public ResponseEntity<String> handleConstraintViolation(ConstraintViolationException ex) {
        return ResponseEntity.status(HttpStatus.BAD_REQUEST)
                .body("Validation failed: " + ex.getMessage());
    }

    @ExceptionHandler(org.springframework.web.bind.MethodArgumentNotValidException.class)
    public ResponseEntity<String> handleMethodArgumentNotValid(MethodArgumentNotValidException ex) {
        BindingResult bindingResult = ex.getBindingResult();
        StringBuilder errorMessage = new StringBuilder();
        for (FieldError error : bindingResult.getFieldErrors()) {
            errorMessage.append(error.getField())
                        .append(": ")
                        .append(error.getDefaultMessage())
                        .append("; ");
        }
        return ResponseEntity.status(HttpStatus.BAD_REQUEST)
                .body("Validation failed: " + errorMessage.toString());
    }
}

  

 

posted @ 2024-12-25 11:55  信铁寒胜  阅读(81)  评论(0)    收藏  举报