这里写了两种方式:
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中可以使用