利用Spring boot中的@Valid 进行数据验证并利用BindingResult封装返回错误信息

提示:为了提高运行效率,一般都会在前端进行数据验证。但是后端验证是为了防止用户手动注入非法数据。

  1. 导入相关jar包,如图:请添加图片描述
  2. 在实体类中对需要的数据进行验证,常见的有:
    @Null 被注释的元素必须为 null
    @NotNull 被注释的元素必须不为 null
    @AssertTrue 被注释的元素必须为 true
    @AssertFalse 被注释的元素必须为 false
    @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
    @Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
    @DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
    @DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
    @Size(max=, min=) 被注释的元素的大小必须在指定的范围内
    @Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
    @Past 被注释的元素必须是一个过去的日期
    @Future 被注释的元素必须是一个将来的日期
    @Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式
    @NotBlank(message =) 验证字符串非null,且长度必须大于0
    @Email 被注释的元素必须是电子邮箱地址
    @Length(min=,max=) 被注释的字符串的大小必须在指定的范围内
    @NotEmpty 被注释的字符串的必须非空
    @Range(min=,max=,message=) 被注释的元素必须在合适的范围内
  3. 上述注解使用方式:
 @Size(min = 11, max = 11, message = "手机号码长度不正确")
    @Pattern(regexp = "^(((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(16[6])|(17[0135678])|(18[0-9])|(19[89]))\\d{8})$", message = "手机号格式错误")
    private String telephone;
    @Email(message = "格式不正确")
    private String email;
  1. 在contrller层中对实体类使用@valid来进行对前端传来的数据进行验证,并使用BindingResult返回错误信息:
 public String addOrUpdate(@RequestBody @Valid User requestUser , BindingResult bindingResult) {
        String error = null;
        //如果验证中出现错误
        if(bindingResult.hasErrors()){
        //获取所有错误信息后选取第一个存储至error中。
                 error=bindingResult.getAllErrors().get(0).getDefaultMessage();
        }
        userService.addOrUpdate(requestUser);
//返回错误
        return error;
    }
  1. 下面是我故意将信息填错后返回的错误信息:
List of constraint violations:[
	ConstraintViolationImpl{interpolatedMessage='格式不正确', propertyPath=email, rootBeanClass=class com.example.demo.Pojo.User, messageTemplate='格式不正确'}
]


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值