通过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());
}
}

浙公网安备 33010602011771号