spring3 mvc系列三:验证方法的学习(注解版)
2012-11-26 22:57
405 查看
接上篇,今天学习Spring的验证,demo是一个极其简单的用户登陆功能,嗯,深得也不会啊!
这样,一个简单的没有任何验证功能的登陆功能就实现了。验证一下吧!
登陆成功后的页面如下:
哈哈,成功了。^_^.
首先,添加用户Model。
public class UserModel { private String id; // 用户ID private String name; // 用户姓名 private String password; // 用户密码 //getter setter方法
第二步,定义接口及其实现类。
public interface UserService { String userLogin(UserModel user); }
@Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @Override public String userLogin(UserModel user) { String password = userDao.userLogin(user); if (password.equals(user.getPassword())) { return "success"; } else { return "false"; } } }
第三步,DAO。
public interface UserDao { String userLogin(UserModel user); }
@Service public class UserJdbcDaoImpl implements UserDao { @Override public String userLogin(UserModel user) { retun "123456"; } }
第四步,修改上篇中的跳转路径,并编写与之相对应的jsp页面。
@Controller @RequestMapping("/index") public class IndexController { @RequestMapping("/helloWorld") public String helloworld() { // return "success"; //跳转到success页面 return "index"; } }
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <div> <form action="/app/user/login" id="loginform" method="post"> <table align="center" style="padding: 100px"> <tr> <td>姓名:<input type="text" name="name" id="name" /> *必需 </td> <td><form:errors path="*"/></td> </tr> <tr> <td>密码:<input type="password" name="password" id="password"> *必需 </td> </tr> <tr> <td><input type="submit"></td> </tr> </table> </form> </div> </body> </html>
第五步,编写处理登陆信息的Controller。
@Controller @RequestMapping(value = "user") public class UserController { @Autowired private UserService userService; @RequestMapping(value = "/login", method = RequestMethod.POST) protected String handle(UserModel user, BindingResult result, Model model) { String flag = userService.userLogin(user); if ("success".equals(flag)) { // Map<String, String> map = new HashMap<String, String>(); // map.put("name", user.getName()); // map.put("password", user.getPassword()); // return new ModelAndView("success", map); return "success"; } return "fail"; } }
这样,一个简单的没有任何验证功能的登陆功能就实现了。验证一下吧!
登陆成功后的页面如下:
哈哈,成功了。^_^.
第六步,下面我们做数据的后台验证,在这里先使用Spring自带的Validator接口。即实现它,并编写我们自定义的验证规则。如下:
@Component public class UserValidator implements Validator { @Override public boolean supports(Class<?> zlass) { // 要验证的Model,为假则不验证。 return UserModel.class.isAssignableFrom(zlass); // return false; } @Override public void validate(Object object, Errors errors) { UserModel userVO = (UserModel) object; ValidationUtils.rejectIfEmpty(errors, "name", "user.name.required", "name的内容不能为空"); ValidationUtils.rejectIfEmpty(errors, "password", "user.password.required", "password的内容不能为空"); int length = userVO.getName().length(); if (length > 20) { errors.rejectValue("name", "user.name.too_long", "用户名不能超过{20}个字符"); } length = userVO.getPassword().length(); if (length < 6) { errors.rejectValue("password", "user.password.too_short", "密码太短,不能少于{6}个字符"); } else if (length > 20) { errors.rejectValue("password", "user.password.too_long", "密码太长,不能长于{20}个字符"); } } }
第七步,将这个验证规则添加到Controller中。很简单了啦!
@Controller @RequestMapping(value = "user") public class UserController { @Autowired private UserService userService; @Resource private Validator validator; @RequestMapping(value = "/login", method = RequestMethod.POST) protected String handle(UserModel user, BindingResult result, Model model) { this.validator.validate(user, result);//添加验证 if (result.hasErrors()) { model.addAttribute("user", user);// 把user对象返回到页面, 这样不至于表单被清空了 return "index"; } String flag = userService.userLogin(user); if ("success".equals(flag)) { ........ }这样,当我们在登陆页面什么都不写时,validator实现类的result就会包含错误信息,那么,result.hasErrors就会为true,我们就又返回到登陆页面了。
相关文章推荐
- spring3 mvc系列二:方法返回值的学习(注解版)
- springmvc/spring使用注解的方法的时候完全可以忽略<!-- <context:annotation-config/> -->
- 数据注解和验证 – ASP.NET MVC 4 系列
- SpringMVC + Spring + MyBatis 学习笔记:提交数据遭遇基础类型和日期类型报400错误解决方法
- SpringMVC + Spring + MyBatis 学习笔记:SpringMVC和Spring一同工作的时候,AOP事务管理不起作用的解决方法
- Spring通过方法名加类注解一步到位实现 Mvc
- Spring 学习笔记1--三种实例化Bean方法、注解
- SpringMVC学习系列(12) 完结篇 之 基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现
- JAVA Spring web mvc 学习 之 6:数据验证
- MVC学习手册之数据注解与验证
- 下一个系列学习列表Spring.net+NHibernate+MVC
- 【Spring-MVC】系列学习文章,值得收藏
- Spring通过方法名加类注解一步到位实现 Mvc
- Spring4 学习系列之——bean的静态工厂方法 和 实例方法
- 【ASP.NET MVC系列】浅谈数据注解和验证
- Spring学习系列:错误记录(一):Spring注解错误记录
- Spring学习心得(10)-- 利用注解重构mvc
- SpringMVC + Spring + MyBatis 学习笔记:提交数据遭遇日期格式转化报400错误解决方法
- MVC学习系列2--向Action方法传递参数
- SpringMVC学习系列(12) 完结篇 之 基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现