欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring MVC 数据校验

程序员文章站 2022-07-08 19:25:37
...

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

 

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

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

 

数据校验的两种方式:

  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";
	}
	
}

 

相关标签: 数据校验