JSR-303 数据校验学习
@ConfigurationProperties标识的类支持JSR-303校验
JSR 303 - Bean Validation 介绍及最佳实践
一、JSR-303简介
JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是Hibernate Validator。
此实现与 Hibernate ORM 没有任何关系。 JSR 303 用于对 Java Bean 中的字段的值进行验证。
Spring MVC 3.x 之中也大力支持 JSR-303,可以在控制器中对表单提交的数据方便地验证。
注:可以使用注解的方式进行验证
二、准备校验时使用的JAR
validation-api-1.0.0.GA.jar:JDK的接口;
hibernate-validator-4.2.0.Final.jar是对上述接口的实现;
log4j、slf4j、slf4j-log4j
三、JSR 303 基本的校验规则
空检查
@Null 验证对象是否为null
@NotNull 验证对象是否不为null, 无法查检长度为0的字符串
@NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
@NotEmpty 检查约束元素是否为NULL或者是EMPTY.
Booelan检查
@AssertTrue 验证 Boolean 对象是否为 true
@AssertFalse 验证 Boolean 对象是否为 false
长度检查
@Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内
@Length(min=, max=) Validates that the annotated string is between min and max included.
日期检查
@Past 验证 Date 和 Calendar 对象是否在当前时间之前,验证成立的话被注释的元素一定是一个过去的日期
@Future 验证 Date 和 Calendar 对象是否在当前时间之后 ,验证成立的话被注释的元素一定是一个将来的日期
@Pattern 验证 String 对象是否符合正则表达式的规则,被注释的元素符合制定的正则表达式,regexp:正则表达式 flags: 指定 Pattern.Flag 的数组,表示正则表达式的相关选项。
数值检查
建议使用在Stirng,Integer类型,不建议使用在int类型上,因为表单值为“”时无法转换为int,但可以转换为Stirng为”“,Integer为null
@Min 验证 Number 和 String 对象是否大等于指定的值
@Max 验证 Number 和 String 对象是否小等于指定的值
@DecimalMax 被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度
@DecimalMin 被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度
@Digits 验证 Number 和 String 的构成是否合法
@Digits(integer=,fraction=) 验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。
@Range(min=, max=) 被指定的元素必须在合适的范围内
@Range(min=10000,max=50000,message=”range.bean.wage”)
@Valid 递归的对关联对象进行校验, 如果关联对象是个集合或者数组,那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验.(是否进行递归验证)
@CreditCardNumber信用卡验证
@Email 验证是否是邮件地址,如果为null,不进行验证,算通过验证。
@ScriptAssert(lang= ,script=, alias=)
@URL(protocol=,host=, port=,regexp=, flags=)
四、案例分析
在使用的时候直接对JavaBean进行注解既可以实现对属性的验证
对配置文件的映射JavaBean进行校验
@Component @ConfigurationProperties(prefix = "person") @Validated public class Person {//lastName必须是邮箱格式 @Email //@Value("${person.last‐name}") private String lastName; //@Value("#{11*2}")private Integer age;//@Value("true")private Boolean boss;private Date birth;private Map<String,Object> maps;private List<Object> lists;private Dog dog; }
转载于:https://www.cnblogs.com/guchunchao/p/9853311.html
JSR-303 数据校验学习相关推荐
- SpringMVC 数据的格式化、JSR 303数据校验和国际化
SpringMVC 数据的格式化.JSR 303数据校验和国际化 转载于:https://www.cnblogs.com/lusufei/p/7400963.html
- jsr 正则验证_JSR-303 数据校验学习
一.JSR-303简介 JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是Hibernate Validator. 此实现与 Hibernat ...
- 如何使用JSR 303 进行后台数据校验?
文章目录 一.JSR 303 1.什么是 JSR 303? 2.为什么使用 JSR 303? 3.JSR 303 常见操作? 二.使用 JSR 303 相关注解处理逻辑 1.JSR 303 注解处理逻 ...
- java学习笔记——springmvc 之 数据自定义转换器 数据格式化 JSR303数据校验返回与接收JSON(@RequestBody 和 @ResponseBody)
九.数据绑定流程分析 1.提出问题 日期字符串格式的表单参数,提交后转换为Date类型 <!-- 解决问题: 1.数据类型转换 2.数据格式 3.数据校验 --> BirthDay ...
- SilverLight学习笔记--实际应用(一)(4):手把手建立一个Silverlight应用程序之同步数据校验1...
现在我们的程序有了添加和删除以及修改功能,下面我们看一看如何让程序具备数据校验功能.我们将用两种方式实现数据的校验,一种是在客户端进行同步校验.另一种是在服务器端进行异步校验. 本篇我们先实现如何 ...
- C1认证学习三(数据校验)
C1认证学习三(数据校验) 文章目录 C1认证学习三(数据校验) 数据校验 任务背景 校验的方法 奇偶校验 数据校验 这是第三个笔记:数据的校验. 任务背景 在数据传输的过程中,会受到各种各样的干扰. ...
- Spring boot的Bean使用JSR 303校验
@Validated 验证注解 添加在验证的Bean上 @Validated public class Person { 就可以直接在属性上 使用JSR 303提供的,默认约束规则 //lastNam ...
- 让Spring 3中jsp的数据对象使用懒加载(FetchType.LAZY)与Controller的JSR 303并存
本文出处:http://blog.csdn.net/chaijunkun/article/details/9083171,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在 ...
- JSR 303 - Bean Validation 简介及使用方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.JSR-303简介 JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Va ...
最新文章
- R语言广义线性模型Logistic回归模型C Statistics计算
- 什么是 DDos 攻击
- vector函数python_Smooth Support Vector Regression - Python实现
- RabbitMQ学习及实践3--SpringMVC实现
- 你确定不反编译 likely 看看?
- 抛体运动的小框架的源代码(rar)
- mysql 从库relay_MySQL主库binlog(master-log)与从库relay-log关系代码详解
- 【BZOJ2594】水管局长加强版,LCT+并查集+二分查找位置
- ST_Geometry效率的测试与分析
- python uwsgi_uwsgi的多站点配置
- lambda函数 java_使用 Java 构建 Lambda 函数 - AWS Lambda
- 目标检测(二十)--Mask R-CNN
- 校园客户端linux创翼,电信创翼校园客户端-电信创翼校园网客户端下载 4.7.9.589 官方版 - 河东下载站...
- 在做模具设计过程中应注意哪些问题
- 微信小号赚钱(转载)
- HDU 6617 Enveloping Convex(凸包+半平面交+二分)
- FXS与FXO接口的区别及应用
- 使用百度地图时如何隐藏百度地图logo
- 关于RedisTemplate的ERR EXEC without MULTI错误
- 申请计算机博士需要的论文,计算机科学与技术学院申请博士学位发表学术论文的规定(2008.9上网).doc...
热门文章
- 对Vue生命周期的一些简单见解
- 鸿蒙官网什么样,鸿蒙系统推广,结果会怎么样?
- xml生成java代码_在Eclipse中从XML生成Java代码
- linux c语言 udp 接收和发送数据用同一个端口_【Python学习笔记】80、UDP编程
- java在线打开xml文件_java实现简单解析XML文件功能示例
- java 植入 form_pdf form表单制作以及用java程序填充表单
- mysql join 条件_MySQL Join 竟然可以这么玩?根据条件 进行复制
- 和大家分享2015年我逐步形成的六个管理认识
- 通达信副图指标公式:买卖黄金线(抄底用)
- Facebook开源新NLP框架:简化部署流程,大规模应用也OK