
1
.................................................................................................................................................4 前言
2
..............................................................................................................................5 WEB MVC介绍
2.1
........................................................................................................................5 MVC体系结构
2.2
................................................................................................................6 WEB MVC体系结构
2.3
.................................................................................................................................7 本章小结
3
..........................................................................................................8 SPRING WEB MVC工作流
3.1
.............................................................................................................8 组件以及组件的接口
3.2
...............................................................................................................12 组件间的协调通信
3.3
...............................................................................................................................13 本章小结
4
................................................................................................14 SPRING WEB MVC的架构实现
4.1
..................................................................................................14 DISPATCHERSERVLET的实现
4.1.1
..........................................................................................15
通用
Servlet
和
HTTP Servlet
4.1.2
................................................................................................23
派遣器
Servlet
及其父类
4.1.3 .......................................................................................................45
根共享环境的加载
4.1.4 ....................................................................................................................55
其他
Servlet
4.2
................................................................55 处理器映射,处理器适配器以及处理器的实现
4.2.1
.......................................................................................................................56
横向剖析
4.2.1.1 .................................................................................................56 基于简单控制器流程的实现
4.2.1.2
.................................................................................................87 基于注解控制器流程的实现
4.2.1.3
......................................................................................137 基于HTTP请求处理器流程的实现
4.2.2 .....................................................................................................................157
纵向剖析
4.2.2.1 .......................................................................................................157 处理器映射的实现架构
4.2.2.2
...................................................................................................167 处理器适配器的实现架构
4.2.2.3
...............................................................................................................169 处理器的实现架构
4.2.2.4
...............................................................................................................196 拦截器的实现架构
4.2.2.5
.............................................................................................203 HTTP消息转换器的实现架构
4.3 .........................................................................................................203 视图解析和视图显示
4.3.1
..................................................................................203
基于
URL
的视图解析器和视图
4.3.1.1 ................................................................................214 内部资源视图解析器和内部资源视图
4.3.1.2
...............................................................................................219 瓦块视图解析器和瓦块视图
4.3.1.3
...............................................................................................222 模板视图解析器和模板视图
4.3.1.4
...........................................................................225 Jasper报表视图解析器和Jaspter报表视图
4.3.1.5
............................................................................................225 XSLT视图解析器和XSLT视图
4.3.2 .....................................................................................................233
更多的视图解析器
4.3.2.1 ...............................................................................................................233 Bean名视图解析器
4.3.2.2
...........................................................................................................234 内容选择视图解析器
4.3.2.3
...........................................................................................................237 资源绑定视图解析器
4.3.2.4
..................................................................................................................239 XML视图解析器
4.3.3 .................................................................................................................240
更多的视图
4.4 ...........................................................................................240 其他的SPRING WEB MVC组件
- 2 -

5 ................................................................................................................241 SPRING WEBFLOW
6
...............................................................................................................................242 SPRING安全
6.1
.............................................................................................................................242 横向剖析
6.1.1
.............................................................................................................251
首次登陆流程
6.1.2 .............................................................................................................251
登录失败流程
6.1.3 .............................................................................................................251
登录成功流程
6.1.4 .............................................................................................................251
退出登录流程
6.2 .............................................................................................................................251 纵向剖析
6.2.1
.....................................................................................251
过滤器和过滤器应用的顺序
6.2.2 .....................................................................................................................252
领域模型
6.2.3 .................................................................................................252
应用程序层次的安全
7 ...............................................................................................................................253 SPRING集成
8
.............................................254 SPRING远程调用, SPRING RMI和SPRING WEB SERVICE
9
......................................................................................255 与其他WEB MVC框架的对比与集成
10
........................................................................................................................256 APPFUSE的实现
11
.........................................................................................................257 SPRING WEB与设计模式
12
.............................................................................................................................................258 附录
12.1
..............................................................................................258 如何开始学习SPRING源代码
12.1.1
...................................................................................................258 J2SE/J2EE
通用文档
12.1.2 ..........................................................................................................258 Spring
参考文档
12.1.3 ...................................................................................................................258 Demo
代码
12.1.4 ..............................................................................................................258 Spring
源代码
12.1.4.1 .............................................................................................258 Spring Web相关项目组织结构
12.2 .............................................................................................................................258 书写习惯
- 3 -

1 前言
Spring 是一个优秀的轻量级企业应用开发框架,是 Java 开发中最流行的工具之一,Spring
在 Java 企业开发中具有举足轻重的作用。
Spring 是基于 JavaBeans 的控制翻转(Inversion of Control,IoC)原则进行配置管理,使得
应用程序的组建更加快捷简易。并且对 AOP 程序设计有较好的支持,使程序接口清晰易读,
并且通过 AOP 实现了声明式的安全和事物。Spring 的抽象的数据存取层次支持多种 ORM
框架。并且对 J2EE 的其他技术提供了简单而有效的接口。使 Spring 能够和任何 J2EE 进行
无缝的结合。
除此之外,Spring Web MVC 的体系架构更加优秀。本书从 Spring Web MVC 的架构原理和
设计思想进行了全面剖析,从源代码分析入手,让读者更深入、更彻底地认识 Spring,领略
Spring 的架构之美和设计之美, 从而使得我们在利用 Spring 进行开发时,不仅能知其然,还
能知其所以然,从本质上提升我们对 Spring 的理解和开发水平。
这不是一本 Spring 初学者的使用教材,这也不是一本 Spring 应用教科书,这是一本适合于
想要深入研究和学习 Spring 实现和架构的学术性书籍。这本书专注于讨论 Spring Web 技术,
尤其是 Spring Web MVC 的架构实现。希望对读者有所帮助。
- 4 -

2 Web MVC介绍
这一章,我们将首先介绍经典的 MVC 体系结构,通过对比 MVC 和 Web MVC 的区别,来
深入理解 Web MVC 的由来和特点。
2.1 MVC体系结构
首先,我们介绍一下 MVC 的体系结构。MVC 是软件工程中的一种软件架构模式。它把软
件系统分为三个基本部分:模型,视图和控制器。如图表 2-1。
图表 2-2
MVC 体系结构实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某
一部分的重复利用成为可能。除此之外此模式通过对复杂度的简化使程序结构更加直观。软
件系统通过对自身基本部份分离的同时也赋予了各个基本部分应有的功能。
控制器
定义应用程序行为和流程
映射用户动作到模型改变
选择用于响应的视图
控制器起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。响
应包括更新数据模型和选择视图解释数据模型。
视图
解释模型
请求模型更新
发送用户动作到控制器
- 5 -