JAVA全系列 教程
3762个小节阅读:7090.1k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
JCP(Java Community Process)是一个开发的国际组织,里面包含了一些Java开发者和其他被允许加入的成员。JCP组织主要负责对Java社区进行发展和更新。维护的规范包含:J2ME、J2SE、J2EE、XML等相关规范。组织成员可以提交JSR(Java Specification Requests,Java 规范提案),待组织成员通过提案后会把相关内容加入到下一个版本的规范中。
JSR每个提案都带有数字名称。例如JSR 107、JSR 303等。一定要注意的是,对于JSR提案并不是数字越大就需要包含前面内容。例如JSR 107主要是对缓存的提案、JSR 303是对数据校验的提案,这两个提案不存在包含和被包含的关系,也不存在版本先后的关系。这个和我国政协会议是类似的,第一个政协委员提出的建议叫做建议1、第二个政协委员提出的建议是建议2。建议1建议提高个税起征点、建议2建议国家分配对象。这俩建议是没有关系的。
JSR 303是Java EE 6规范的子规范。叫做Bean Validation。这些规范都是注解。各大公司可以针对这些规范做具体实现。
在Java开发中使用的最多的JSR 303具体实现就是Hibernate框架中Hibernate-Validator。它对JSR 303的所有约定(constraint)都做了实现,同时还进行了一定的扩充。
Hiberante 框架是Java行业曾经风靡一时的ORM框架,目前在企业中只有一些老项目还在使用。
但Hibernate里面却有着一些很好的功能一直被使用。其中就包含hibernate-validator。
hibernate-validator对JSR 303实现都存在于依赖的Validation-api.jar的javax.validation.constraints包中。
里面所有注解都包含message属性,表示校验不通过后日志打印的信息。但是不建议设置,因为默认的提示信息就非常好。
Hibernate Validator对JSR 303具体实现的解释:
注解 | 含义 |
---|---|
@AssertFalse | 类型必须是布尔,取值必须为false |
@AssertTrue | 类型必须是布尔,取值必须为true |
@DecimalMax("3") | 最大值为3,value属性是String类型。 |
@DecimalMin("1") | 最小值为1,value属性是String类型。 |
@Digits(integer = 10,fraction = 3) | integer:整数位最大长度,fraction小数位最大长度 |
必须是邮箱地址。只要中间包含@,且@前后都具有超过1位的字符就能通过校验。字符可以是数字字母下划线 | |
@Future | 类型必须是时间类型,允许为null,如果设置值必须是一个将来的时间 |
@FutureOrPresent | 类型必须是时间类型,允许为null,如果设置值必须是一个一个将来或现在的时间(精确到秒) |
@Max(5) | 最大值为5,value属性是long类型 |
@Min(1) | 最小值为1,value属性是long类型。 |
@Negative | 必须是负数,对数据类型没有要求。 |
@NegativeOrZero | 必须是负数或零,对数据类型没有要求。 |
@NotBlank | 用在String类型。不能是空白(null和"") |
@NotEmpty | 用在String类型。不能是空白(null和"") |
@NotNull | 不能为null,可以是""。可以用在所有类型中。对于八大基本数据类型来说,永远不为null。 |
@Null | 必须为Null。可以用在所有类型中。对于八大基本数据类型来说,永远不可能为null。 |
@Past | 类型必须是时间类型,必须是一个过去的时间。精确到秒。 |
@PastOrPresent | 类型必须是时间类型,必须是一个过去的时间或现在的时间。精确到秒。· |
@Pattern(regexp = "\w{1,6}") | 必须满足正则表达式。regexp是必有属性。 |
@Positive | 必须是正数,对数据类型没有要求。 |
@PositiveOrZero | 必须是正数或零,对数据类型没有要求。 |
@Size(min = 1,max = 10) | 用在String类型。个数必须在1和10之间 |
Hibernate-Validator还有除了JSR 303的额外补充,这些注解都在Hibernate-validator.jar的org.hibernate.validator.constraints包中。
注解 | 含义 |
---|---|
@Length(min = 1,max = 10) | 用在String类型。长度需要在1和10之间 |
@Range(min = 1,max = 10) | 数据类型没有要求。取值范围需要在1和10之间 |
@URL(port = 8080,host = "127.0.0.1",protocol = "https") | 需要是一个合法的URL。默认情况下只要是以http:开头即可。可以通过port限制端口、host限制主机名、protocol限制协议 |