Spring MVC 数据校验

重点: 掌握数据校验配置及使用

 

定义:  数据校验就是对数据的有效性进行校验

             确保数据正确性,针对错误数据要有相应的处理方式

 

数据校验的两种方式:

  1. 编程式数据校验
  2. 声明式数据校验(JSR-303规范)  重点

 

编程式数据校验:

      1、提供一个数据校验对象

              //    引入自定义数据校验器
              private UserValudator userValudator = new UserValudator();

      2、编写数据校验器

/**
 * 用户的数据校验器
 * @author Administrator
 *
 */
public class UserValudator implements Validator {

//	验证是否是我们要校验的对象
	public boolean supports(Class<?> clazz) {
		return UserModel.class.equals(clazz);
	}

//	数据校验方法
	public void validate(Object obj, Errors errors) {
//		采用工具类
		ValidationUtils.rejectIfEmpty(errors, "userName", "user.userName.notnull");
//		采用参数对象的属性进行具体的规则制定
		UserModel user = (UserModel)obj;
		if(null != user && 
				(null == user.getPassword() || "".equals(user.getPassword()))){
			errors.rejectValue("password", "user.password.notnull");
		}
		//用户名不能是 管理员
		if("root".equals(user.getUserName()) || "admin".equals(user.getUserName())){
			errors.reject("user.username.forbiden");
		}	
	}	
}

      3、进行数据校验

          //    处理请求方法
          @RequestMapping("validate.do")
          public String validateUser(UserModel user,Errors errors){
          //        对获取的参数进行校验
                   userValudator.validate(user, errors);
                   //判断是否通过了数据校验
                   if(errors.hasErrors()){
          //            如果有错误信息,那么返回错误页面
                           return "error";
                    }
                    return "success";
           }

/**
 * 验证编程式数据校验
 * @author Administrator
 *
 */
@Controller
@RequestMapping("/user")
public class UserController {
//	引入自定义数据校验器
	private UserValudator userValudator = new UserValudator();
//	处理请求方法
	@RequestMapping("validate.do")
	public String validateUser(UserModel user,Errors errors){
//		对获取的参数进行校验
		userValudator.validate(user, errors);
		//判断是否通过了数据校验
		if(errors.hasErrors()){
//			如果有错误信息,那么返回错误页面
			return "error";
		}
		return "success";
	}
	
}

 

声明式数据校验(很重要、很常用)

      1、 在原有包基础上引入:

                validation-api-1.0.0.GA .jar    :JSR303 规范API 包

                hibernate-validator-4.3.2.Final.jar   :JSR303 规范实现包 Hibernate Validator

                jboss-logging-3.1.0.CR2.jar    : 依赖的包

          配置文件当中引入: <mvc:annotation-driven/>

 此处是链接:    hibernate validator 常见注解

       2、声明式数据校验读取自定义的国际化资源文件

   配置文件添加:

	<!-- 国际化 -->
	<bean name="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
		<property name="basename" value="classpath:resource/messages"></property>
		<property name="fileEncodings" value="utf-8"></property>
	</bean>

         3、在实体类中添加标签

/**
 * 学生模型
 * @author Administrator
 *
 */
public class StudentModel {
	@NotNull(message="{studen.studentName.notnull}")
	private String studentName;
	@Email(message="{studen.email.notok}")
	private String email;
	@Length(min=5,max=20,message="{studen.address.tolongortoshort}")
	private String address;
	@Min(value=18,message="{studen.age.mustolderthan18}")
	private Integer age;
}

 控制器中注释如下:

/**
 * 演示声明式数据校验
 * @author Administrator
 *
 */
@Controller
@RequestMapping("/student")
public class StudentController {
	
//	处理请求的方法
	@RequestMapping("validate.do")
	public String validateStu(@Valid StudentModel student,Errors errors){
		if(errors.hasErrors()){
			return "sterror";
		}
		return "success";
	}
	
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值