SpringMVC JSR 303数据校验案例
一、关于JSR303数据校验介绍
-
输入验证是Spring处理的最重要Web开发任务之一。在SpringMVC中,有两种方式可以验证输入,一是利用Spring自带的验证框架,二是利用本文所讲的JSR 303实现,如果你纠结于使用这两种中的哪一种,那么我建议你采用JSR 303,因为JSR 303是正式的Java规范,而且使用相对简单
-
Spring 3开始支持JSR-303验证框架,JSR 303是Java为Bean数据合法性校验所提供的标准框架。JSR-303支持XML风格的和注解风格的验证,通过在Bean属性上标注类似于@NotNull、@Max等的标准注解指定校验规则,并通过标准的验证接口对Bean进行验证。
-
当然JSR只是一个规范文档,本身用处不大,除非编写了它的实现。对于JSR bean
validation目前有两个实现。第一个是实现Hibernate Validator(JSR 303和JSR
349都有它的实现),二是实现Apache BVal(该实现相对于Hibernate Validator没那么稳定)
二、JSR 303约束和Hibernate Validator约束
JSR 303是标准的校验注解,Hibernate Validator也有自带的校验注解
这些注解约束,使用在实体类的成员变量中
2、Hibernate Validator注解约束
三、利用JSR 303数据校验实战
1、导入JAR包
以上JAR包的下载,我会放到文末的工程下载中
2、项目目录
3、User实体类
public class User {
@NotEmpty
@Size(min=6,max=20)
private String name;
@Range(min=18,max=45)
private int age;
@Email
@NotEmpty
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
4、请求处理控制器
@Valid作用:当该对象的类中已经定义好了验证规则,利用@Valid在控制器的方法中指定对该对象进行验证
package com.springmvc.controller;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.validation.Valid;