1.项目中为什么要用校验框架?validator又解决了什么问题?
Java程序开发中,当你要处理一个程序的业务逻辑时,请求参数的数据校验是必须要处理的。当请求参数格式不正确的时候,需要程序监测到,并且返回对应的错误提示,以此来达到数据校验的目的。对于前后端分离开发过程中,数据校验还需要返回对应的状态码和错误提示信息。
validator框架就是为了解决开发人员在开发的时候少写代码,提高开发效率的;它专门用来做接口参数的校验。spring的validator校验框架遵循了JSR-303验证规范(参数校验规范) ,JSR是Java Specification Requests的缩写。在默认情况下,Sprng Boot会引入Hibernate Validator机制来支持JSR-303验证规范。
因此,Spring Boot的Validator校验框架有3个特性:
1.JSR-303特性:JSR-303是一项标准,只提供规范不提供实现,规定一些校验规范即校验注解,如@NotNull、@Null、@NotBlank,位于javax.validation.constraints包下。
2.Hibernate Validator特性:Hibernate Validator是对JSR-303规范的实现,并增加了一些其他的校验注解,如@Email、@Length等
3.spring validator:spring validator对Hibernate Validator进行了二次封装,在springMVC模块中添加了自动校验,并将校验信息封装进了特定的类中。
官网地址:http://hibernate.org/validator/documentation
2.添加依赖
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.7.Final</version>
</dependency>
注: 如果使用了springboot,则不需要引用任何依赖,因为spring-boot-starter-web包中已经包含了Hibernate-Validator 依赖 。
3.具体操作
controller层
4.常用注解
注解 | 说明 |
@Null | 被注释的元素必须为 null |
@NotNull | 被注释的元素必须不为 null |
@AssertTrue | 被注释的元素必须为 true |
@AssertFalse | 被注释的元素必须为 false |
@Min(value) | 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 |
@Max(value) | 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 |
@DecimalMin(value) | 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 |
@DecimalMax(value) | 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 |
@Size(max, min) | 被注释的元素的大小必须在指定的范围内,元素必须为集合,代表集合个数 |
@Pattern(regexp = ) | 正则表达式校验 |
@Digits (integer, fraction) | 被注释的元素必须是一个数字,其值必须在可接受的范围内 |
@Past | 被注释的元素必须是一个过去的日期 |
@Future | 被注释的元素必须是一个将来的日期 |
@Email | 被注释的元素必须是电子邮箱地址 |
@Length(min=, max=) | 被注释的字符串的大小必须在指定的范围内,必须为数组或者字符串,若微数组则表示为数组长度,字符串则表示为字符串长度 |
@NotEmpty | 被注释的字符串的必须非空 |
@Range(min=, max=) | 被注释的元素必须在合适的范围内 |
@NotBlank | 被注释的字符串的必须非空 |
@URI | 字符串是否是一个有效的URL |
注意
- @NotEmpty 用在集合类上面
- @NotBlank 只能用在String上面
- @NotNull 用在基本类型上
5.自定义注解