46、SpringBoot输入校验--JSR 303

★ Spring Boot的输入校验

springboot支持两种校验方式:

1. Spring原生提供的 Validation,这种验证方式需要开发者手写验证代码,比较繁琐。就是普通的if判断

2. 使用JSR 303的校验,这种验证方式只需使用注解、即可以声明式的方式进行验证,非常方便。

★ JSR 303校验的步骤:

(1)添加依赖,然后为被校验字段添加JSR 303注解,通过这些注解指定校验规则。
(2)为被校验的参数添加@Validated注解修饰,并【紧跟】一个Errors类型的参数,用于收集校验失败的错误提示。
处理方法中必须通过Errors参数来判断校验是否失败,校验失败就调回表单页面

(3)在页面上使用th:errors属性来输出校验失败的错误提示。

我对于JSR 303 校验总结:
1、添加依赖
2、在domain的实体类上面,在要校验的字段上添加依赖提供的注解,比如 @Length 校验长度。
3、在controller方法的参数上,为要校验的参数添加 @Validated 注解 和 一个 Errors 类型的参数
4、前端用 th:errors 来接收输出校验失败的错误提示

基于 JSR 303 检验的代码演示:

需求:校验前端传来的name属性的值的长度。
1、先添加支持 JSR 303 校验的依赖
在这里插入图片描述

2、哪个参数要校验,就在哪个参数上面添加对应的注解
在 name 属性上面添加 @Length 注解进行长度校验
在这里插入图片描述

为被校验的参数添加@Validated注解修饰,并【紧跟】一个Errors类型的参数,用于收集校验失败的错误提示。
处理方法中必须通过Errors参数来判断校验是否失败,校验失败就调回表单页面

//@Validated Book book 表示book这个参数需要得到参数校验
//校验失败时,所有的错误信息应该都是放在 errors 参数中
//如果校验失败,就返回表单页面。不然的话代码还是会往下走。
在这里插入图片描述

在页面上使用th:errors属性来输出校验失败的错误提示。
因为是校验 name属性,所以这里的 th:errors 需要拿到name属性值,表示是输出检验name字段的错误提示。
在这里插入图片描述

测试结果:

检验不通过,返回index 页面。
注意点:这个 【长度需要再6-20之间】这个提示,是 @Length 注解提供的,是默认的国际化信息。
国际化信息就是这个页面是中文的,就提示中文,
如果页面是英文的,就用英语来提示。

在这里插入图片描述

扫描二维码关注公众号,回复: 16604315 查看本文章

如果要自定义提示信息,可以添加 message 属性。
在这里插入图片描述

演示Validation校验

Spring原生提供的 Validation,这种验证方式需要开发者手写验证代码,比较繁琐。

就是在程序中写代码输入校验。就是普通的 if 校验

在这里插入图片描述

前端一样用 th:errors 来接收错误信息
在这里插入图片描述

测试结果
成功:txt 无法上传,只能上传图片

然后我弄了一张10M的图片进行测试,结果程序直接崩溃。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44411039/article/details/132632666