第一步:导入jar包
第二步:配置文件(springmvc.xml)
第三步:测试(qqRegister.jsp、FrontController.java、QQ.java)
1、springmvc.xml:
<!--配置数据校验 -->
<mvc:annotation-driven validator="validator"></mvc:annotation-driven>
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property>
</bean>
2、qqRegister.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false"%>
<%
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort() +request.getContextPath()+"/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath %>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>QQ注册页面</title>
</head>
<body>
<center>
<form action="<%=basePath %>/front/qqRegisterByMVC.do" method="post">
<p>昵称:<input type="text" name="nick"placeholder="长度为4-10个字符"></p>
<p>密码:<input type="password" name="password" placeholder="长度为3-16个字符"></p>
<p>手机:<input type="text" name="phone" placeholder="请输入11位的手机格式"></p>
<p>邮箱:<input type="text" name="email" placeholder="请输入正确的邮箱格式"></p>
<p>年龄:<input type="text" name="age"></p>
<p>
<input type="submit" value="注册">
<input type="reset" value="清空">
</p>
</form>
</center>
</body>
</html>
3、FrontController.java:
@RequestMapping("/qqRegisterByMVC")
public void qqRegisterByMVC(@Valid QQ qqInfo, BindingResult errorResult) {
boolean flag = errorResult.hasErrors();
if (flag) {// 不通过
List<FieldError> errorList = errorResult.getFieldErrors();
for (FieldError fieldError : errorList) {
String fieldName = fieldError.getField();// JavaBean中某一个属性名
String errorMessage = fieldError.getDefaultMessage();// 属性名上对应的错误信息
System.out.println(fieldName + "=" + errorMessage);
}
} else {// 通过
System.out.println("调用dao层方法");
}
}
4、QQ.java:
/**
* Project Name:dt55_springMVC3
* File Name:QQ.java
* Package Name:cn.java.entity
* Date:上午10:47:07
* Copyright (c) 2018, bluemobi All Rights Reserved.
*
*/
package cn.java.entity;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import org.hibernate.validator.constraints.Email;
public class QQ {
@NotNull(message = "昵称不能为空")
@Pattern(regexp = "\\w{4,10}", message = "昵称必须为4-10位字符")
private String nick;// 昵称
private String password;// 密码
@Pattern(regexp = "1[3578]\\d{9}", message = "请输入正确的手机格式,11位纯数字")
private String phone;// 手机号
@Email(message = "请输入正确的邮箱格式")
private String email;// 邮箱
@Min(value = 1, message = "亲,您还没出生吧!")
@Max(value = 250, message = "亲,您还没挂么!!")
private Integer age;// 年龄(0<age<=250)
public String getNick() {
return nick;
}
public void setNick(String nick) {
this.nick = nick;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "QQ [nick=" + nick + ", password=" + password + ", phone=" + phone + ", email=" + email + ", age=" + age
+ "]";
}
}
同时我们这里给出:hibernate-validator注解
@AssertTrue //用于boolean字段,该字段只能为true
@AssertFalse//该字段的值只能为false
@CreditCardNumber//对信用卡号进行一个大致的验证
@DecimalMax//只能小于或等于该值
@DecimalMin//只能大于或等于该值
@Digits(integer=2,fraction=20)//检查是否是一种数字的整数、分数,小数位数的数字。
@Email//检查是否是一个有效的email地址
@Future//检查该字段的日期是否是属于将来的日期
@Length(min=,max=)//检查所属的字段的长度是否在min和max之间,只能用于字符串
@Max//该字段的值只能小于或等于该值
@Min//该字段的值只能大于或等于该值
@NotNull//不能为null
@NotBlank//不能为空,检查时会将空格忽略
@NotEmpty//不能为空,这里的空是指空字符串
@Null//检查该字段为空
@Past//检查该字段的日期是在过去
@Size(min=, max=)//检查该字段的size是否在min和max之间,可以是字符串、数组、集合、Map等
@URL(protocol=,host,port)//检查是否是一个有效的URL,如果提供了protocol,host等,则该URL还需满足提供的条件
@Valid//该注解只要用于字段为一个包含其他对象的集合或map或数组的字段,或该字段直接为一个其他对象的引用,
//这样在检查当前对象的同时也会检查该字段所引用的对象