博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】springmvc源码分析链接
阅读量:6711 次
发布时间:2019-06-25

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

说到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异常机制的设计原理。

 

额外知识:

  

 

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

 

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

转载于:https://www.cnblogs.com/xiaoying1245970347/p/5506687.html

你可能感兴趣的文章
《响应式Web图形设计》一第13章 响应Web设计中的图像
查看>>
shiro session 监听
查看>>
定时任务框架Quartz的新玩法
查看>>
段前缀的使用(0504)
查看>>
.NET Framework 源码
查看>>
开源大数据周刊-第6期
查看>>
centos上一键安装jdk、tomcat脚本
查看>>
排序算法 时间、空间复杂度
查看>>
心痛的感觉
查看>>
class - function ES6类的方法的两种定义方式及调用方式
查看>>
flex容器主轴上的部分元素单独设置位置
查看>>
window10安装Ubuntu虚拟机踩坑系列
查看>>
JavaScript倒计时
查看>>
ArrayList源码分析
查看>>
golang后端库gin笔记
查看>>
数据如何埋点?Mob统计分析电商类APP埋点需求
查看>>
图片 文件 转base64
查看>>
Vuex源码学习(四)module与moduleCollection
查看>>
python基础总结 Part.1
查看>>
【OC梳理】description
查看>>