spring mvc源码分析(续)——视图解析过程
2014-05-14 11:10
302 查看
(迁移ing)
在“Spring MVC源码分析(续)——请求处理 “ 中大概的描述了Spring MVC中如何为不同的请求找到其对应的处理器。经过这个过程,其获得了一个“视图对象”,也即ModelAndView。后续则是进行视图的渲染(输出)。
接上文,视图的解析在”processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);“中完成,处理流程图如下:
processDispatchResult主要处理异常、请求状态及触发请求完成事件,视图的渲染工作交给了render(),render()判断前面获得的ModelAndView对象是否为引用对象(也即此时有的只是视图的名称,没有获取其实例对象),如果是则需要调用resolveViewName从视图解析器获取对应的视图(View)对象,否则直接以其getView函数获取视图对象。最后,通过具体视图对象的render()函数完成视图的渲染。
在详细说明视图对象的render函数的工作原理之前,我们需要知道,Spring MVC中,在控制器处理结束并返回ModelAndView名称后,Spring会依次调用Spring容器中所注册的视图解析器(ViewResolver),来查找符合条件的视图。对于给定的视图名称,只需调用ViewResolver的resolveViewName接口即可获取其视图对象。Spring中默认提供了许多的视图解析器,当然,还有对应类型的视图对象,如针对JSP提供的InternalResourceViewResolver与InternalResourceView。
以视图解析器InternalResourceViewResolver为例,则视图的获取过程为:
这里有几处子类覆写了父类函数,并回调其覆盖的函数,主要是为了针对特定的实现类添加相关的应用逻辑。
以视图InternalResourceView为例,则视图的渲染过程为:
如果Spring默认提供的视图解析器与视图无法满足你的需要,你还可以创建自己的视图,具体可参考下面的文章:
1. 开发 Spring 自定义视图和视图解析器,地址:http://www.ibm.com/developerworks/cn/java/j-lo-springview/index.html?ca=drs-
在“Spring MVC源码分析(续)——请求处理 “ 中大概的描述了Spring MVC中如何为不同的请求找到其对应的处理器。经过这个过程,其获得了一个“视图对象”,也即ModelAndView。后续则是进行视图的渲染(输出)。
接上文,视图的解析在”processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);“中完成,处理流程图如下:
processDispatchResult主要处理异常、请求状态及触发请求完成事件,视图的渲染工作交给了render(),render()判断前面获得的ModelAndView对象是否为引用对象(也即此时有的只是视图的名称,没有获取其实例对象),如果是则需要调用resolveViewName从视图解析器获取对应的视图(View)对象,否则直接以其getView函数获取视图对象。最后,通过具体视图对象的render()函数完成视图的渲染。
在详细说明视图对象的render函数的工作原理之前,我们需要知道,Spring MVC中,在控制器处理结束并返回ModelAndView名称后,Spring会依次调用Spring容器中所注册的视图解析器(ViewResolver),来查找符合条件的视图。对于给定的视图名称,只需调用ViewResolver的resolveViewName接口即可获取其视图对象。Spring中默认提供了许多的视图解析器,当然,还有对应类型的视图对象,如针对JSP提供的InternalResourceViewResolver与InternalResourceView。
以视图解析器InternalResourceViewResolver为例,则视图的获取过程为:
这里有几处子类覆写了父类函数,并回调其覆盖的函数,主要是为了针对特定的实现类添加相关的应用逻辑。
以视图InternalResourceView为例,则视图的渲染过程为:
如果Spring默认提供的视图解析器与视图无法满足你的需要,你还可以创建自己的视图,具体可参考下面的文章:
1. 开发 Spring 自定义视图和视图解析器,地址:http://www.ibm.com/developerworks/cn/java/j-lo-springview/index.html?ca=drs-
相关文章推荐
- Spring MVC源码分析(续)——视图解析过程
- Spring MVC源码分析(续)——视图解析过程
- spring mvc json及各类视图解析 源码分析
- spring mvc json及各类视图解析 源码分析
- Fresco源码解析 - 初始化过程分析
- Hadoop源码分析HDFS Client向HDFS写入数据的过程解析
- OpenStack建立实例完整过程源码详细分析(13)----依据AMQP通信架构实现消息发送机制解析之二
- OpenStack建立实例完整过程源码详细分析(14)----依据AMQP通信架构实现消息接收机制解析之一
- spring源码分析-web容器初始化过程解析1
- 对Xabber源码解析的过程(1)工程目录分析
- Tinyxml解析过程源码分析
- Hadoop源码分析(1):HDFS读写过程解析
- Hadoop源码分析HDFS Client向HDFS写入数据的过程解析
- OpenStack建立实例完整过程源码详细分析(12)----依据AMQP通信架构实现消息发送机制解析之一
- hadoop源码分析(2):Map-Reduce的过程解析
- Spring mvc 视图解析器 ContentNegotiatingViewResolver 源码分析
- [Android源码分析]蓝牙文件传输过程解析之UI实现
- OpenStack建立实例完整过程源码详细分析(15)----依据AMQP通信架构实现消息接收机制解析之二
- Android短信源码分析 --PDU解析过程
- tomcat源码解析(二)——xml解析过程分析