神刀安全网

SpringMVC框架 — 注解开发validation校验


一.对于校验理解

项目中,通常使用较多是前端的校验

在服务端校验:
  • 控制层conroller:校验页面请求的参数的合法性。在服务端控制层conroller校验,不区分客户端类型(浏览器、手机客户端、远程调用)
  • 业务层service(使用较多):主要校验关键业务参数,仅限于service接口中使用的参数。
  • 持久层dao:一般是不校验的。

二.springmvc校验

校验思路:
页面提交请求的参数,请求到controller方法中,使用validation进行校验。如果校验出错,将错误信息展示到页面。
需要的jar包:
hibernate-validator.jar
jboss-logging.jar
validation-api.jar

1.maven依赖:
<!-- hibernate 校验 --> <dependency>     <groupId>org.hibernate</groupId>     <artifactId>hibernate-validator</artifactId>     <version>5.2.4.Final</version> </dependency> 
2.在SpringMVC配置文件中添加配置校验器
<!--validation校验-->     <bean id="validator"           class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">         <!-- hibernate校验器-->         <property name="providerClass" value="org.hibernate.validator.HibernateValidator" />         <!-- 指定校验使用的资源文件,在文件中配置校验错误信息,如果不指定则默认使用classpath下的ValidationMessages.properties -->         <property name="validationMessageSource" ref="messageSource" />     </bean>     <!-- 校验错误信息配置文件 -->     <bean id="messageSource"           class="org.springframework.context.support.ReloadableResourceBundleMessageSource">         <!-- 资源文件名-->         <property name="basenames">             <list>                 <value>CustomValidationMessages</value>             </list>         </property>         <!-- 资源文件编码格式 -->         <property name="fileEncodings" value="utf-8" />         <!-- 对资源文件内容缓存时间,单位秒 -->         <property name="cacheSeconds" value="120" />     </bean> 
3.校验器注入到处理器适配器中
<mvc:annotation-driven validator="validator" conversion-service="conversionService"/> 
4.在pojo校验错误信息:
  • user.java
public class User {     private int id;      @NotNull(message = "{user.name.isNull}")     private String userName;     @Size(min = 6,max = 40,message = "{user.password.length.error}")     private String passWord;     省略get&set方法........ } 
4.在CustomValidationMessages.properties配置校验错误信息:
  • CustomValidationMessages.properties
user.name.isNull = 用户名不能为空 user.password.length.error = 请输入名称6-40字符密码 
5.捕获和显示校验错误信息
package com.huan.web.UserInfo;  import com.huan.entity.User; import com.huan.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.validation.ObjectError; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView;  import java.util.List;  /**  * Created by ubuntu on 17-7-10.  */ @Controller @RequestMapping("userController")  public class UserController {      @Autowired     private UserService userService;      @RequestMapping("insertUser")     public String insertUser (@Validated User user, BindingResult bindingResult){         System.out.println(user.toString());         //获取校验错误信息         if(bindingResult.hasErrors()){             List<ObjectError> allErrors = bindingResult.getAllErrors();             for(ObjectError objectError:allErrors){                 //输出错误信息                 System.out.println(objectError.getDefaultMessage());             }             return "UserInfo/login";         }         userService.insertUser(user);         return "success";     } }   

三.测试:

注册测试用例:
用户名:admin
密码:12

SpringMVC框架 -- 注解开发validation校验

控制台打印:

SpringMVC框架 -- 注解开发validation校验

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » SpringMVC框架 — 注解开发validation校验

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址