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
页面。