spring mvc控制层@Validated参数校验

简介: spring mvc控制层@Validated参数校验

@Validated参数校验

hibernate的校验框架validation所需要jar包:

20180409205725524.png

下载地址: https://download.csdn.net/download/bushqiang/10337270

需要的包:

1.springmvc.xml配置:


  <!-- 校验器 -->
  <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>classpath:ValidationMessages</value>
      </list>
    </property>
    <!-- 资源文件编码格式 -->
    <property name="defaultEncoding" value="UTF-8"/>
    <!-- <property name="fileEncodings" value="utf-8" /> -->
    <!-- 对资源文件内容缓存时间,单位秒 -->
    <property name="cacheSeconds" value="120" />
  </bean>

2.校验器注入到处理器适配器中

<mvc:annotation-driven validator="validator"></mvc:annotation-driven>

3.在pojo中添加校验规则

@NotBlank(message = "{userid.NotBlank}")
private String username;
@NotBlank(message="{userpassword.NotBlank}")
private String password;

4.把需要校验信息单独放在一个文件夹下

2018040921001980.png

5.控制层捕获校验错误信息

注意://在需要校验的pojo前边添加@Validated,在需要校验的pojo后边添加BindingResult bindingResult接收校验出错信息


   //注意:@Validated和BindingResult bindingResult是配对出现,并且形参顺序是固定的(一前一后)。

  @RequestMapping("/userLogin")
  public ModelAndView editItemsSubmit(HttpServletRequest request, Integer id,
      @Validated User user, BindingResult bindingResult) throws Exception {
    ModelAndView modelAndView = new ModelAndView();
    // 获取校验错误信息
    if (bindingResult.hasErrors()) {
      // 输出错误信息
      List<ObjectError> allErrors = bindingResult.getAllErrors();
      for (ObjectError objectError : allErrors) {
        // 输出错误信息
        System.out.println(objectError.getDefaultMessage());
      }
      // 将错误信息传到页面
      modelAndView.addObject("allErrors", allErrors);
      // 可以直接使用model将提交pojo回显到页面
      modelAndView.addObject("user", user);
      modelAndView.setViewName("index");
      return modelAndView;
    }
    // 保存用户注册信息
    userService.saveUser(user);
    // 添加返回的数据
    modelAndView.addObject("user", user);
    // 返回jsp页面的名字
    modelAndView.setViewName("successLog");
    return modelAndView;
  }

6.页面显示校验信息

<!-- 显示错误信息 -->
<c:if test="${allErrors!=null }">
  <c:forEach items="${allErrors }" var="error">
           ${ error.defaultMessage}<br />
  </c:forEach>
</c:if>

二:分组校验,就是对不同的情况下做不同的校验

1.创建校验接口类,里面什么都不要写

20180409210630455.png

2.在pojo中添加分组

20180409210823502.png

3.在控制层的方法使用指定分组的校验

20180409211009403.png

校验的注解:

JSR提供的校验注解:         
@Null   被注释的元素必须为 null    
@NotNull    被注释的元素必须不为 null    
@AssertTrue     被注释的元素必须为 true    
@AssertFalse    被注释的元素必须为 false    
@Min(value)     被注释的元素必须是一个数字,其值必须大于等于指定的最小值    
@Max(value)     被注释的元素必须是一个数字,其值必须小于等于指定的最大值    
@DecimalMin(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值    
@DecimalMax(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值    
@Size(max=, min=)   被注释的元素的大小必须在指定的范围内    
@Digits (integer, fraction)     被注释的元素必须是一个数字,其值必须在可接受的范围内    
@Past   被注释的元素必须是一个过去的日期    
@Future     被注释的元素必须是一个将来的日期    
@Pattern(regex=,flag=)  被注释的元素必须符合指定的正则表达式    
Hibernate Validator提供的校验注解:  
@NotBlank(message =)   验证字符串非null,且长度必须大于0    
@Email  被注释的元素必须是电子邮箱地址    
@Length(min=,max=)  被注释的字符串的大小必须在指定的范围内    
@NotEmpty   被注释的字符串的必须非空    
@Range(min=,max=,message=)  被注释的元素必须在合适的范围内
相关文章
|
4天前
|
设计模式 前端开发 Java
初识Spring MVC
初识Spring MVC
10 0
|
4天前
|
前端开发 Java 应用服务中间件
Spring MVC框架概述
Spring MVC 是一个基于Java的轻量级Web框架,采用MVC设计模型实现请求驱动的松耦合应用开发。框架包括DispatcherServlet、HandlerMapping、Handler、HandlerAdapter、ViewResolver核心组件。DispatcherServlet协调这些组件处理HTTP请求和响应,Controller处理业务逻辑,Model封装数据,View负责渲染。通过注解@Controller、@RequestMapping等简化开发,支持RESTful请求。Spring MVC具有清晰的角色分配、Spring框架集成、多种视图技术支持以及异常处理等优点。
12 1
|
6天前
|
前端开发 Java
SpringBoot之自定义注解参数校验
SpringBoot之自定义注解参数校验
16 2
|
7天前
|
监控 前端开发 Java
SpringBoot与SpringMVC有哪些区别?
SpringBoot和SpringMVC是Java开发中常用的两个框架,它们都是由Spring框架所提供的,但在功能和使用方式上有着一些区别。
22 2
|
10天前
|
Java 微服务 Spring
Spring Boot中获取配置参数的几种方法
Spring Boot中获取配置参数的几种方法
21 2
|
17天前
|
开发框架 Java 开发者
Spring Boot接收参数的多种方式
【4月更文挑战第20天】
13 0
|
23天前
|
JSON Java 数据格式
Spring Boot实现各种参数校验
这些是Spring Boot中实现参数校验的一些常见方法,你可以根据项目需求选择适合的方式来进行参数校验。
16 0
|
1月前
|
数据采集 前端开发 Java
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
23 3
|
1月前
|
存储 前端开发 Java
会话锦囊:揭示Spring MVC如何巧妙使用@SessionAttributes
会话锦囊:揭示Spring MVC如何巧妙使用@SessionAttributes
14 1
|
1月前
|
前端开发 Java Spring
数据之桥:深入Spring MVC中传递数据给视图的实用指南
数据之桥:深入Spring MVC中传递数据给视图的实用指南
33 3