SpringMVC(十)_数据绑定流程(概述)

       前言:本篇主要介绍SpringMVC的数据绑定流程,后续会详细介绍数据绑定流程当中的关键步骤,包括数据转换、数据格式化以及数据校验

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

  • 概述SpringMVC的数据绑定流程
  • 类型转换、验证及格式化流程图

1. 数据绑定的流程


        由上述流程可见,Spring MVC 通过反射机制对目标处理方法进行解析,将请求消息绑定到处理方法的入参中,数据绑定的核心部件是DataBinder

 步骤如下
  1. SpringMVC主框架将ServletRequest对象及目标方法的入参实例传递给 WebDataBinderFactory 实例,以创建 DataBinder 实例对象;
  2. DataBinder 调用装配在 Spring MVC 上下文中的ConversionService 组件进行数据类型转换、数据格式化工作,将 Servlet 中的请求信息填充到入参对象中;
  3. 调用 Validator 组件对已经绑定了请求消息的入参对象进行数据合法性校验,并最终生成数据绑定结果BindingData对象;
  4. SpringMVC 抽取BindingResult 中的入参对象和校验错误对象,将它们赋给处理方法的响应入参。

2. 类型转换、验证及格式化流程图


 流程如下

  1. 类型转换:内部的ConversionService会根据S源类型/T目标类型自动选择相应的Converter SPI进行类型转换,而且是强类型的,能在任意类型数据之间进行转换;
  2. 数据验证:支持JSR-303验证框架,如将@Valid 放在需要验证的目标类型上即可;
  3. 格式化显示:其实就是任意目标类型---->String 的转换,完全可以使用Converter SPI完成。
 在Spring Web MVC环境中,数据类型转换、验证及格式化通常是这样使用的:
  1. 类型转换:首先表单数据(全部是字符串)通过WebDataBinder 进行绑定到命令对象,内部通过Converter SPI实现;
  2. 数据验证:使用JSR-303验证框架进行验证;
  3. 格式化显示:在表单页面可以显示通过Converter SPI格式化的数据和错误信息:

 注意:Formatter SPI内部实现实际委托给Converter SPI进行转换。

  1. SpringMVC主框架将ServletRequest对象及目标方法的入参实例传递给 WebDataBinderFactory 实例,以创建 DataBinder 实例对象;
  2. DataBinder 调用装配在 Spring MVC 上下文中的ConversionService 组件进行数据类型转换、数据格式化工作,将 Servlet 中的请求信息填充到入参对象中;
  3. 调用 Validator 组件对已经绑定了请求消息的入参对象进行数据合法性校验,并最终生成数据绑定结果BindingData对象;
  4. SpringMVC 抽取BindingResult 中的入参对象和校验错误对象,将它们赋给处理方法的响应入参。

2. 类型转换、验证及格式化流程图


 流程如下

  1. 类型转换:内部的ConversionService会根据S源类型/T目标类型自动选择相应的Converter SPI进行类型转换,而且是强类型的,能在任意类型数据之间进行转换;
  2. 数据验证:支持JSR-303验证框架,如将@Valid 放在需要验证的目标类型上即可;
  3. 格式化显示:其实就是任意目标类型---->String 的转换,完全可以使用Converter SPI完成。
 在Spring Web MVC环境中,数据类型转换、验证及格式化通常是这样使用的:
  1. 类型转换:首先表单数据(全部是字符串)通过WebDataBinder 进行绑定到命令对象,内部通过Converter SPI实现;
  2. 数据验证:使用JSR-303验证框架进行验证;
  3. 格式化显示:在表单页面可以显示通过Converter SPI格式化的数据和错误信息:

 注意:Formatter SPI内部实现实际委托给Converter SPI进行转换。

  1. 类型转换:内部的ConversionService会根据S源类型/T目标类型自动选择相应的Converter SPI进行类型转换,而且是强类型的,能在任意类型数据之间进行转换;
  2. 数据验证:支持JSR-303验证框架,如将@Valid 放在需要验证的目标类型上即可;
  3. 格式化显示:其实就是任意目标类型---->String 的转换,完全可以使用Converter SPI完成。
 在Spring Web MVC环境中,数据类型转换、验证及格式化通常是这样使用的:
  1. 类型转换:首先表单数据(全部是字符串)通过WebDataBinder 进行绑定到命令对象,内部通过Converter SPI实现;
  2. 数据验证:使用JSR-303验证框架进行验证;
  3. 格式化显示:在表单页面可以显示通过Converter SPI格式化的数据和错误信息:

 注意:Formatter SPI内部实现实际委托给Converter SPI进行转换。

猜你喜欢

转载自super-wangj.iteye.com/blog/2390372