林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka
服务器端的数据验证,对于一个WEB应用来说是非常重要的,而Spring从3.0开始支持JSR-303规范,它定义了一些标准的验证约束,同时也提供了一个可扩展的自定义方式来满足不同的开发需要,大象以SSM3为基础,结合实例来说明如何通过Spring MVC用自定义约束注解的方式来实现Validator验证。
validation-api是JSR-303规范的标准接口,hibernate-validator则是这套接口的一个实现,而hibernate-validator的实现里面又会用到slf4j,所以还需要加上这两个jar包。有了这些,我们就可以在此基础上实现自定义注解约束扩展了。
一、在eclipse创建web项目
整个工程目录如下:
导入包
2、创建User类
并标注注解
其中@Length、@Email就是 Hibernate-validator中的数据校验注解,还可以用 javax.validation中的注解,比如@NotNull
package com.mucfc.model;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;
/**
*用户格式验证类
*@author linbingwen
*@2015年5月17日15:45:27
*/
public class User {
@NotEmpty(message="用户名不能为空")
private String userName;
@NotEmpty(message="密码不能为空")
@Length(min=6,max=16,message="密码长度不正确,得在6-16之间")
private String userPassword;
@NotEmpty(message="邮箱不能为空")
@Email(message="邮箱格式不正确")
private String userEmail;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
public String getUserEmail() {
return userEmail;
}
public void setUserEmail(String userEmail) {
this.userEmail = userEmail;
}
}
3、web.xml中配置控制器
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<!-- SpringMVC的前端控制器 -->
<servlet>
<servlet-name>MyDispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 加载配置文件路径 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-servlet.xml</param-value>
</init-param>
<!-- 何时启动 大于0的值表示容器启动时初始化此servlet,正值越小优先级越高 -->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Spring MVC配置文件结束 -->
<!-- SpringMVC拦截设置 -->
<servlet-mapping>
<servlet-name>MyDispatcher</servlet-name>
<!-- 由SpringMVC拦截所有请求 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- SpringMVC拦截设置结束 -->
<!--解决中文乱码问题 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframew