我们在做表形式单提交的时候,只在前端做数据校验是不够安全的,所以有时候我们需要在后端同样做数据的校验好。在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。做
结果:
请求:http://localhost: 8081/testPersonalValidtor.do& # 63; name=张三,地址=三元桥
结果:
<强>具体控制器类代码如下:强>
包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注解进行数据验证的方法