SpringMVC源码
SpringMVC源码分析系列
说到java的mvc框架,struts2和springmvc想必大家都知道,struts2的设计基本上完全脱离了Servlet容器,而springmvc是依托着Servlet容器元素来设计的,同时springmvc基于Spring框架,Spring框架想必搞java的同学都很熟悉。

一进Spring的官网就发现了这样一排醒目的文字, spring可以让我们构造简单的、便携的、又快又易于扩展的基于jvm的系统和应用程序。
没错,基于Spring的MVC框架SpringMVC同样也可以构造具有这些特性的系统。
楼主从5.1开始写的第一篇《SpringMVC入门》开始,到现在差不多将近2个月的时间,之后陆陆续续写了几篇关于SpringMVC的源码分析文章。
有同学想研究SpringMVC源码或想深入学习一下SpringMVC的话,可以参考本系列文章。
废话不多说,本系列的文章都是基于Spring4.0.2版本的,楼主写的时候出到了4.0.2,也是最新的,现在的最新版本是4.0.5。
文章阅读顺序:
1. SpringMVC入门
SpringMVC的入门文章, 对于某些没接触过SpringMVC的同学来说,可以阅读以下,了解这个框架的结构以及使用,以入门的同学可以选择不看~
2. SpringMVC核心分发器DispatcherServlet分析
SpringMVC入口Servlet -> DispatcherServlet的分析,解释了DispatcherServlet的父类FrameworkServlet以及FrameworkServlet的父类HttpServletBean的作用
3. 详解SpringMVC请求的时候是如何找到正确的Controller
想知道http请求是如何找到对应Controller中的方法的吗,这个过程当中到底发生了什么,你知道吗? 本篇将为你一一解答。
4. 详解SpringMVC中Controller的方法中参数的工作原理
同学们有想过http请求找到对应Controller中的方法之后,方法中的参数是如何被注入进来的吗?比如:
public String method(HttpServletRequest request, String name) {
...
}
这里的HttpServletRequest类型的request参数以及String类型的name参数是如何自动被注入到method方法中的? 主要是两个重要的接口的作用:HandlerMethodArgumentResolver(请求参数处理)和HandlerMethodReturnValueHandler(返回值处理)。文中还写了一个自定义的HandlerMethodArgumentResolver接口实现类FormObjArgumentResolver,该类处理Controller方法中多个自定义类参数的处理(建议看完类型转换文章后再看这个类的具体实现代码)。
5. SpringMVC关于json、xml自动转换的原理研究
通过json、xml的自动转换巩固第四篇文章的知识,自动转换由RequestResponseBodyMethodProcessor处理,该类实现了HandlerMethodArgumentResolver和HandlerMethodReturnValueHandler接口。
介绍了属性编辑器的概念以及Spring对属性编辑器的支持,本文知识消化之后可以回过头看第4篇中FormObjArgumentResolver的实现。
解释了SpringMVC拦截器的设计原理。
分析了SpringMVC的视图机制,主要也就是讲解View和ViewResolver这两个接口的作用。写完之后还写了篇关于重定向视图RedirectView的小吐槽:SpringMVC重定向视图RedirectView小分析。
解释了SpringMVC异常机制的设计原理。
额外知识:
有同学想了解本系列没讲到的知识的话,如果觉得合适,楼主会继续写关于这些内容的博客的。
最后附上Spring4.0.2官方文档:http://docs.spring.io/spring/docs/4.0.2.RELEASE/spring-framework-reference/htmlsingle/
SpringMVC源码的更多相关文章
- SpringMVC源码剖析(四)- DispatcherServlet请求转发的实现
SpringMVC完成初始化流程之后,就进入Servlet标准生命周期的第二个阶段,即“service”阶段.在“service”阶段中,每一次Http请求到来,容器都会启动一个请求线程,通过serv ...
- SpringMVC源码分析系列
说到java的mvc框架,struts2和springmvc想必大家都知道,struts2的设计基本上完全脱离了Servlet容器,而springmvc是依托着Servlet容器元素来设计的,同时sp ...
- SpringMVC源码剖析(二)- DispatcherServlet的前世今生
上一篇文章<SpringMVC源码剖析(一)- 从抽象和接口说起>中,我介绍了一次典型的SpringMVC请求处理过程中,相继粉墨登场的各种核心类和接口.我刻意忽略了源码中的处理细节,只列 ...
- springMvc源码学习之:spirngMvc的参数注入的问题
转载:https://my.oschina.net/lichhao/blog/172562 概述 在SpringMVC中,可以使用@RequestBody和@ResponseBody两个注解,分别完成 ...
- SpringMVC 源码深度解析<context:component-scan>(扫描和注冊的注解Bean)
我们在SpringMVC开发项目中,有的用注解和XML配置Bean,这两种都各有自己的优势,数据源配置比較经经常使用XML配置.控制层依赖的service比較经经常使用注解等(在部署时比較不会改变的) ...
- 8、SpringMVC源码分析(3):分析ModelAndView的形成过程
首先,我们还是从DispatcherServlet.doDispatch(HttpServletRequest request, HttpServletResponse response) throw ...
- 7、SpringMVC源码分析(2):分析HandlerAdapter.handle方法,了解handler方法的调用细节以及@ModelAttribute注解
从上一篇 SpringMVC源码分析(1) 中我们了解到在DispatcherServlet.doDispatch方法中会通过 mv = ha.handle(processedRequest, res ...
- SpringMVC源码解析- HandlerAdapter - ModelFactory(转)
ModelFactory主要是两个职责: 1. 初始化model 2. 处理器执行后将modle中相应参数设置到SessionAttributes中 我们来看看具体的处理逻辑(直接充当分析目录): 1 ...
- SpringMVC源码情操陶冶-FreeMarker之web配置
前言:本文不讲解FreeMarkerView视图的相关配置,其配置基本由FreeMarkerViewResolver实现,具体可参考>>>SpringMVC源码情操陶冶-ViewRe ...
随机推荐
- Pro Aspnet MVC 4读书笔记(3) - Essential Language Features
Listing 4-1. The Initial Content of the Home Controller using System; using System.Collections.Gener ...
- VisualSVN
Symptoms When performing a large commit to VisualSVN Server over the HTTPS protocol, the Subversion ...
- SendRedirect和forward差分
(1)重定向JSP实现JSP/Servlet跳转到目标资源的方法中,基本的想法是:server目标资源完成URL通过HTTP 在回答本报发client浏览器.收到的浏览器URL更新到地址栏后,而目标资 ...
- -Android的发展webservice-号码归属地查询
代码地址:http://download.csdn.net/detail/jiangliqing1234/8027039 流程具体解释:http://blog.csdn.net/lyq8479/art ...
- 从头到尾彻底理解KMP(转)
引言 KMP原文最初写于2年多前的2011年12月,因当时初次接触KMP,思路混乱导致写也写得非常混乱,如此,留言也是骂声一片.所以一直想找机会重新写下KMP,但苦于一直以来对KMP的理解始终不够,故 ...
- 第三十讲:Android之Animation(五)
天行健,君子以自强不息.--<周易·乾·象> 本讲内容:逐帧动画 Frame Animation 逐帧动画 Frame Animation就是说一帧一帧的连起来播放就变成了动画,和放电影的 ...
- 【Java】【jquery】ajax垃圾问题
1.暗示HTML.JSP文件本身使用UTF-8格公式 2.HTML的head加: <META http-equiv="Content-Type" content=" ...
- js之按键总结
js 实现键盘记录 兼容FireFox和IE 2009-01-07 11:43 作者:羽殇仁 转载请注明出处,谢谢. 本篇文章是我的第一百篇blog文章,恭喜一下! 这两天突然想弄弄js的键盘记录,所 ...
- (二)spring MVC配置
使用Maven添加依赖的jar包 <!-- 自动扫描的包名 --> <mvc:reso ...
- maven添加本地jar包依赖
1. 在java工程下新建文件夹,如repo/allin/allin-util/0.1 然后jar包扔进去,如下图: 2. 修改pom.xml文件,增加以下 <repositories> ...