9.1 参数校验介绍
参数校验即保证数据的合法性,JCP组织定义了一个标准来规范化这个任务操作,即Java Validation API
Spring MVC 有两种方法可以验证输入,利用 Spring 自带的Validated框架或JSR 303 实现
9.2 JSR303
JSR303(Java Specification Requests)即Java 规范请求,是一套JavaBean参数校验的标准,
它定义了很多常用的校验注解,可直接将注解加在JavaBean的属性上,在需要校验的时候实现服务器端的数据验证
JSR303 是JavaEE 6 中的一项子规范,叫Bean Validation,Spring 的 DataBinder 在进行数据绑定时,Spring MVC同时支持JSR303标准的校验框架,通过使用注解的方式进行验证规则的添加
9.3 Hibernate Validator
Hibernate Validator 是 Bean Validation 的参考实现 . Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 和一些附加实现
Spring 本身没有提供 JSR303 的实现,Hibernate Validator 实现了 JSR303,所以必须在项目中加入 Hibernate Validator 库
Hibernate Validator提供的校验注解
注解 | 说明 |
@NotNull/@Null | 验证注解的元素值不是/是null |
@AssertFalse/@AssertTrue | 验证注解的元素值是false/true |
@Max(value)/@Min(value) | 验证注解的元素大于/小于值(value) |
@Past/@Future | 验证注解的元素比当前日期早/晚 |
验证注解的元素必须是Email | |
@NotEmpty | 验证注解的元素值不为null,但长度不能为0 |
@NotBlank | 验证注解的元素值不为null,但去除字符串的空格后长度不能为0,只应用于字符串 |
9.4 参数校验依赖引入
Springboot项目引入spring-boot-starter-web
会默认引入hibernate-validator
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>6.2.3.Final</version> </dependency>
例如导入参数校验依赖后,想要验证用户名和密码不为空
@NotBlank(message = "用户名不能为空") @Size(min=2,max=12,message="用户名的长度在2~12之间") private String username; @NotBlank(message = "密码不能为空") private String password;