SpringBoot(十六)validator后台校验

validator后台校验

在 Spring Boot 中,可以使用 Validator 来验证表单数据和其他输入数据的有效性。下面是使用 Validator 的步骤:

一、注解

通常来说,在前端提交数据到后端的时候,会进行一定的校验,比如使用jqueryvalidatejs或者当前留下的Vue框架中的vue-validator进行校验。但是这样还会有一定的风险,所以我们会在后台对数据格式进行校验。在Java或Hibernate中都提供了一些校验的注解,本节学习使用后台校验数据格式。 首先来看供我们使用的后台校验的注解,分别说明如下。

@Valid:被注释的元素是一个对象,需要检查此对象的所有字段值。

@Null:被注释的元素必须为null。

@NotNull:被注释的元素必须不为null

@AssertTrue:被注释的元素必须为true

@AssertFalse:被注释的元素必须为false

@Min(value):被注释的元素必须是一个数字,其值必须大于等于指定的最小值。

@Max(value):被注释的元素必须是一个数字,其值必须小于等于指定的最大值。

@DecimalMin(value):被注释的元素必须是一个数字,其值必须大于等于指定的最小值。

@DecimalMax(value):被注释的元素必须是一个数字,其值必须小于等于指定的最大值。

@Size(maxmin):被注释的元素的大小必须在指定的范围内。

@Digits(integer,fraction):被注释的元素必须是一个数字,其值必须在可接受的范围内。

@Past:被注释的元素必须是一个过去的日期。

@Future:被注释的元素必须是一个将来的日期。

@Pattern(value):被注释的元素必须符合指定的正则表达式。

@Email:被注释的元素必须是电子邮箱地址。

@Length(min=max=):被注释的字符串的大小必须在指定的范围内。

@NotEmpty:被注释的字符串必须非空。

@Range(min=max=):被注释的元素必须在合适的范围内。

@NotBlank:被注释的字符串必须非空。

@URL(protocol=,host=port=regexp=flags=):被注释的字符串必须是一个有效的URL。

@CreditCardNumber:被注释的字符串必须通过Luhn校验算法,银行卡、信用卡等号码一般 都用Luhn 计算合法性。

@ScriptAssert(lang=script=alias=):要有Java ScriptingAPI,即JSR223(“Scriptingfor the JavaTMPlatform”)的实现。

@SafeHtml(whitelistType=additionalTags=):classpath中要有jsoup包。

@NotNull、@NotEmpty、@NotBlank三个注解的区别如下。

@NotNull:任何对象的value不能为null。 ​

@NotEmpty:集合对象的元素不为0,即集合不为空,也可以用于字符串不为null List item ​

@NotBlank:只能用于字符串不为null,并且字符串trim)以后length要大于0。

二、集成步骤

1、导入依赖

<!--validator后台校验-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

2、实体类注解

@Data
public class Person {
  @NotNull //该属性不能为空
   private String name;
​
   @NumberFormat //要符合数值类型
   private Integer age;
​
   @Email //被注解的元素必须是电子邮箱地址格式。
   private String email;
}

3、controller参数使用

创建一个TestController进行测试。使用BindingResult类的getAllErrors()方法可以获取不符合校验的提示集合,具体怎么展示可以根据项目情况决定,这里是将错误信息拼接成字符串返回前台:

@PostMapping("/validator")
//@Valid:被注解的元素是一个对象,需要检查此对象的所有字段值。
//BindingResult:使用BindingResult类的getAllErrors()方法可以获取不符合校验的提示集合,
// 具体怎么展示可以根据项目情况决定,这里是将错误信息拼接成字符串返回前台:
public StringBuffer postTest2(@RequestBody @Valid Person person, BindingResult bindingResult){
    StringBuffer stringBuffer= new StringBuffer();
    if(bindingResult.hasErrors()){
        List<ObjectError> list = bindingResult.getAllErrors();//不符合校验的提示集合
        list.forEach(error->{
            stringBuffer.append(error.getDefaultMessage());//不符合校验的信息,append:字符串拼接
            stringBuffer.append(" || ");
            System.out.println(error.getDefaultMessage());
        });
    }
    System.out.println("postTest2");
    return stringBuffer;//这里是将错误信息拼接成字符串返回前台
}

4、测试

猜你喜欢

转载自blog.csdn.net/m0_65992672/article/details/130450687
今日推荐