JAVA Spring web mvc 学习 之 6:数据验证
2017-09-23 21:24
519 查看
这里写了两种方式:
1.采用Spring验证类进行验证
a.定义实现 spring Validator接口的类
b.调用validate方法进行验证即刻。验证是,验证存在结果Error 中
----------------------------------------------
2.使用JSR303进行验证
a.主要使用hibernate中的验证
b.在实体模型类中,使用注解方式进行。
c.在控制器中,使用@Valid注解标示需要进行验证的实体
------------------------------------------------------------------------------
1.Spring 的Validator
a.实现Validator接口
// 实现Spring的Validator接口
@Repository("userValidator")
public class UserValidator implements Validator {
// 该校验器能够对clazz类型的对象进行校验。
@Override
public boolean supports(Class<?> clazz) {
// User指定的 Class 参数所表示的类或接口是否相同,或是否是其超类或超接口。
return User.class.isAssignableFrom(clazz);
}
// 对目标类target进行校验,并将校验错误记录在errors当中
@Override
public void validate(Object target, Errors errors) {
/**
使用ValidationUtils中的一个静态方法rejectIfEmpty()来对loginname属性进行校验,
假若'loginname'属性是 null 或者空字符串的话,就拒绝验证通过 。
*/
ValidationUtils.rejectIfEmpty(errors, "loginname", null, "登录名不能为空");
ValidationUtils.rejectIfEmpty(errors, "password", null, "密码不能为空");
User user = (User)target;
if(user.getLoginname().length() > 10){
// 使用Errors的rejectValue方法验证
errors.rejectValue("loginname", null, "用户名不能超过10个字符");
}
if(user.getPassword() != null
&& !user.getPassword().equals("")
&& user.getPassword().length() < 6){
errors.rejectValue("password", null, "密码不能小于6位");
}
}
}
b.控制器中调用验证
@RequestMapping(value="/login",method=RequestMethod.POST)
public String login(
@ModelAttribute User user,
Model model,
Errors errors) {
logger.info(user);
model.addAttribute("user", user);
// 调用userValidator的验证方法
userValidator.validate(user, errors);
// 如果验证不通过跳转到loginForm视图
if(errors.hasErrors()){
return "loginForm";
}
return "success";
}
特别说明:jsp中可以使用<form:input path="字段"><form:errors path="字段">接受错误,关于form标签,可以在JSP页面增加<%@taglib prefix= "form" uri= "http://www.springframework.org/tags/form" %>
2.JSR303校验
特别说明:验证使用包如下
import javax.validation.constraints.Past;
import javax.validation.constraints.Pattern;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.Range;
import org.springframework.format.annotation.DateTimeFormat;
a.在使用中进行验证注释
public class User implements Serializable{
@NotBlank
private String loginname;
@NotBlank
@Length(min=6,max=8)
private String password;
@NotBlank
private String username;
@Range(min=15, max=60)
private int age;
@Email(message="必须输入合法邮箱地址")
private String email;
@DateTimeFormat(pattern="yyyy-MM-dd")
@Past
private Date birthday;
@Pattern(regexp="[1][3,8][3,6,9][0-9]{8}")
private String phone;
public User() {
super();
// TODO Auto-generated constructor stub
}
public String getLoginname() {
return loginname;
}
public void setLoginname(String loginname) {
this.loginname = loginname;
}
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 String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "User [loginname=" + loginname + ", password=" + password
+ ", email=" + email + ", username="
+ username + ", birthDate=" + birthday + ", phone=" + phone
+ "]";
}
}
b.在控制器中加入验证注释
// 数据校验使用@Valid,后面跟着Errors对象保存校验信息
@RequestMapping(value="/login",method=RequestMethod.POST)
public String login(
@Valid @ModelAttribute User user,
Errors errors,
M
afa3
odel model) {
logger.info(user);
if(errors.hasErrors()){
return "registerForm";
}
model.addAttribute("user", user);
return "success";
}
关于JSR303校验
@Null,@NotNull ,@AssertTrue ,@AssertFalse , @Max(value), @Min(value) ,
@DecimalMax(value) ,@DecimalMin(value) ,@Digits(integer,fraction) //指定格式的数字,整数精度、小数精度
@Size(min,max) // 验证对象长度(Array、Collection\Map\String)
@Past //当前时间前 @Future //当前时间后 @Pattern //验证正则表达式
JSR303 在 Hibernate 中扩展
@NotBlank @URL @Email @CreditCardNumber //信用卡号码 @Length(min,max) @NotEmpty @Range(min,max,message)
1.采用Spring验证类进行验证
a.定义实现 spring Validator接口的类
b.调用validate方法进行验证即刻。验证是,验证存在结果Error 中
----------------------------------------------
2.使用JSR303进行验证
a.主要使用hibernate中的验证
b.在实体模型类中,使用注解方式进行。
c.在控制器中,使用@Valid注解标示需要进行验证的实体
------------------------------------------------------------------------------
1.Spring 的Validator
a.实现Validator接口
// 实现Spring的Validator接口
@Repository("userValidator")
public class UserValidator implements Validator {
// 该校验器能够对clazz类型的对象进行校验。
@Override
public boolean supports(Class<?> clazz) {
// User指定的 Class 参数所表示的类或接口是否相同,或是否是其超类或超接口。
return User.class.isAssignableFrom(clazz);
}
// 对目标类target进行校验,并将校验错误记录在errors当中
@Override
public void validate(Object target, Errors errors) {
/**
使用ValidationUtils中的一个静态方法rejectIfEmpty()来对loginname属性进行校验,
假若'loginname'属性是 null 或者空字符串的话,就拒绝验证通过 。
*/
ValidationUtils.rejectIfEmpty(errors, "loginname", null, "登录名不能为空");
ValidationUtils.rejectIfEmpty(errors, "password", null, "密码不能为空");
User user = (User)target;
if(user.getLoginname().length() > 10){
// 使用Errors的rejectValue方法验证
errors.rejectValue("loginname", null, "用户名不能超过10个字符");
}
if(user.getPassword() != null
&& !user.getPassword().equals("")
&& user.getPassword().length() < 6){
errors.rejectValue("password", null, "密码不能小于6位");
}
}
}
b.控制器中调用验证
@RequestMapping(value="/login",method=RequestMethod.POST)
public String login(
@ModelAttribute User user,
Model model,
Errors errors) {
logger.info(user);
model.addAttribute("user", user);
// 调用userValidator的验证方法
userValidator.validate(user, errors);
// 如果验证不通过跳转到loginForm视图
if(errors.hasErrors()){
return "loginForm";
}
return "success";
}
特别说明:jsp中可以使用<form:input path="字段"><form:errors path="字段">接受错误,关于form标签,可以在JSP页面增加<%@taglib prefix= "form" uri= "http://www.springframework.org/tags/form" %>
2.JSR303校验
特别说明:验证使用包如下
import javax.validation.constraints.Past;
import javax.validation.constraints.Pattern;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.Range;
import org.springframework.format.annotation.DateTimeFormat;
a.在使用中进行验证注释
public class User implements Serializable{
@NotBlank
private String loginname;
@NotBlank
@Length(min=6,max=8)
private String password;
@NotBlank
private String username;
@Range(min=15, max=60)
private int age;
@Email(message="必须输入合法邮箱地址")
private String email;
@DateTimeFormat(pattern="yyyy-MM-dd")
@Past
private Date birthday;
@Pattern(regexp="[1][3,8][3,6,9][0-9]{8}")
private String phone;
public User() {
super();
// TODO Auto-generated constructor stub
}
public String getLoginname() {
return loginname;
}
public void setLoginname(String loginname) {
this.loginname = loginname;
}
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 String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "User [loginname=" + loginname + ", password=" + password
+ ", email=" + email + ", username="
+ username + ", birthDate=" + birthday + ", phone=" + phone
+ "]";
}
}
b.在控制器中加入验证注释
// 数据校验使用@Valid,后面跟着Errors对象保存校验信息
@RequestMapping(value="/login",method=RequestMethod.POST)
public String login(
@Valid @ModelAttribute User user,
Errors errors,
M
afa3
odel model) {
logger.info(user);
if(errors.hasErrors()){
return "registerForm";
}
model.addAttribute("user", user);
return "success";
}
关于JSR303校验
@Null,@NotNull ,@AssertTrue ,@AssertFalse , @Max(value), @Min(value) ,
@DecimalMax(value) ,@DecimalMin(value) ,@Digits(integer,fraction) //指定格式的数字,整数精度、小数精度
@Size(min,max) // 验证对象长度(Array、Collection\Map\String)
@Past //当前时间前 @Future //当前时间后 @Pattern //验证正则表达式
JSR303 在 Hibernate 中扩展
@NotBlank @URL @Email @CreditCardNumber //信用卡号码 @Length(min,max) @NotEmpty @Range(min,max,message)
相关文章推荐
- JAVA Spring web mvc 学习 之 6:数据类型转换
- JAVA Spring web mvc 学习 之 6:数据类型转换 -格式转换
- JAVA Spring web mvc 学习 之 7:拦截器(登录状态验证)
- JAVA Spring web mvc 学习 之 4:注解
- JAVA Spring web mvc 学习 之 2
- Java Web SpringMVC AJAX,实现页面懒加载数据
- JAVA Spring web mvc 学习 之 1
- JAVA Spring web mvc 学习 之 3:DispatcherServlet
- 系统学习javaweb-13-SpringMVC+Hibernate
- 第六章:数据验证——深入浅出学Spring Web MVC
- java web SpringMVC后端传json数据到前端页面实例代码
- 第六章:数据验证——深入浅出学Spring Web MVC
- java学习笔记(二)springMVC +mybatis 取数据流程
- Java Web 学习笔记(四) 基于 SpringMVC+BootStrap 创建WebApp
- java web SpringMVC后端传json数据到前端页面
- Java 学习笔记09:Spring搭建MVC WEB项目
- JAVA_WEB项目之如何解决Struts2和Spring整合时出现中文数据提交时出现乱码
- spring-mvc的数据验证Validator
- ASP.NET MVC数据验证 登录 注册用 学习留用
- java springmvc 数据调用 highcharts