博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC源码分析系列
阅读量:6285 次
发布时间:2019-06-22

本文共 1808 字,大约阅读时间需要 6 分钟。

说到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的同学来说,可以阅读以下,了解这个框架的结构以及使用,以入门的同学可以选择不看~

  2. 

    SpringMVC入口Servlet -> DispatcherServlet的分析,解释了DispatcherServlet的父类FrameworkServlet以及FrameworkServlet的父类HttpServletBean的作用

  3. 

    想知道http请求是如何找到对应Controller中的方法的吗,这个过程当中到底发生了什么,你知道吗? 本篇将为你一一解答。

  4. 

    同学们有想过http请求找到对应Controller中的方法之后,方法中的参数是如何被注入进来的吗?比如:

public String method(HttpServletRequest request, String name) {         ...        }

    这里的HttpServletRequest类型的request参数以及String类型的name参数是如何自动被注入到method方法中的?  主要是两个重要的接口的作用:HandlerMethodArgumentResolver(请求参数处理)和HandlerMethodReturnValueHandler(返回值处理)。文中还写了一个自定义的HandlerMethodArgumentResolver接口实现类FormObjArgumentResolver,该类处理Controller方法中多个自定义类参数的处理(建议看完类型转换文章后再看这个类的具体实现代码)。

  5. 

    通过json、xml的自动转换巩固第四篇文章的知识,自动转换由RequestResponseBodyMethodProcessor处理,该类实现了HandlerMethodArgumentResolver和HandlerMethodReturnValueHandler接口。

    6. 

    介绍了属性编辑器的概念以及Spring对属性编辑器的支持,本文知识消化之后可以回过头看第4篇中FormObjArgumentResolver的实现。

  7. 

    解释了SpringMVC拦截器的设计原理。

  8. 

    分析了SpringMVC的视图机制,主要也就是讲解View和ViewResolver这两个接口的作用。写完之后还写了篇关于重定向视图RedirectView的小吐槽:。

  9. 

    解释了SpringMVC异常机制的设计原理。

 

额外知识:

  

 

有同学想了解本系列没讲到的知识的话,如果觉得合适,楼主会继续写关于这些内容的博客的。

 

目前这些博客已经放到了github上: 

 

也可以在线阅读,或者下载pdf,moni,epub:

 

最后附上Spring4.0.2官方文档:

 

 

------ 2017.07.28 21:20:21 更新,画了个SpringMVC的处理流程图

转载于:https://www.cnblogs.com/fangjian0423/p/springMVC-directory-summary.html

你可能感兴趣的文章
重复数据删除和SSD的互补方法
查看>>
Using Regular Expressions in Python
查看>>
MVC 3.0 学习1
查看>>
Cracking the coding interview--Q1.1
查看>>
Delphi中GDI+实现图像二值化
查看>>
类的声明和实现 oc
查看>>
Cent OS 6.5安装 php memcached扩展
查看>>
LeetCode-152-Maximum Product Subarray
查看>>
Scrapy 学习记录
查看>>
【LeetCode每天一题】Maximum Subarray(最大子数组)
查看>>
DLL文件编译出错_DllMain@12 already defined in XXX.obj
查看>>
控件拖拽基本方法
查看>>
Python的内置函数
查看>>
从入门到精通聊聊区块链
查看>>
Linux下搭建tomcat集群全记录(转)
查看>>
ActiveMQ源码架构解析第一节(转)
查看>>
Zabbix监控系统部署:前端初始化
查看>>
设计模式之(十二)模板模式Template
查看>>
C语言图的建立及BFS,DFS遍历的代码
查看>>
R概率分布函数使用小结
查看>>