SpringBoot数据校验
在使用SpringBoot基础创建项目的时候,如果需要对其前端页面传递过来的参数进行数据校验的话,就可以使用SpringBoot中的Validation进行测试。
当然,一般也可以在前端页面中直接进行测试。
一、SpringBoot参数校验_数据类型检验
-
添加Validation依赖
<!-- 数据校验 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>
-
直接进行类型值判断
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank;
/**
* @author huidou
* @date 2022/7/11
*/
@Validated
@RestController
@Slf4j
public class StudentController {
/**
* 对类型值直接进行测试
* @param username
* @param password
* @return
*/
@PostMapping("/test01")
public String test01(@NotBlank String username, @NotBlank String password) {
log.info("username的信息是:{},password的信息是:{}",username,password);
return "成功!";
}
}
/**
* 对类型值直接进行测试
* @param username
* @param password
* @return
*/
@PostMapping("/test01")
public String test01(@NotBlank String username,
@NotBlank String password,
@Max Integer max,
@Min Integer min) {
log.info("username的信息是:{},password的信息是:{}",username,password);
log.info("max:{},min:{}",max,min);
return "成功!";
}
-
对象类型判断
/**
* @author huidou
* @date 2022/7/11
*/
@Data
public class Student {
@NotBlank(message = "姓名不能为空!")
private String name;
@NotBlank(message = "性别不能为空!")
private String sex;
}
import com.zhongan.entiey.Student;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.ObjectError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author huidou
* @date 2022/7/11
*/
@RestController
@Slf4j
public class StudentController {
@PostMapping("/student")
public String studentValidation(@Validated Student student, BindingResult result) {
log.info("student信息是:{}",student);
if (result.hasErrors()) {
List<ObjectError> allErrors = result.getAllErrors();
for (ObjectError allError : allErrors) {
FieldError error = (FieldError) allError;
log.info("error错误信息是:{}",error.getDefaultMessage());
}
}
return "添加成功";
}
}
二、SpringBoot参数校验_异常处理
当抛出 ConstraintViolationException 异常后,我们可以使用SpringMVC的异
常处理器,也可以使用SpringBoot自带的异常处理机制。
当程序出现了异常,SpringBoot会使用自带的 BasicErrorController 对象处理异常。该处理器会默认跳转到/resources/templates/error.html
页面。


查看11道真题和解析