正文前先来一波福利推荐:

福利一:

百万年薪架构师视频,该视频可以学到很多东西,是本人花钱买的VIP课程,学习消化了一年,为了支持一下女朋友公众号也方便大家学习,共享给大家。

福利二:

毕业答辩以及工作上各种答辩,平时积累了不少精品PPT,现在共享给大家,大大小小加起来有几千套,总有适合你的一款,很多是网上是下载不到。

获取方式:

微信关注 精品3分钟 ,id为 jingpin3mins,关注后回复   百万年薪架构师 ,精品收藏PPT  获取云盘链接,谢谢大家支持!

------------------------正文开始---------------------------

不管是html页面表单提交的对象数据还是和第三方公司进行接口对接,都需要对接收到的数据进行校验(非空、长度、格式等等)。如果使用if一个个进行校验(字段非常多),这是让人崩溃的过程。幸好jdk或hibernate都提供了对object对象的校验,只需加上相应的注解即可。

1.项目建立

pom.xml

[html] view plain copy
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.</modelVersion>
<groupId>com.fei</groupId>
<artifactId>validation-test</artifactId>
<version>0.0.-SNAPSHOT</version> <dependencies> <dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>2.2.</version>
</dependency> <dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1..Final</version>
</dependency> </dependencies> </project>.基本校验练习
StudentInfo.java [java] view plain copy
package com.fei.info; import javax.validation.constraints.Pattern; import org.hibernate.validator.constraints.NotBlank; public class StudentInfo { @NotBlank(message="用户名不能为空")
private String userName; @NotBlank(message="年龄不能为空")
@Pattern(regexp="^[0-9]{1,2}$",message="年龄是整数")
private String age; /**
* 如果是空,则不校验,如果不为空,则校验
*/
@Pattern(regexp="^[0-9]{4}-[0-9]{2}-[0-9]{2}$",message="出生日期格式不正确")
private String birthday; @NotBlank(message="学校不能为空")
private String school; public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getAge() {
return age;
} public void setAge(String age) {
this.age = age;
} public String getBirthday() {
return birthday;
} public void setBirthday(String birthday) {
this.birthday = birthday;
} public String getSchool() {
return school;
} public void setSchool(String school) {
this.school = school;
}
}
ValidatorUtil.java [java] view plain copy
package com.fei.util; import java.util.HashMap;
import java.util.Map;
import java.util.Set; import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.groups.Default; public class ValidatorUtil {
private static Validator validator = Validation.buildDefaultValidatorFactory()
.getValidator(); public static <T> Map<String,StringBuffer> validate(T obj){
Map<String,StringBuffer> errorMap = null;
Set<ConstraintViolation<T>> set = validator.validate(obj,Default.class);
if(set != null && set.size() > ){
errorMap = new HashMap<String,StringBuffer>();
String property = null;
for(ConstraintViolation<T> cv : set){
//这里循环获取错误信息,可以自定义格式
property = cv.getPropertyPath().toString();
if(errorMap.get(property) != null){
errorMap.get(property).append("," + cv.getMessage());
}else{
StringBuffer sb = new StringBuffer();
sb.append(cv.getMessage());
errorMap.put(property, sb);
}
}
}
return errorMap;
} }
ValidatorTest.java [java] view plain copy
package com.fei; import java.util.Map; import com.fei.info.StudentInfo;
import com.fei.util.ValidatorUtil; public class ValidatorTest { public static void main(String[] args) {
StudentInfo s = new StudentInfo();
long startTime = System.currentTimeMillis();
print(ValidatorUtil.validate(s));
System.out.println("===============耗时(毫秒)=" + (System.currentTimeMillis() - startTime)); s.setUserName("小明");
s.setAge("a10");
s.setBirthday("2016-9-1");
startTime = System.currentTimeMillis();
print(ValidatorUtil.validate(s));
System.out.println("===============耗时(毫秒)=" + (System.currentTimeMillis() - startTime)); } private static void print(Map<String,StringBuffer> errorMap){
if(errorMap != null){
for(Map.Entry<String, StringBuffer> m : errorMap.entrySet()){
System.out.println(m.getKey() + ":" + m.getValue().toString());
}
}
}
} 来看看运行结果: [plain] view plain copy
十二月 , :: 下午 org.hibernate.validator.internal.util.Version <clinit>
INFO: HV000001: Hibernate Validator 5.1..Final
school:学校不能为空
age:年龄不能为空
userName:用户名不能为空
===============耗时(毫秒)=
birthday:出生日期格式不正确
school:学校不能为空
age:年龄是整数
===============耗时(毫秒)=

最新文章

  1. nginx 添加nginx-http-concat模块
  2. 第27章 java I/O输入输出流
  3. Sql Server Alter语句
  4. Python开发程序:简单主机批量管理工具
  5. 正则表达式 java
  6. gulp学习笔记3
  7. IP Address 分类: POJ 2015-06-12 19:34 12人阅读 评论(0) 收藏
  8. Web 应用程序项目 MvcApplication1 已配置为使用 IIS。
  9. 初始twisted(一)
  10. 【c++内存分布系列】单独一个类
  11. 基于jQuery的前端如何做到无伤迁移
  12. 轨迹系列1——一种基于路网图层的GPS轨迹优化方案
  13. BZOJ4241历史研究——回滚莫队
  14. CMDB服务器管理系统【s5day90】:创建资产更新服务器硬盘信息
  15. Android中验证输入是否为汉字、手机号及邮箱
  16. 在github上搭建个人博客
  17. 【LeetCode191】Number of 1 Bits★
  18. copy elison &amp; RVO &amp; NRVO
  19. if判断比较详解
  20. 【Linux高级驱动】linux设备驱动模型之平台设备驱动机制

热门文章

  1. Kafka集群---分布式消息系统
  2. spring的finishBeanFactoryInitialization方法分析
  3. App自动化-python基础
  4. PHP mysqli_real_connect() 函数
  5. C# Unicode编码解码
  6. 如何检测域名是否被微信屏蔽 微信域名检测接口API是如何实现
  7. HDU6513/CCPC2017--A Secret(KMP)
  8. 20175227张雪莹 2018-2019-2 《Java程序设计》第十一周学习总结
  9. linux下如何查看某个容器的详细信息?
  10. mybatis一对多映射【班级与学生】