java中提出了一个标准jsr303是jdk提供的api,也就是一些接口.JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是Hibernate Validator.可以使用注解的方式进行验证.你可以通过http://jcp.org/en/jsr/detail?id=303了解JSR 303的详细内容。
JSR 303 基本的校验规则:
限制说明
@Null限制只能为null
@NotNull限制必须不为null
@AssertFalse限制必须为false
@AssertTrue限制必须为true
@DecimalMax(value)限制必须为一个不大于指定值的数字
@DecimalMin(value)限制必须为一个不小于指定值的数字
@Digits(integer,fraction)限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction
@Future限制必须是一个将来的日期
@Max(value)限制必须为一个不大于指定值的数字
@Min(value)限制必须为一个不小于指定值的数字
@Past限制必须是一个过去的日期
@Pattern(value)限制必须符合指定的正则表达式
@Size(max,min)限制字符长度必须在min到max之间
@Past验证注解的元素值(日期类型)比当前时间早
@NotEmpty验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
@NotBlank验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于
@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格
@Email验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式
例:在使用的时候直接对JavaBean进行注解既可以实现对属性的验证
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isELIgnored="false"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'reg.jsp' starting page</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript">
function checkSubmit() {
document.forms[0].submit();
}
</script>
</head>
<body>
<h2>用户注册</h2>
<form action="<%=path%>/reg" method="post">
用户名:<input type="text" name="userName" /><font color="red"><form:errors path="userInfo.userName"></form:errors></font><br /><br />
密码:<input type="password" name="password" /><font color="red"><form:errors path="userInfo.password"></form:errors></font><br><br />
确认密码:<input type="password" name="repassword" /><font color="red"><form:errors path="userInfo.repassword"></form:errors></font><br><br />
邮箱:<input type="text" name="email" /><font color="red"><form:errors path="userInfo.email"></form:errors></font><br /><br />
年龄:<input type="text" name="age" /><font color="red"><form:errors path="userInfo.age"></form:errors></font><br /><br />
手机号码:<input type="text" name="phone" /><font color="red"><form:errors path="userInfo.phone"></form:errors></font><br /><br />
<input type="button" value="注册" οnclick="checkSubmit()" /><br /><br />
<br />
</form>
</body>
</html>
在maven中引用jar包
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.3.2.Final</version>
</dependency>
创建类
public class UserInfo {
/**
* 声明式
* NotNull 属性名!=null
* NotEmpty 属性名!=null && !属性名.equals("")
*/
@NotEmpty(message="用户名不能为空")
private String userName;
@NotEmpty(message="密码不能为空")
private String password;
@NotEmpty(message="确认密码不能为空")
private String repassword;
@Pattern(message="邮箱格式不正确",regexp=".+@.+\\..+")
private String email;
@NotEmpty(message="年龄不能为空")
@Min(value=1,message="年龄必须大于1")
@Max(value=100,message="年龄必须小于100")
private String age;
@NotEmpty(message="手机不能为空")
@Size(min=11,max=11,message="手机号必须是十一位")
private String phone;
//set和get方法