在开发Java Web程序时,前后校验逻辑应该是必不可少的一部分。其中,前台校验更多地是从用户体验的角度出发,而后台校验更多地是从数据安全的角度出发。本博文基于Spring MVC写了一个前台后台结合校验的示例,不过没有使用Spring MVC自带的校验框架。示例前台使用Jquery Validation进行校验,后台使用Hibernate Validation进行校验,所以示例所需要的校验逻辑并不依赖于Spring MVC,只要引入相应的校验包,即可在任何Java Web环境中实现校验功能。(使用Spring MVC自带校验逻辑进行校验,改天有空再写个示例)
如果Jquery Validation使用不熟悉的话,可以查看我的Jquery Validation实用示例及讲解
如果Hibernate Validation使用不熟悉的话,可以查看我的Hibernate Validation使用示例及讲解
下面直接上示例代码:
一、主要依赖
jquery.validate.js
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-validator</artifactId>
- <version>5.1.3.Final</version>
- </dependency>
二、后台Controller类
该类只是模拟注册功能,并有一个用户名是否存在判断逻辑,主要是为了体现前后台校验的用法,所以没写其它逻辑,实际情况肯定比这复杂得多。
- /**
- * 注册控制器
- * @author wdmcygah
- *
- */
- @Controller
- @RequestMapping("/register")
- public class RegisterController {
- /**
- * 注册页面展示
- */
- @RequestMapping("/show")
- public String register(){
- return "/register/show";
- }
- /**
- * 注册方法(主要为了演示使用Hibernate validation进行校验)
- */
- @RequestMapping(value="/create",method=RequestMethod.POST)
- public String doRegister(RegisterInfo info,Model model){
- //1、进行参数校验
- ValidationResult result = ValidationUtils.validateEntity(info);
- if( result.isHasErrors() ){
- model.addAttribute("errorMsg", result.getErrorMsg());
- return "/register/show";
- }
- //2、注册逻辑——省略
- model.addAttribute("successFlag", "1");
- return "/register/show";
- }
- /**
- * 判断用户名是否存在
- * 详细描述:
- * 1、这里只作简单的演示,若名称以y开头则返回存在。实际运用中可能是查询数据库
- * 2、注意这里用到@ResponseBody注解,表示返回值不是视图名,直接将返回值绑定到response body中
- * @param name
- * @return
- */
- @RequestMapping(value="isNameExists",method=RequestMethod.POST)
- @ResponseBody
- public String isNameExists( String name ){
- if( StringUtils.isEmpty(name) ){
- return "false";
- }
- //只有以'y'开头的名字才是不存在的
- if( name.startsWith("y") ){
- return "true";
- }
- return "false";
- }