9:参数校验-Java Spring

125 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第26天,点击查看活动详情

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验证注解的元素必须是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;