springboot中使用validator后台校验

在 Spring Boot 中,可以使用 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。


二、集成步骤

下面是使用 Validator 的步骤:

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、postman调接口进行测试

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值