素材巴巴 > 程序开发 >

SpringBoot(十六)validator后台校验

程序开发 2023-09-03 16:02:24

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、导入依赖


 org.springframework.bootspring-boot-starter-validation
 

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 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、测试


标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。