springMVC中 request请求数据绑定到Controller入参 过程剖析

发布时间:2016-12-6 8:19:57编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"springMVC中 request请求数据绑定到Controller入参 过程剖析 ",主要涉及到springMVC中 request请求数据绑定到Controller入参 过程剖析 方面的内容,对于springMVC中 request请求数据绑定到Controller入参 过程剖析 感兴趣的同学可以参考一下。

springMVC中 request请求数据绑定到Controller入参 过程剖析

前言:
Controller方法的参数类型可以是基本类型,也可以是封装后的普通Java类型。若这个普通Java类型没有声明任何注解,则意味着它的每一个属性都需要到Request中去查找对应的请求参数。众所周知,无论客户端传入的是什么类型的请求参数,最终都要以字节的形式传给服务端。而服务端通过Request的getParameter方法取到的参数也都是字符串形式的结果。所以,需要有一个把字符串形式的参数转换成服务端真正需要的类型的转换工具(基类:PropertyEditorSupport)

注:只有在请求头Content-Type为x-www-form-urlencoded类型时spring才能正常获取值,具体原因调试spring-web中WebUtils.getParametersStartingWith
请求头Content-Type类型参考文献:http://www.cnblogs.com/rgky/p/6081232.html 
1、request请求Controller的调用入口 InvocableHandlerMethod.invokeForRequest

①获取调用Controller所需的入参对象  ②调用Controller

2、获取Controller入参对象数组 InvocableHandlerMethod.getMethodArgumentValues
①获取Controller入参参数信息  ②遍历创建入参对象

3、创建入参对象 HandlerMethodArgumentResolverComposite.resolveArgument
①创建入参数据绑定处理类([email protected],会被执行)  ②创建入参对象、将request请求参数信息绑定到入参对象
 

4、将request请求参数信息绑定到入参对象 ServletRequestDataBinder.bind
①将request中的参数取出并封装  ②处理媒体文件上传数据封装

5、初始化入参对象具体的属性值  AbstractNestablePropertyAccessor.setPropertyValue
注:spring对Array、List、Map类型的属性做了处理,如Date日期类型就得自己添加编辑转换器,[email protected]

[email protected] 自定义入参对象属性值的编辑转换器
注:request中Parameter的值都是字符串,所以需要转换器处理(将字符串转换为所需的对象)
参考文献:
http://blog.csdn.net/axin66ok/article/details/17938095 
http://www.cnblogs.com/AloneSword/p/3998943.html 


上一篇:Java虚拟机JVM内存分区及代码执行机制
下一篇:@JsonProperty的使用

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款