Validated参数校验框架(一)

断鸿 2020年03月05日 183次浏览

一、为什么需要参数校验框架

前言

  后台开发中参数校验必不可少,如:参数不能为空、邮箱、日期等格式。在任何时候,应用程序必须通过某种手段来确保输入进来的数据从语义上讲是完全正确的。

几种解决方案

  • 手动写if/else、正则表达式
  • 编写ValidatedUtil工具类
  • struts2的xml配置
  • JSR-303标准

JSR-303标准

  • JSR(Java Specification Requests),意思是Java规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向JAVA平台增添新的API和服务。JSR已成为JAVA界的一个重要标准。

  • JSR-303是JAVA EE 6中的一个子规范,叫做Bean Validation,Hibernate Validator提供了JSR-303规范中所有内置constraint(约束)的实现,除此之外还有一些附加的constraint

  • Bean Validation是为JavaBean验证定了的相应的元数据模型和API。在应用程序中,通过使用Bean Validation或是自定义的constraint,例如@NotNull,@Max等,就可以确保数据模型的正确性。constraint可以附加到字段,getter方法,类或者接口上面,对于一些特定的需求,用户可以很容易的开发定制constraint。Bean Validation是一个运行时的数据验证框架,在验证之后验证的错误信息会被马上返回。


Bean Validation中内置的constraint

Constraint详细信息
@Null被注解的元素必须为null
@NotNull被注解的元素必须不为null
@AssertTrue被注解的元素必须为true
@AssertFalse
@Min(value)
@Max(value)
@DecimalMax(value)被注解的元素必须是一个数字,值必须小于指定的最大值
@DecimalMin(value)
@Size(Max, Min)被注解的元素的字符长度必须在指定的范围内
@Digits(integer, fration)被注解的元素必须为一个小数,且整数位不能超过integer,小数位不能超过fration
@Past必须是过去的日期
@Future必须是将来的日期
@Pattern(value)必须符合指定的正则表达式

Hibernate Validator 附加的constraint

Constraint详细信息
@Email必须是邮箱地址
@Length被注解的字符串的大小必须在指定的范围内
@NotEmpty被注解的字符串必须不为空
@Range被注解的元素必须在合适的范围内