SpringMVC使用@Valid注解进行数据验证的方法

  

我们在做表形式单提交的时候,只在前端做数据校验是不够安全的,所以有时候我们需要在后端同样做数据的校验好。在SpringMVC在后台验证给我们提供了一个比较好的支持。那就是使用有效的接口的实现类做数据校验。在这之前我们先做一下准备的工作。
  

  

<强>添加相关的Maven依赖
  

  

我们先把需要的jar包添加进来。

        & lt; dependency>   & lt; groupId> javax.validation   & lt; artifactId> validation-api   & lt; version> 1.1.0.Final   & lt;/dependency>   & lt; dependency>   & lt; groupId> org.apache.bval   & lt; artifactId> bval-jsr303   & lt; version> 0.5 & lt;/version>   & lt;/dependency>之前      

<>强实现验证器接口
  

  

接下来的第一步我们需要写一个类来实现验证器接口。在这个类里我们需要定义它支持校验的JavaBean,实现验证方法,用来进行相关的校验。具体的实现类如下:

        包com.zkn.learnspringmvc.validtor;      进口com.zkn.learnspringmvc.scope.PersonScope;   进口org.springframework.util.StringUtils;   进口org.springframework.validation.Errors;   进口org.springframework.validation.ValidationUtils;   进口org.springframework.validation.Validator;/* *   *由wb-zhangkenan>//绑定PersonalValidator   @InitBinder   公共空间initBinder (WebDataBinder WebDataBinder) {   webDataBinder。addValidators(新PersonalValidtor ());   }      

接下来我们需要在@RequestMapping这个注解所在的方法上使用@Valid注解进行数据的校验。

        @RequestMapping (value=" https://www.yisu.com/zixun/testPersonalValidtor.do ")   @ResponseBody//直接返回对象   公共对象testPersonalValidtor (@Valid PersonScope PersonScope, BindingResult BindingResult) {   如果(bindingResult.hasErrors ()) {   StringBuffer某人=new StringBuffer ();   (ObjectError ObjectError: bindingResult.getAllErrors ()) {   sb.append (((FieldError) objectError) .getField () +“:”) .append (objectError.getDefaultMessage ());   }   返回sb.toString ();   其他}{   返回personScope;   }   }   之前      

接下来我们来看一下效果:
  

  

请求:http://localhost: 8081/testPersonalValidtor。做
  

  

结果:   

 SpringMVC使用@Valid注解进行数据验证的方法

  

请求:http://localhost: 8081/testPersonalValidtor.do& # 63; name=张三,地址=三元桥
  

  

结果:   

 SpringMVC使用@Valid注解进行数据验证的方法

  

<强>具体控制器类代码如下:

        包com.zkn.learnspringmvc.news.controller;      进口com.alibaba.fastjson.JSON;   进口com.zkn.learnspringmvc.scope.PersonScope;   进口com.zkn.learnspringmvc.validtor.PersonalValidtor;   进口org.springframework.stereotype.Controller;   进口org.springframework.validation.BindingResult;   进口org.springframework.validation.FieldError;   进口org.springframework.validation.ObjectError;   进口org.springframework.web.bind.WebDataBinder;   进口org.springframework.web.bind.annotation.InitBinder;   进口org.springframework.web.bind.annotation.RequestMapping;   进口org.springframework.web.bind.annotation.RequestMethod;   进口org.springframework.web.bind.annotation.ResponseBody;      进口javax.servlet.http.HttpServletResponse;   进口javax.validation.Valid;/* *   *用来测试PersonalValidator的控制器   *由wb-zhangkenan>   包com.zkn.learnspringmvc.scope;      进口java.io.Serializable;/* *   *人对象   * @author zkn   *   */公共类PersonScope实现Serializable {/* *   *序列   */私有静态最终长serialVersionUID l=1;/* *   *姓名   */私人字符串名称;/* *   *年龄   */私人整数年龄;/* *   *家庭地址   */私人字符串地址;      私人StudentScope StudentScope;      公共字符串getName () {   返回名称;   }      公共空间setName(字符串名称){   this.name=名称;   }      公共整数getAge () {   返回年龄;   }      公共空间setAge(整数年龄){   这一点。年龄=年龄;   }      @Override   公共字符串toString () {   返回“PersonDomain [name=" +名字+ ",年龄=" +年龄+ "]”;   }      公共StudentScope getStudentScope () {   返回studentScope;   }      公共空间setStudentScope (StudentScope StudentScope) {   这一点。studentScope=studentScope;   }      公共字符串getAddress () {   返回地址;   }      公共空间setAddress(字符串地址){   这一点。地址=地址;   }   }   

SpringMVC使用@Valid注解进行数据验证的方法