Spring MVC原理
*注释:完整文章包括图片在附件,请下载
1. 在web.xml配置一个servlet,如下图,这个是针对所有请求都拦击,如果只想拦击自定义请求url-pattern可以写成*.do或者*.action,这些请求交给spring mvc处理
2. 这个servlet1由DispatcherServlet处理,DispatcherServlet继承关系如下图,从这个继承关系我们知道这是标准的HttpServlet子类。
3.Spring容器启动时会准备好所需的工具,主要初始化如下图。
4.初始化上传文件的视图
5.初始化HandlerMappings,用来存放controller层@RequestMapping()的映射地址,这个很重要。
通过调试可以看到handlerMappings保存对象
6.初始化handlerAdapters,这个很重要,主要是http请求交给那个处理。
handlerAdapters初始化保存对象
7. 初始化initViewResolvers,主要是初始化视图如jsp或者freemarker和velocity等等。
8,由于继承HttpServlet,所以每个请求的入口时doGet或doPost方法,FrameworkServlet类入口。
9.然后由processRequest处理完交给DispatcherServlet的doService方法处理。
10. 然后有doDispatch处理,如下图。
mappedHandler = getHandler(processedRequest);针对每个http请求,从如下图
找到一个合适的mappedHandler 。
HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());针对每个http请求,从如下图
找到一个适配器HandlerAdapter ,用来处理http请求。
11.RequestMappingHandlerAdapter,这个类初始化的时候需要准备一些工具,如下图,afterPropertiesSet方法准备好argumentResolvers和returnValueHandlers还有initBinderArgumentResolvers。
12.argumentResolvers参数请求处理,如下图
通过这个方法,我们知道参数请求注入了很多类,这些类用来处理请求参数,从http请求参数到java对象都使用这些注入的类处理,其中自己也可以写一些类处理。使用注解的形式使用这些类。
13.returnValueHandlers返回对象的处理。如下图
放回对象的处理,返回对象如果使用如上图的注解,则会使用上图对应的注入对象处理。
14. invokeHandleMethod方法,处理请求,如下图。
ServletInvocableHandlerMethod requestMappingMethod = createRequestMappingMethod(handlerMethod, binderFactory);
这个方法针对每个请求new一个对象ServletInvocableHandlerMethod处理具体哪个类哪个方法处理http请求。
15.ServletInvocableHandlerMethod处理http请求。
16. ServletInvocableHandlerMethod的getMethodArgumentValues方法根据用户自定义的参数,选择合适的argumentResolvers解析参数,从http到java转换。
17.返回结果,从returnValueHandlers找到合适的对象解析返回的结果,可能是json或者xml等等。
分享到:
相关推荐
struts1工作原理 struts2工作原理 struts1和struts2比较 spring mvc工作原理 struts和spring mvc比较
_第一课:spring mvc 原理深度解析1
3、HandlerAdapter详解这里spring mvc 采用适配器模式来适配调用指定Handler,根据Handler的不同种类采用不同的Adapter,
本文详细介绍spring MVC的原理和开发心得体会。
开涛spring mvc教程PDF版,时候初学者理解spring mvc原理
Spring MVC非注解测试,用于理解spring mvc原理,然后再结合源码分析,更好的理解spring mvc
spring mvc 工作原理
可以了解spring mvc的开发环境,以及注解使用,对理解spring mvc的工作原理有直观的帮助。
spring mvc 框架 原理 机制 实例学习
适合新手了解认识spring mvc,和搭建spring mvc 框架
Spring MVC MYBatis企业应用实战,详细描述spring mvc原理及注解,怎么与mybatis整合,构建企业级web实战
主要为大家详细介绍了Spring mvc工作原理的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
手头有个项目用到了Spring MVC框架,一个星期要完成编码,我还不了解MVC框架的原理!于是乎找了本介绍Spring的书,翻到MVC那一章节,没想到两个小时,基本将MVC的原理都搞明白了,哈哈。
作为架构师和Java开发者,深入理解Spring MVC的原理和实践应用是非常重要的。本文通过分析Spring MVC的核心组件和执行流程,提供了一个全面的学习指南。 Spring MVC基于Model-View-Controller(MVC)架构模式,优化...
Spring+Mvc手写基本源码+思想流程图,快速理解spring+mvc原理。可根据流程图来自己写一个源码框架
《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及解析器 7...
如果面试问你Spring MVC的原理
21.1 Spring MVC原理总结272 21.2 实际跟踪一个请求275 第22章 异步请求281 22.1 Servlet 3.0对异步请求的支持281 22.1.1 Servlet 3.0处理异步请求实例282 22.1.2 异步请求监听器Async-Listener284 22.2 ...