`

SpringMVC(十三)_数据绑定流程之数据校验

阅读更多

       前言:本篇主要介绍SpringMVC的数据绑定流程中数据校验的相关概念与用法

本篇文章重点关注以下问题:

  • JSR303校验框架
  • Spring内置的验证约束注解

 1. JSR303校验框架

         JSR 303 是 Java 为 Bean 数据合法性校验提供的标准框架,它已经包含在 JavaEE 6.0 中。JSR 303 通过在 Bean 属性上标注类似于 @NotNull、@Max等标准的注解指定校验规则,并通过标准的验证接口对 Bean 进行验证。

 

JSR303 校验框架注解类:

  • @NotNull  注解元素必须是非空
  • @Null  注解元素必须是空
  • @Digits  验证数字构成是否合法
  • @Future  验证是否在当前系统时间之后
  • @Past  验证是否在当前系统时间之前
  • @Max  验证值是否小于等于最大指定整数值
  • @Min  验证值是否大于等于最小指定整数值
  • @Pattern  验证字符串是否匹配指定的正则表达式
  • @Size  验证元素大小是否在指定范围内
  • @DecimalMax  验证值是否小于等于最大指定小数值
  • @DecimalMin  验证值是否大于等于最小指定小数值
  • @AssertTrue  被注释的元素必须为true
  • @AssertFalse  被注释的元素必须为false

        Hibernate Validator 是 JSR 303 的一个参考实现,除支持所有标准的校验注解外,它还支持以下的扩展注解

HibernateValidator 扩展

  • @Email  被注释的元素必须是电子邮箱地址
  • @Length  被注释的字符串的大小必须在指定的范围内
  • @NotEmpty  被注释的字符串的必须非空
  • @Range  被注释的元素必须在合适的范围内

2. SpringMVC数据校验框架

          Spring 4.0 拥有自己独立的数据校验框架,同时支持 JSR303 标准的校验框架。Spring 在进行数据绑定时,可同时调用校验框架完成数据校验工作。在 Spring MVC 中,可直接通过注解驱动的方式进行数据校验。

        Spring 本身并没有提供 JSR303 的实现,所以必须将JSR303 的实现者的 jar 包放到类路径下,Hibernate Validator 是经常被使用的JSR303校验框架

        <mvc:annotation-driven/> 会默认装配好一个LocalValidatorFactoryBean,通过在处理方法的入参上标注 @valid 注解即可让 Spring MVC 在完成数据绑定后执行数据校验的工作。在已经标注了 JSR303 注解的表单/命令对象前标注一个@Valid,Spring MVC 框架在将请求参数绑定到该入参对象后,就会调用校验框架根据注解声明的校验规则实施校验。Spring MVC 是通过对处理方法签名的规约来保存校验结果的前一个表单/命令对象的校验结果保存到随后的入参中,这个保存校验结果的入参必须是 BindingResult 或Errors 类型

        需要声明的是,需校验的 Bean 对象和其绑定结果对象或错误对象时成对出现的,它们之间不允许声明其他的入参。

        在表单/命令对象类的属性中标注校验注解,在处理方法对应的入参前添加 @Valid,Spring MVC 就会实施校验并将校验结果保存在被校验入参对象之后的 BindingResult 或Errors入参中。

         常用的方法有:

  • FieldError getFieldError(String field)
  • List<FieldError> getFieldErrors()
  • Object getFieldValue(String field)
  • Int getErrorCount()
补充说明:
    Spring MVC 除了会将表单/命令对象的校验结果保存到对应的 BindingResult或 Errors 对象中外,还会将所有校验结果保存到“隐含模型”,即使处理方法的签名中没有对应于表单/命令对象的结果入参,校验结果也会保存在 “隐含对象” 中。隐含模型中的所有数据最终将通过HttpServletRequest的属性列表暴露给JSP 视图对象,因此在 JSP 中可以获取错误信息,在 JSP 页面上可通过 <form:errors path=“userName”> 显示错误消息。

 

 3. 示例演示


 
    在后台接收实体类中进行如下配置,详细代码可见附件:

@NotEmpty
private String username;

@Past
private Date   birth;

@Email
private String email;

       如果配置了<mvc:annotation-driven/>,会默认支持上述校验注解。用起来比较简单,

 

       测试结果如下:


 

 

代码下载来源:http://super-wangj.iteye.com/blog/2388430

  • 大小: 18.9 KB
  • 大小: 14.9 KB
  • 大小: 3.3 KB
分享到:
评论

相关推荐

    SpringMVC入门很简单之数据绑定(下)

    在本篇中,我们将深入探讨SpringMVC框架中的数据绑定,这是Java开发中一个至关重要的概念,尤其是在构建Web应用程序时。SpringMVC是Spring框架的一部分,它为开发RESTful服务和传统的表单提交提供了强大的支持。数据...

    springmvc4_springmvc_mainlyyb8_

    在 "springmvc4_springmvc_mainlyyb8_" 这个项目中,我们可以预见到它将涉及到 Spring MVC 4.x 版本的相关知识。 1. **Spring MVC 概述** Spring MVC 提供了一个灵活的架构,可以处理 HTTP 请求、路由请求到相应的...

    Spring In Action MVC 提交表单(2)-数据绑定和数据校验

    在Spring框架中,MVC...综上所述,Spring MVC的数据绑定和数据校验机制为开发者提供了便利,简化了处理用户输入的流程,同时也保证了数据的正确性。通过合理的配置和使用,可以大大提高Web应用的用户体验和安全性。

    springmvc_controller_03

    数据校验 Spring MVC 提供了数据绑定和验证功能。使用 `@Valid` 和 `javax.validation` 注解(如 `@NotNull`, `@Size`, 等)可以在 Controller 方法调用前对传入的参数进行验证。 ### 8. 异常处理 通过 `@...

    springmvc数据验证

    总的来说,Spring MVC的数据验证机制是其强大功能的一个体现,它简化了验证流程,提高了开发效率,增强了系统的安全性。通过合理利用Bean Validation和自定义Validator,开发者可以构建出健壮且易于维护的Web应用。...

    SpringMVC表单标签进行数据绑定(图书管理)Demo

    总结起来,Spring MVC的表单标签数据绑定简化了Web应用的开发流程,使得模型、视图和控制器间的交互更加顺畅。在“图书管理”Demo中,我们看到了如何利用这些功能创建一个完整的图书管理系统,包括表单的创建、用户...

    扩展SpringMVC以支持更精准的数据绑定1

    在“扩展SpringMVC以支持更精准的数据绑定1”这个主题中,博主探讨了如何通过自定义转换器和验证器来增强Spring MVC的数据绑定能力,以满足更为复杂的应用场景。 首先,我们要了解Spring MVC的数据绑定基础。在默认...

    大三(二)springmvc数据校验.zip

    在本资料包 "大三(二)springmvc数据校验.zip" 中,我们主要探讨的是 Spring MVC 中的数据校验机制。 在 Spring MVC 中,数据校验是非常重要的一环,它确保了从客户端提交到服务器的数据是准确无误的。数据校验...

    springmvc-demo05-数据绑定(接受参数).zip

    在这个名为"springmvc-demo05-数据绑定(接受参数)"的项目中,我们将深入探讨Spring MVC如何实现这一特性。 1. **数据绑定的基本概念** 数据绑定是将用户输入或者HTTP请求参数自动映射到Java对象的属性上的过程。...

    SSM笔记-SpringMVC的数据格式化 、数据校验、错误提示、错误信息国际化、返回json

    当数据校验失败时,SpringMVC可以通过`ModelAndView`对象或`Model`接口将错误信息绑定到视图。这些错误信息可以在视图模板(如JSP或Thymeleaf)中显示。此外,`BindingResult`对象包含了所有错误的详细信息,如错误...

    springmvc 参数绑定例子1

    在Spring MVC中,参数绑定是一个核心功能,它允许开发者将HTTP请求中的数据自动映射到控制器方法的参数上,极大地简化了开发流程。下面我们将详细讨论这个主题。 ### 1. Spring MVC 参数绑定基础 参数绑定是Spring...

    springMVC3.2实现后台校验

    首先,我们需要理解Spring MVC中的数据绑定和验证流程。当用户通过表单提交数据时,Spring MVC会自动将请求参数绑定到对应的模型对象(通常是Java Bean)上。接着,我们可以利用Java Bean Validation(JSR 303/349)...

    springmvc注解式控制器的数据验证、类型转换及格式化 SpringMVC数据验证

    在Spring MVC中,注解式控制器是开发Web应用的核心组件之一。它允许开发者通过在控制器方法上使用注解来处理HTTP请求,同时提供了强大的数据验证、类型转换和格式化功能,确保了输入数据的准确性和安全性。下面我们...

    笔记_springmvc_

    - JSR 303/JSR 349提供的Bean Validation进行数据校验。 9. **上传下载** - 使用MultipartFile处理文件上传,可配合Commons MultipartResolver实现多文件上传。 - 对于文件下载,可以通过Response对象设置相应头...

    spring_mvc.zip_spring_spring mvc_springmvc_springmvc架构

    在实际应用中,Spring MVC支持多种数据绑定和验证机制,如使用@Valid进行数据校验,@ModelAttribute将请求参数绑定到模型对象。它还提供了异常处理机制,通过@ControllerAdvice和@ExceptionHandler可以全局处理异常...

    SpringMVC——处理器方法参数的处理.docx

    数据绑定流程: 1、框架把ServletRequest对象和请求参数传递给DataBinder ; 2、DataBinder 首先调用Spring Web环境中的ConversionService组件,进行数据类型转换和格式化等操作,将ServletRequest中的信息填充到形参...

    springmvc_jar包

    Spring MVC 还提供了 JSR-303/JSR-349 验证支持,可以对模型数据进行校验。 5. **MVC 配置**: 在 Spring 的 XML 配置文件或使用 Java 配置类中,可以设置 DispatcherServlet、HandlerMapping、ViewResolver 等...

    狂神说springmvc笔记.zip

    它是一个基于模型-视图-控制器(MVC)架构的轻量级Java Web框架,提供了强大的数据绑定、校验和类型转换功能,简化了Java Web开发流程。在"狂神说springmvc笔记.zip"这个压缩包中,我们可以期待找到关于SpringMVC的...

    完整版 Java开发实训课程系列-SpringMVC框架技术教程 第5章 数据校验 (共26页).pptx

    完整版 Java开发实训课程系列-SpringMVC框架技术教程 第5章 数据校验 (共26页).pptx 完整版 Java开发实训课程系列-SpringMVC框架技术教程 第6章 异常处理 (共12页).pptx 完整版 Java开发实训课程系列-SpringMVC...

    SpringMVC完整使用教程

    综上所述,SpringMVC 提供了一个强大的 MVC 框架,涵盖了请求处理、参数绑定、模型数据管理、视图解析、异常处理等多个方面,极大地提高了开发效率和代码质量。通过深入学习和实践,开发者可以更好地利用 SpringMVC ...

Global site tag (gtag.js) - Google Analytics