标题：Struts2技术内幕
基本信息
作者： 陆舟  [1]出版社：机械工业出版社 
ISBN：9787111366966
上架时间：2011-12-16
出版日期：2012 年1月
开本：16开
页码：1
版次：1-1
所属分类： 计算机
内容简介
《struts2技术内幕：深入解析struts架构设计与实现原理》由国内极为资深的struts2技术专家（网名：downpour）亲自执笔，iteye兼csdn产品总监范凯（网名：robbin）以及51cto等技术社区鼎力推荐。
《struts2技术内幕：深入解析struts架构设计与实现原理》以struts2的源代码为依托，通过对struts2的源代码的全面剖析深入探讨了struts2的架构设计、实现原理、设计理念与设计哲学，对从宏观上和微观上去了解struts2的技术内幕提供了大量真知灼见。同样重要的是，本书还深入挖掘并分析了struts2源代码实现中蕴含的大量值得称道的编程技巧和设计模式，这对开发者从struts2的设计原理上去掌握和悟透web层开发的要点和本质提供了绝佳的指导。
《struts2技术内幕：深入解析struts架构设计与实现原理》主要分为3大部分，内容安排具有极强的逻辑推理性，章和章之间互相呼应且互为印证。知识准备篇首先介绍了获取、阅读和调试struts2源代码的方法，以及struts2源代码的组织形式；然后厘清了web开发中极易混淆的一些重要概念，以及struts2的核心技术、宏观视图、微观元素、配置元素等，提纲挈领地对struts2进行了多角度的讲解。核心技术篇首先分析了struts2中多种具有代表性的设计模式，然后对struts2中的精华——ognl表达式引擎和xwork框架的原理及机制进行了全面深入的分析和讲解。运行主线篇首先对struts2的两大运行主线——初始化主线和http请求处理主线进行了深入的剖析，然后对struts2的扩展机制进行了解读和抽象。 
目录
《struts2技术内幕：深入解析struts架构设计与实现原理》 
前　言 
第一部分　知识准备篇 
第1章　厉兵秣马—开发环境准备 / 3 
1.1　准备源代码阅读环境 / 3 
1.1.1　安装与配置jdk / 3 
1.1.2　安装eclipse与源码调试 / 5 
1.1.3　安装与配置web服务器 / 7 
1.1.4　在eclipse中使用jetty搭建web开发环境 / 8 
1.2　获取struts2 / 12 
1.2.1　struts2的相关资源下载 / 12 
1.2.2　struts2项目的目录组织结构 / 13 
1.3　struts2源码的初步研究 / 14 
1.3.1　源码的组织形式 / 14 
1.3.2　调试struts2源码 / 15 
1.4　小结 / 18 
第2章　固本清源—web开发浅谈 / 20 
2.1　面向对象浅谈 / 20 
2.1.1　对象构成模型 / 21 
2.1.2　对象关系模型 / 25 
.2.1.3　面向对象编程的基本观点 / 28 
2.2　框架的本质 / 30 
2.3　最佳实践 / 34 
2.4　web开发的基本模式 / 36 
2.4.1　分层开发模式 / 36 
2.4.2　mvc模式 / 38 
2.5　表示层的困惑 / 40 
2.6　如何学习开源框架 / 45 
2.7　小结 / 49 
第3章　提纲挈领—struts2概览 / 50 
3.1　struts2的来世今生 / 50 
3.2　struts2面面观 / 51 
3.2.1　struts2的运行环境 / 52 
3.2.2　struts2的应用场景 / 53 
3.2.3　struts2的核心技术 / 54 
3.3　多视角透析struts2 / 56 
3.3.1　透视镜 — struts2的宏观视图 / 56 
3.3.2　显微镜 — struts2的微观元素 / 60 
3.4　struts2的配置元素 / 64 
3.4.1　struts2配置详解 / 65 
3.4.2　struts2配置元素定义 / 67 
3.4.3　struts2配置元素的分类 / 71 
3.5　小结 / 72 
第二部分　核心技术篇 
第4章　源头活水—struts2中的设计模式 / 75 
4.1　threadlocal模式 / 75 
4.1.1　线程安全问题的由来 / 75 
4.1.2　threadlocal模式的实现机理 / 78 
4.1.3　threadlocal模式的应用场景 / 81 
4.1.4　threadlocal模式的核心元素 / 82 
4.2　装饰（decorator）模式 / 85 
4.2.1 　装饰模式的定义 / 85 
4.2.2　装饰模式的构成要素 / 86 
4.2.3　装饰模式的应用案例 / 87 
4.3　策略（strategry）模式 / 90 
4.3.1　策略模式的定义 / 90 
4.3.2　策略模式的应用场景 / 91 
4.3.3 　策略模式的深入思考 / 93 
4.4　构造（builder）模式 / 95 
4.4.1　构造模式的核心要素 / 95 
4.4.2　构造模式的应用场景 / 97 
4.4.3　对象构造步骤 / 100 
4.5　责任链（chain of responsibility）模式 / 101 
4.5.1　责任链模式的定义 / 101 
4.5.2　责任链模式的逻辑意义 / 102 
4.6　小结 / 103 
第5章　生命之源—xwork中的容器 / 105 
5.1　容器，对象生命周期管理的基石 / 105 
5.1.1　对象的生命周期管理 / 105 
5.1.2　容器（container）的引入 / 106 
5.1.3　容器（container），不是容器（collection） / 107 
5.2　xwork容器概览 / 108 
5.2.1　xwork容器的定义 / 108 
5.2.2　xwork容器的管辖范围 / 111 
5.2.3　xwork容器操作详解 / 113 
5.3　深入浅出xwork容器 / 117 
5.3.1　xwork容器的存储结构 / 117 
5.3.2　xwork容器的实现机理 / 124 
5.4　统一的容器操作接口—objectfactory / 129 
5.5　小结 / 135 
第6章　灵丹妙药—ognl，数据流转的催化剂 / 136 
6.1　架起数据沟通的桥梁 — 表达式引擎 / 136 
6.1.1　数据流转的困境 / 136 
6.1.2　数据访问的困境 / 138 
6.1.3　表达式引擎 / 138 
6.2　强大的ognl / 140 
6.2.1　深入ognl的api / 140 
6.2.2　ognl三要素 / 142 
6.2.3　ognl的基本操作 / 143 
6.2.4　深入this指针 / 146 
6.2.5　有关#符号的三种用途 / 147 
6.3　深入ognl内部 / 147 
6.3.1　深入ognlcontext / 147 
6.3.2　深入ognl的计算规则 / 150 
6.3.3　深入ognl的扩展方式 / 164 
6.4　小结 / 173 
第7章　别具匠心—xwork设计原理 / 175 
7.1　请求-响应的哲学 / 175 
7.1.1　请求-响应的基本概念 / 175 
7.1.2　请求-响应的实现模式 / 177 
7.1.3　分歧和职责 / 181 
7.2　数据流和控制流 / 184 
7.2.1　再谈mvc / 184 
7.2.2　数据载体的战争 / 186 
7.2.3　控制流的细节 / 191 
7.3　xwork概览 / 193 
7.3.1　xwork的宏观视图 / 193 
7.3.2　xwork的微观视图 / 195 
7.4　小结 / 199 
第8章　庖丁解牛—xwork元素详解 / 200 
8.1　深入xwork宏观视图 / 200 
8.1.1　数据流体系 / 200 
8.1.2　控制流体系 / 203 
8.2　数据流体系 — 相互依存 / 205 
8.2.1　actioncontext — 一个平行世界 / 205 
8.2.2　valuestack — 对ognl的扩展 / 216 
8.2.3　深入valuestack的实现 / 225 
8.2.4　形影不离、相互依存的actioncontext与valuestack / 231 
8.3　控制流体系 — 有条不紊 / 233 
8.3.1　action — 革命性突破 / 233 
8.3.2　interceptor—腾飞的翅膀 / 238 
8.3.3　actioninvocation—核心调度 / 247 
8.3.4　actionproxy—执行窗口 / 254 
8.4　交互体系—水乳交融 / 258 
8.4.1　数据环境的生命周期 / 259 
8.4.2　三军会师之地 / 260 
8.4.3　action交互体系 / 261 
8.5　小结 / 268 
第三部分　运行主线篇 
第9章　包罗万象—struts2初始化主线 / 273 
9.1　配置元素与初始化主线 / 273 
9.1.1　从入口程序开始 / 273 
9.1.2　初始化主线的核心驱动力 / 276 
9.1.3　初始化主线的构成元素 / 277 
9.2　核心分发器 — dispatcher / 278 
9.2.1　核心分发器的核心驱动作用 / 278 
9.2.2　核心分发器的数据结构 / 280 
9.3　配置元素的加载器（provider） / 282 
9.3.1　配置元素加载器的作用 / 282 
9.3.2　容器加载器—containerprovider / 283 
9.3.3　事件映射加载器—packageprovider / 285 
9.4　配置元素的构造器（builder） / 288 
9.4.1　容器构造器—containerbuilder / 289 
9.4.2　事件映射构造器 — packageconfig.builder / 290 
9.5　配置元素的管理类 / 295 
9.5.1　配置管理元素 — configuration / 296 
9.5.2　配置操作接口 — configurationmanager / 299 
9.6　struts2初始化主线详解 / 300 
9.6.1　核心分发器的初始化 / 301 
9.6.2　容器的初始化 / 306 
9.7　小结 / 313 
第10章　井然有序—与http请求的战斗 / 314 
10.1　制定作战计划 / 314 
10.1.1　战斗资源 / 314 
10.1.2　战斗进程 / 315 
10.2　第一战场—http请求的预处理阶段 / 317 
10.2.1　三探入口程序 / 317 
10.2.2　http请求预处理类—prepareoperations / 320 
10.2.3　http请求的执行类—executeoperations / 326 
10.3　第二战场 — xwork处理阶段 / 330 
10.3.1　执行控制权的移交 / 330 
10.3.2　actioninvocation调度的再分析 / 334 
10.4　小结 / 338 
第11章　展翅高飞 — 让视图放开手脚 / 339 
11.1　视图（view）概述 / 339 
11.1.1　视图表现技术 / 339 
11.1.2　视图的本质 / 343 
11.1.3　视图的职责 / 344 
11.2　深入result机制 / 345 
11.2.1　result的不同视角 / 345 
11.2.2　result职责分析 / 348 
11.3　标签库，永恒的争论话题 / 349 
11.3.1　标签库产生的初衷 / 350 
11.3.2　标签库，毒药还是解药 / 350 
11.3.3　标签库的发展趋势 / 352 
11.3.4　标签的分类 / 353 
11.4　数据访问的哲学 / 354 
11.4.1　不要问我从哪里来 / 354 
11.4.2　不要问我长什么样 / 358 
11.5　小结 / 359 
第12章　三头六臂—struts2的扩展机制 / 360 
12.1　程序扩展机制的深入思考 / 360 
12.1.1　插件模式的基本概念 / 360 
12.1.2　常见的插件模式 / 362 
12.1.3　插件模式的利弊分析 / 364 
12.2　struts2的插件模式 / 366 
12.2.1　深入struts2插件 / 366 
12.2.2　struts2插件分类 / 369 
12.2.3　struts2的插件加载机制 / 372 
12.3　小结 / 379 
后记 / 380
前言
为什么写本书 
在基于Java的Web开发领域，Apache旗下的Struts无疑具有非常重要的地位。从历史上看，Struts是出现较早的Web层解决方案，它借助Apache的影响力积累了大量的客户群体。在之后的岁月中，Struts吸收合并了另外一个开源社区的精品Webwork2成为Struts2，借助Webwork2先进的设计理念和优雅的实现及原先Struts社区积累的人气，打造成新一代的Web开发解决方案。 
无疑，Struts2赢得了众多开发者的认同，也赢得了市场。目前，Struts2已经成为Web开发解决方案的一股重要力量，并拥有庞大的开发者社群。 
对开发者来说，随着Web开发技术的不断革新，往往都需要一个优秀的框架作为程序开发的骨架，并在这个基础上完成Web层所赋予的任务。而Struts2，向我们提供了一个完整的Web层设计和开发的思路，为我们展示了许多Web层设计和开发的最佳实践。可以说，使用Struts2作为解决方案，已经成为绝大多数Web开发者的首选。 
Struts2的源码中，不仅包含了优秀的Web层设计理念，而且蕴含了许多编程技巧和设计模式。通过本书，读者可以加深对Web开发职责的理解，从而提高自己的开发水平，拓展自己的技术视野。除此之外，本书所介绍的一些哲学观点，相信也能成为读者重新思考Web开发的重要借鉴。 
本书面向的读者 
1.学习 Java语言和Java EE技术的中高级读者 
对这部分读者来说，Struts2和XWork的核心设计思想以及建立在此基础之上的源代码，是极佳的学习Java和Java EE技术的参考资料。 
2.Struts2的研究和开发人员 
对这部分读者来说，本书的内容能够帮助他们加深对Struts2和XWork设计原理的哲学理解，并成为他们定制和扩展Struts2框架的宝贵参考资料。 
3.开源软件爱好者 
在本书中，我们不仅提供了Struts2的学习方法，还向大家介绍了一整套完整的开源软件的学习方法，可以帮助这部分读者提高使用开源软件的效率和质量。 
4.平台开发人员和架构师 
Struts2蕴含的深刻的软件设计理念，可以提高这部分读者对软件架构的认识和设计能力。 
本书的主要内容 
本书主要分为三个部分：知识准备篇、核心技术篇和运行主线篇。 
知识准备篇（第1章～第3章）。除了介绍和分析解读Struts2的基本环境之外，这一篇的重要任务是帮助读者梳理Web开发中的主要概念和知识体系。 
核心技术篇（第4章～第8章）。将对Struts2所依赖的一些核心技术一一做出详细解读，包括Struts2中所用到的设计模式、XWork的容器实现、OGNL表达式引擎、XWork框架的控制流和数据流体系等等。 
运行主线篇（第9章～第12章）。其中主要涉及对Struts2两大核心运行主线的研究以及对Struts2的扩展机制的分析。 
本书的篇章安排有很强的逻辑性，章和章之间互相呼应、互相论证。读者在阅读时可以带着问题到后续章节中去寻找答案，而在每章的小结中，我们会为读者安排每章的概要性问题，大家可以在此做一个回顾并思考问题的答案，从而起到温故而知新的效果。 
.
致谢
首先要感谢iteye，感谢iteye的站长robbin，是iteye给了我Web开发知识的启蒙教育。也是在iteye上，我第一次接触到了Struts2的前身Webwork 2。而iteye多年来在Web开发领域所掀起的各种讨论，也成为本书许多重要观点的产生源泉。 
感谢robbin、Readonly、moxie，还有许多曾经活跃在iteye上的朋友，你们都是曾经为Struts2在国内的推广做出过杰出贡献的人。本书的所有成果，都只是“站在了巨人的肩膀之上”，集合了众家之言而形成的Web开发之道。 
特别感谢ahuaxuan在本书创作过程中给予我的帮助。与你在许多编程哲学上的探讨，每次都能让我受益匪浅。在本书的众多观点中，有许多出自你的连珠妙语。 
最后感谢本书的策划编辑杨福川和关敏，你们是我见过的脾气最好、业务能力最强的出版人。我从你们的身上看到了一种坚韧不拔的精神和精益求精的态度。这对我的一生都有帮助。