什么是Spring MVC?为什么要会用Spring MVC?
Spring下的子项目:Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。
在大型网站和复杂系统的开发中,Java无疑具有很大的优势,而在Java的Web框架中 Spring MVC 以其强大的功能和简单且灵活的用法受到越来越多开发者的青睐。
Spring Web MVC能帮我们做什么?
-
让我们能非常简单的设计出干净的Web层和薄薄的Web层;
-
进行更简洁的Web层的开发;
-
天生与Spring框架集成(如IoC容器、AOP等);
-
提供强大的约定大于配置的契约式编程支持;
-
能简单的进行Web层的单元测试;
-
支持灵活的URL到页面控制器的映射;
-
非常容易与其他视图技术集成,如Velocity、FreeMarker等等,因为模型数据不放在特定的API里,而是放在一个Model里(Map数据结构实现,因此很容易被其他框架使用);
-
非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的API;
-
提供一套强大的JSP标签库,简化JSP开发;
-
支持灵活的本地化、主题等解析;
-
更加简单的异常处理;
-
对静态资源的支持;
-
支持Restful风格。
那么这份资料有什么特色?厉害在哪里?凭什么可以说能带我们看透Spring MVC源码?
-
全面介绍Spring MVC的架构、原理、核心概念和操作,通过案例完整呈现Tomcat的实现,系统总结Spring MVC九大组件的处理以及常用的技巧和最佳实践
-
国内资深Web开发专家根据Spring MVC最新技术撰写,基于实际生产环境,从基础知识、源代码和实战3个维度对Spring MVC的结构和实现进行详细讲解
-
本资料从最底层的架构和协议开始讲解,即使没有太多开发经验的读者也可以理解,同时由于本资料包含的内容全面而且深入,所以即使有丰富Web开发经验的读者读过之后也会有所收获。
-
本资料采用了总分总的结构,首先概述全资料内容,让大家在脑子里建立起整个框架,然后再对每个点展开分析,最后总结。这就好像一栋建筑, 首先把它的整体结构展示给大家,然后再具体介绍每个细节,这样就可以让大家思路清晰而不至于迷失方向。这种模式最符合人的认知方式,所以不仅仅适用于学习,而且可以使用到别的很多地方,比如,进入一个新公司后(特别是大型公司),首先要了解一下公司都有哪些部门,各个部门之间是怎么协调配合的,弄明白整体结构之后再思考自己的业务,这样就可以理解得更加深,做得更好,如果有机会再多了解点其他部门的业务,这样成长得就会更快。
-
本资料讲解的过程通俗易懂、深入浅出,对于不容易理解的内容,通过简单的例子让大家一目了然。在分析源代码的过程中还对一些代码分析了Spring MVC为什么要那么处理,那么处理有哪些好处,有些地方还为大家指出了需要注意的问题、可以实现的需求以及可以借鉴的东西等内容。
通过这份资料你可以得到什么?
-
系统学习网站的各种架构以及相应问题的解决方案。
-
零基础系统学习Web底层协议及其实现方法。
-
系统、深入地理解Spring MVC,为灵活开发高质量产品打下基础。
-
学习Spring MVC的编程技巧和设计理念,提高自己综合思考、整体架构的能力。
-
学习到笔者设计的一套分析源码的方法——器用分析法, 古人说“授人以鱼不如授人以渔”,虽然这套方法并不复杂但是对于分析复杂的代码却非常有用。
适用于哪些水平的读者学习?
-
有Java编程基础,想学习JavaWeb开发的读者。
-
有JavaWeb开发经验,想学习Spring MVC的读者。
-
有基础Spring MVC开发经验,想深入学习的读者。
-
有丰富Spring MVC开发经验,想学习Spring MVC底层代码的读者。
-
想自己开发Spring MVC插件的读者。
由于整个笔记比较全面,内容相当的多 ,这里仅展示资料的一些截图,。
第一篇 网站基础知识
本篇主要给大家介绍网站的基础知识,为后面具体分析Spring MVC打下基础。内容主要包括架构的演变、Web中涉及的协议、协议的实现方法、Java中的Servlet以及对一个完整的产品Tomcat的分析等5部分。
本篇的很多内容,如底层协议和Tomcat的实现方法,在正常做开发的时候并不会直接使用到,不过理解了之后可以让我们在进行具体开发的时候更加得心应手,就好像数学中的基本运算,我们不需要知道原理也可以借助计算器计算出结果,但是如果明白了共中的原理就可以对计算带来很多帮助。
比如,可以预先大概估计计算结果,当计算器的计算结果偏差很大时就可以看出来;可以使用一些简单的计算方法;还可以通过对具体内容的学习学到一些优秀思想,思想本身是很难学习的,需要通过一定的载体才可以传播,底层的知识就是这样的载体。
现在社会中普遍注重创新,共实创新是建立在扎实的基础之上的,如果没有扎实的基础就很难做出合理而且.易用的创建成果。所以本篇的内容虽然在开发中一般不会直接使用到,但是对于提高自己的能力非常重要。
第一章 网站架构及其演变过程
-
软件的三大类型
-
基础的结构并不简单
-
架构演变的起点
-
海量数据的解决方案
-
高并发的解决方案
-
底层的优化
-
小结
第二章 常见协议和标准
-
DNS协议
-
TCP/IP协议与Socket
-
HTTP协议
-
Servlet与Java Web开发
第三章 DNS的设置
-
DNS解析
-
Windows 7设置DNS服务器
-
Windows设置本机域名和IP的对应关系
第四章 Java 中 Socket的用法
-
普通Socket的用法
-
NioSocket的用法
第五章 自己动手实现HTTP协议
第六章 详解Servlet
-
Servlet接口
-
GenerieServlet
-
HttpServlet
第七章 Tomcat分析
-
Tomcat的顶层结构及启动过程
-
Tomcat的生命周期管理
-
Container分析
-
Pipeline-Value管道
-
Connector分析
第二篇 俯视Spring MVC
Spring MVC的本质共实就是一个 Servlet,,本篇将从顶层分析Spring MVC的结构,让大家对Spring MVC有个整体的认识。
对一个框架的学习,首先要知道怎么用,然后才好进行分析。由于Spring MVC的结构比较复杂,所以对共分析需要有一定的策略,否则很容易陷到具体的细节里面,感觉代码大概也能看明白,但具体怎么回事也说不清。
古人说“工欲善共事,必先利共器",我们要分析的Spring MVC就是这么一个器。首先Spring MVC是一个工具,然后才能用来干活,既然是个工具,首先就要将其制造(创建)出来,然后才可以用它干活,所以Spring MVC的代码可以分成两步来进行分析,第一步分析Spring MVC是怎么创建出来的,第二步分析它是怎么干活的。
这种方法可以在一个复杂的类的很多看似杂乱无章的方法中快速梳理出头绪,所以它不仅可以用于分析Spring MVC的源码,分析别的源码也可以使用,特别是分析一些复杂源码的时候。
本资料不仅是在分析Spring MVC整体结构时用了这种思路,在后面分析组件的过程中也还会有很多地方使用这种思路。为了方便称呼,就将要分析的目标叫作“器",用法叫作“用”,备先分析“器”的创建再分析“用”的方法的分析法称为“器用分析法”。
第八章 Spring MVC之初体验
-
环境搭建
-
Spring MVC最简单的配置
-
关联spring源代码
-
小结
第九章 创建Spring MVC之器
-
整体结构介绍
-
HttpServletBean
-
FrameworkServlet
-
DispatcherServlet
-
小结
第十章 Spring MVC之用
-
HttpServletBean
-
FrameworkServlet
-
DispatcherServlet
-
doDispatch结构
-
小结
第三篇 Spring MVC组件分析
在前面已经分析了Spring MVC整体的结构以及处理流程,本篇对每个具体的组件进行详细的分析。
首先,介绍各个组件的接口、功能和用法,让大家明白它们到底是什么,有什么用,怎么用,对它们有个宏观认识,然后具体对每个组件的各种实现方式进行详细分析。
第十一章 组件概览
-
HandlerMapping
-
HandlerAdapter
-
HandlerExceptionResolver
-
ViewResolver
-
RequestToViewNameTranslator
-
LocaleResolver
-
ThemeResolver
-
MultipartResolver
-
FlashMapManager
-
小结
第十二章 HandlerMapping
-
AbstractHandlerMapping
-
AbstractUrlHandlerMapping系列
-
AbstractHandlerMethodMapping系列
-
小结
第十三章 HandlerAdapter
-
RequestMappingHandlerAdapter概述
-
RequestMappingHandlerAdapter自身结构
-
ModelAndViewContainer
-
SessionAttributesHandler和SessionAttributeStore
-
ModelFactory
-
ServletlnvocableHandlerMethod
-
HandlerMethodArgumentResolver
-
HandlerMethodReturnValue-Handler
-
小结
第十四章 ViewResolver
-
ContentNegotiatingViewResolver
-
AbstractCachingViewResolver系列
-
小结
第十五章 RequestToViewName-Translator
第十六章 HandlerExceptionResolver
-
AbstractHandlerException-Resolver
-
ExceptionHandlerException-Resolver
-
DefaultHandlerExceptionResolver
-
ResponseStatusExceptionResolver
-
SimpleMappingExceptionResolver
-
小结
第十七章 MultipartResolver
-
StandardServletMultipart-Resolver
-
CommonsMultipartResolver
-
小结
第十八章 LocaleResolver
第十九章 ThemeResolver
第二十章 FlashMapManager
第四篇 总结与补充
前面三篇已经将Spring MVC的源代码分析完毕,本篇主要对前面的内容做一个总结, 另外再将异步请求相关的内容给大家做个补充。
学习完一样东西之后及时地总结可以在很短的时间内获得很大的收获,这不仅适用于开源框架的学习,同时也适用于其他内容的学习。
这么做首先可以加深对所学内容的印象,更重要的是可以站在更高的层次来综合思考,这样就可以将所学的内容整合到一个整体结构中,并且这时候很容易想明白原来没理解的疑点,也就是所谓的将书“先看厚再看薄”中看薄的过程。
异步请求是现在比较热门的一种技术,Spring MVC也提供了对它的支持,不过它的异步请求处理过程是分散在整个请求处理过程的各个环节中的,所以如果在分析Spring MVC怎么处理请求之前讲解异步处理会比较困难,另外异步请求有其独立的处理方式,如果将它的内容分散到对Spring MVC分析的过程中讲解将会加大大家对Spring MVC理解的难度,所以单独将这部分内容通过补充的形式放在最后讲解给大家。
第二十一章 总结
-
Spring MVC原理总结
-
实际跟踪一个请求
第二十二章 异步请求
-
Servlet 3.0对异步请求的支持
-
Spring MVC中的异步请求
-
小结
写在最后
Spring MVC入门很简单,但是要想真正使用好却并非易事,而且现在也没有全面、深入地使用资料,以致在实际使用的过程中程序员经常会遇到各种各样的问题而不知道如何解决。对Spring MVC这样的开源项目来说,最好的学习方法当然是分析它的源代码,分析透源代码不仅可以让我们更灵活地使用Spring MVC来开发高质量的产品,而且可以学习到其中的很多优秀的编程技巧和设计理念。
当然,并不是说像看小说一样翻一遍资料就可以获得这么多东西,这需要大家真正沉下心来认真地去看,而且最好能对照着源代码去看。
俗话说“磨刀不误砍柴工”,分析源代码就是磨刀的过程,是真正提升自己实力的过程,就像武术里的内功修炼一样,只有花足够的时间和精力才能到达一定的高度,这就是我们经常说的“功夫”,当功夫达到一定的高度时很多棘手的问题就可以轻而易举地解决了。
这份资料除了分析SpringMVC的源代码,还系统地介绍了各种网站架构的演变以及Web开发中所涉及的协议和Tomcat的实现方法,现在很多程序员都想了解这方面的知识,但苦于缺乏通俗易懂的资料,而且这些也是程序员达到更高的层次所需要的知识。