Struts2技术内幕


请输入要查询的词条内容:

Struts2技术内幕




基本信息


作者: 陆舟出版社:机械工业出版社

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在本书创作过程中给予我的帮助。与你在许多编程哲学上的探讨,每次都能让我受益匪浅。在本书的众多观点中,有许多出自你的连珠妙语。

最后感谢本书的策划编辑杨福川和关敏,你们是我见过的脾气最好、业务能力最强的出版人。我从你们的身上看到了一种坚韧不拔的精神和精益求精的态度。这对我的一生都有帮助。

相关分词: Struts2 Struts 技术 内幕