| 不相关的很多java package组成了javaee规范;api(没有实现),具体是由不同的厂商来实现这些规范的 |
| |
| |
| javax.sql----mysql,sqlserver,oracle |
| javax.jms--- activemq |
| javax.servlet---tomcat,jetty |
| javax.persistence----hibernate |
| javax.transaction----分布式事务 |
| javax.xml----jaxp: java api for xml processing |
| |
| |
提案号 |
beanvalidation版本 |
jsr303 |
beanvalidation 1.0 |
jsr349 |
beanvalidation 1.1 |
jsr380 |
beanvalidation 2.0 |
| |
| <dependency> |
| <groupId>javax.validation</groupId> |
| <artifactId>validation-api</artifactId> |
| <version>2.0.1.Final</version> |
| </dependency> |
| |
| |
| |
| |
| |
| |
| |
| <dependency> |
| <groupId>org.hibernate.validator</groupId> |
| <artifactId>hibernate-validator</artifactId> |
| <version>6.0.18.Final</version> |
| </dependency> |
| |
| <dependency> |
| <groupId>org.apache.tomcat.embed</groupId> |
| <artifactId>tomcat-embed-el</artifactId> |
| <version>9.0.29</version> |
| </dependency> |
| public class UserInfo { |
| |
| private Long id; |
| |
| private String name; |
| |
| private Integer age; |
| |
| private String email; |
| |
| private String phone; |
| |
| private LocalDateTime birthDay; |
| |
| private String personalPage; |
| |
| public Long getId() { |
| return id; |
| } |
| |
| public void setId(Long id) { |
| this.id = id; |
| } |
| |
| public String getName() { |
| return name; |
| } |
| |
| public void setName(String name) { |
| this.name = name; |
| } |
| |
| public Integer getAge() { |
| return age; |
| } |
| |
| public void setAge(Integer age) { |
| this.age = age; |
| } |
| |
| public String getEmail() { |
| return email; |
| } |
| |
| public void setEmail(String email) { |
| this.email = email; |
| } |
| |
| public String getPhone() { |
| return phone; |
| } |
| |
| public void setPhone(String phone) { |
| this.phone = phone; |
| } |
| |
| public LocalDateTime getBirthDay() { |
| return birthDay; |
| } |
| |
| public void setBirthDay(LocalDateTime birthDay) { |
| this.birthDay = birthDay; |
| } |
| |
| public String getPersonalPage() { |
| return personalPage; |
| } |
| |
| public void setPersonalPage(String personalPage) { |
| this.personalPage = personalPage; |
| } |
| |
| } |
| public class ValidationTest { |
| |
| public static void main(String[] args) { |
| UserInfo userInfo = new UserInfo(); |
| test1(userInfo); |
| } |
| |
| |
| private static void test1(UserInfo userInfo) { |
| String name = userInfo.getName(); |
| if (name == null || "".equals(name) || "".equals(name.trim())) { |
| |
| throw new RuntimeException("name不符合校验规则"); |
| } |
| |
| Integer age = userInfo.getAge(); |
| boolean ageValidate = age > 1 && age < 800; |
| if (!ageValidate) { |
| throw new RuntimeException("age不符合校验规则,应在(1-800)"); |
| } |
| |
| } |
| |
| } |
| public class ValidationUtil { |
| |
| private static Validator validator; |
| |
| static { |
| validator = Validation.buildDefaultValidatorFactory().getValidator(); |
| } |
| |
| public static List<String> valid(UserInfo userInfo){ |
| |
| Set<ConstraintViolation<UserInfo>> set = validator.validate(userInfo); |
| List<String> list = set.stream().map(v -> "属性:" + v.getPropertyPath() + |
| ",属性的值:" |
| + v.getInvalidValue() + ",校验不通过的提示信息:" + v.getMessage()) |
| .collect(Collectors.toList()); |
| return list; |
| } |
| |
| } |
| public class UserInfo { |
| @NotNull |
| private String name; |
| } |
| |
| public class ValidationTest { |
| public static void main(String[] args) { |
| UserInfo userInfo = new UserInfo(); |
| List<String> list = ValidationUtil.valid(userInfo); |
| System.out.print(list); |
| } |
| } |
| @Null 被注释的元素必须为null |
| @NotNull 被注释的元素必须不为null |
| @NotEmpty 被注释的集合(size>0)/字符串(!=null&&!"") |
| @NotBlank !=null&&!""&&!" " |
| @AssertTrue 被注释的元素必须为 true |
| @AssertFalse 被注释的元素必须为 false |
| @Min(value) 被注释的元素必须是一个数字,>= |
| @Max(value) 被注释的元素必须是一个数字,<= |
| @DecimalMin(value) >= |
| @DecimalMax(value) <= |
| @Size(max, min) 被注释的元素的大小必须在指定的范围内 |
| @Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内 |
| @Past 被注释的元素必须是一个过去的日期 |
| @PastOrPresent 时间 |
| @NegativeOrZero <=0 |
| @Future 被注释的元素必须是一个将来的日期 |
| @Pattern(value) 被注释的元素必须符合指定的正则表达式 |
| @Email 被注释的元素必须是电子邮箱地址 |
| @Length 被注释的字符串的大小必须在指定的范围内 |
| @Range 被注释的元素必须在合适的范围内 |
| @URL 一个url |
| public class UserInfo { |
| |
| private Long id; |
| |
| |
| |
| @NotBlank(message = "你的名字不能为空") |
| private String name; |
| |
| @NotNull |
| |
| |
| @Min(value = 18,message = "年龄小于{value}岁,禁止进入") |
| private Integer age; |
| |
| @NotBlank |
| @Email |
| private String email; |
| |
| @Pattern(regexp = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\\d{8}$") |
| private String phone; |
| |
| @NotNull |
| @Past |
| private LocalDateTime birthDay; |
| |
| @URL |
| private String personalPage; |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示