JSR303 参数校验

什么是JSR303 参数校验?

JSR303 是一套 JavaBean 参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些注解加在我们 JavaBean 的属性上面,就是类里面的字段上面,就可以在需要校验的时候进行校验了。

怎么使用JSR303?

导入 validation 依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-validation</artifactId>
</dependency>

常用注解

@NotNull 注解元素必须是非空

@Null 注解元素必须是空

@Digits 验证数字构成是否合法

@Future 验证是否在当前系统时间之后

@Past 验证是否在当前系统时间之前

@Max 验证值是否小于等于最大指定整数值

@Min 验证值是否大于等于最小指定整数值

@Pattern 验证字符串是否匹配指定的正则表达式

@Size 验证元素大小是否在指定范围内

@DecimalMax 验证值是否小于等于最大指定小数值

@DecimalMin 验证值是否大于等于最小指定小数值

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

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

代码示例–登录校验

1、在登录的封装对象里面的需要校验的字段上添加校验注解
JSR303 参数校验_第1张图片
改一下校验信息,容易辨认
JSR303 参数校验_第2张图片

2、需要在controller接收数据的封装的对象前面贴上 @Valid 注解,才能帮我们进行校验,底层是通过反射机制来拿到参数中的值的,然后再进行数据的校验。

@Valid 注解通常用于对象属性字段的规则检测

这个是调用登录方法的接口
JSR303 参数校验_第3张图片

启动项目,输入错误的手机号,就会被校验到失败,然后提示信息现在还是只能在控制台看到。

JSR303 参数校验_第4张图片

校验走的是 BindException 这个异常
JSR303 参数校验_第5张图片
JSR303 参数校验_第6张图片

那我们就得针对这个BindException进行异常处理

先定义一个参数异常的常量
这图是MemberCodeMsg这个类
JSR303 参数校验_第7张图片
JSR303 参数校验_第8张图片

从增强控制器类里面,捕捉到BindException异常,然后去调用filterArg方法,去灵活的设置异常信息

JSR303 参数校验_第9张图片

成功示例
JSR303 参数校验_第10张图片

JSR303 参数校验_第11张图片

和这里的注解里面的异常信息对应上了

JSR303 参数校验_第12张图片

点击登录用,看是先走传统校验方法,还是先走 注解的 jsr303 校验方法
因为已经在 jsr303 校验过了,出了异常,直接报异常,就不会往下走了

JSR303 参数校验_第13张图片

你可能感兴趣的:(2022零散记录,java)