java数据验证
2015-05-22 14:59
176 查看
数据验证在 Java 分层结构的应用开发中占据着重要位置。Java EE 6 提出了 Bean Validation 规范,使用注解的方式对 Java Bean 进行约束验证,不局限于某一层次或者某一编程模型,灵活易用
Bean Validation 规范
Bean 是 Java Bean 的缩写,在 Java 分层架构的实际应用中,从表示层到持久化层,每一层都需要对 Java Bean 进行业务符合性验证,如图 1 所示。然而对于同一个 Java Bean 的对象,在每一层都需要实现同样的验证逻辑时,这将是一项耗时且容易诱发错误的做法。Bean Validation 规范的目标就是避免多层验证的重复性。事实上,开发者更倾向于将验证规则直接放到 Java Bean 本身,使用注解的方式进行验证规则的设计。项目架构
pom.xml
<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.0</modelVersion> <groupId>Test</groupId> <artifactId>vi</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>vi</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.1.3.Final</version> </dependency> <dependency> <groupId>javax.el</groupId> <artifactId>el-api</artifactId> <version>1.0</version> </dependency> </dependencies> </project>
LoginForm.java
package com.test; import java.util.Set; import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; import javax.validation.ValidatorFactory; import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; public class LoginForm { @NotNull(message = "用户名不能为空") @Size(min = 2, max = 12, message = "用户长度2-12位") private String username; @NotNull(message = "密码不能为空") @Size(min = 6, max = 12, message = "密码长度6-12位") private String password; @Min(value = 18, message = "年龄最小值必须是18") @Max(value = 60, message = "年龄最大值必须是60") private int age; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public static void main(String[] args) { ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator(); LoginForm loginForm = new LoginForm(); loginForm.setPassword("1"); Set<ConstraintViolation<LoginForm>> constraintViolations = validator.validate(loginForm); for (ConstraintViolation<LoginForm> constraintViolation : constraintViolations) { System.out.println(constraintViolation.getMessage()); } System.out.println("------"); LoginForm loginForm2 = new LoginForm(); loginForm2.setPassword("1234567"); Set<ConstraintViolation<LoginForm>> constraintViolations2 = validator.validate(loginForm2); for (ConstraintViolation<LoginForm> constraintViolation : constraintViolations2) { System.out.println(constraintViolation.getMessage()); } } }
运行结果
相关文章推荐
- OnJava:利用metadata来验证数据
- 用java签名和用cryptoapi签名生成的数据的相互验证
- 如何应用Java的throw验证数据
- java 数据验证类
- Rational Functional Tester Proxy SDK 开发,第 3 部分: 使用 Proxy SDK 扩展 Java GUI 组件可捕获的验证数据
- java程序中,数据验证,如何判断输入的文本框中的值是不是int型?
- java 验证增加数据
- Java身份证号码数据验证
- Java 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包)
- 利用java注解验证bean对象数据格式
- java 数据验证类
- java框架之springmvc06(数据验证)
- JavaScript验证表单数据,并提交给Java后台
- 微信支付java版V3验证数据合法性(Deom)
- 【JavaWeb-16】静态参数封装、3种动态参数封装、数据类型转换、struts标签、验证器
- 基于spring validation实现JAVA Bean Validation--数据验证功能(基于spring validation) (一) Validator包简介与validator接口
- 验证java中char数据类型在内存中的二进制形式为Unicode编码
- java数据格式验证工具类(转)
- java 验证增加数据
- 【转】java类中的数据验证(正则表达式)