首页>参考读物>计算机科学与技术>软件与程序设计

Struts2技术内幕:深入解析Struts架构设计与实现原理
作者 : 陆舟 著
出版日期 : 2011-12-14
ISBN : 978-7-111-36696-6
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 391
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

Struts 2 是Java Web 应用首选的MVC 框架。本书主要分为3个部分:准备篇讲述了源代码阅读环境、Struts的组织结构、MVC框架及Web开发等话题相关的作者观点,并通过一个Hello World的例子作为Struts技术的入门实践;在核心实现篇中,通过源码解析,帮助广大开发者从Struts 2自身的设计原理上去掌握Web层开发的要点,如数据、动作、拦截器、视图、Plugin、配置、过程等;最佳实践篇介绍了一些在实战中提炼出来的针对Struts 2的扩展和应用,可以帮助广大开发者更好地进行Struts 2开发的最佳实践。

图书特色

Struts2是一个高度成熟的Web开发框架,无论是稳定性还是可靠性都经过了市场的检验,几乎已成为Web开发领域的事实标准。Struts2框架本身的使用并不难,难的是通过理解它的实现原理来更好地指导基于框架的Web应用开发。本书以Struts2的源代码为依托,以分析它的架构设计与实现原理为手段,深刻揭示了Struts2框架背后的设计哲学和Web层的设计理念。不仅能从宏观和微观上帮助读者透彻认识Struts2框架的实现原理和实现细节,而且还能帮助他们更好地利用Struts2进行Web应用开发。强烈推荐!
—— 51CTO(www.51cto.com,中国领先的IT技术社区)

目前主流的Web开发框架是Struts2和SpringMVC,相比较而言,我个人比较偏爱Struts2。基于Webwork内核的Struts2最早是由天才程序员Richard Oberg开发的,Richard也是JBoss的首任架构师,AOP领域的开拓者之一。Struts2的核心框架Xwork本身是一个非常精致小巧的IoC容器,其AOP的实现方式也有众多精巧之处值得细细品味。
本书作者陆舟是ITeye(原JavaEye)的资深会员之一,在Java Web开发版块非常活跃,是我所知道的国内对Struts2掌握程度非常深入的几个人之一。尤为难得的是,他写技术文章的逻辑性极强,对Struts2的整个架构和体系的介绍可谓有条不紊,滴水不漏。我个人特别喜欢本书对XWork框架和OGNL表达式语言浓墨重彩的剖析,因为XWork和OGNL是Struts2最为精华的部分,也是很多人掌握不好的地方。对于希望全面和深入掌握Struts2的朋友,我强烈推荐这本书。
—— 范凯(Robbin) ITEye创始人/CSDN产品总监

Spring、Struts和Hibernate这三大框架是从事企业级Java应用开发的程序员必须掌握的。合格的Java程序员要能够掌握框架的功能、配置与使用,优秀的Java程序员要能够理解框架的设计思想和实现原理。本书通过源代码深入分析了Struts2框架的实现原理,不仅能让读者知其然,还能让读者知其所以然,是Java程序员从合格走向优秀的一本不可多得的参考书。
—— 周志明(IcyFenix) 资深Java技术专家/畅销书《深入理解Java虚拟机:JVM高级特性与最佳实践》作者

自从2005年Apache宣布将原Struts1社区与Webwork社区进行整合并着力打造新一代的MVC框架Struts2开始,Struts2就凭借来自于Webwork的独特技术优势和Apache强大的社区力量迅速成为整个Web开发领域最流行的开发框架。Struts2及其核心依赖XWork的设计思想独树一帜,提供了一系列具有革命性意义的Web开发解决方案。XWork小巧的容器结构、对于命令模式独特的实现机制、插件扩展模型的设计以及Struts2对于Web请求的处理方式,对所有的Web开发都有特别的指导意义。
在本书中,我们将Struts2的源码分析作为贯穿整本书的逻辑主线,其主要目的不仅仅是为了向读者展示Struts2的设计原理和设计思想,更为重要的是希望通过Struts2的源码总结出Web开发中的最佳实践。因此,本书使用了大量的篇幅为读者撇清众多Web开发中极易混淆的概念,并以源码为基础将这些概念与Web开发的方法论结合在一起。相信对于想深入了解Struts2实现内幕和Web开发细节的广大程序员有极佳的指导和借鉴作用。

作 者 简 介

陆舟(downpour)资深Java技术专家,擅长企业级Java应用开发和Java Web应用开发,对Struts、Spring和Seam等开源Java框架有十分深入的研究,积累了丰富的经验。在Java和Web开发社区非常活跃,撰写了大量与JavaEE相关的技术文章,其著名的“忘记李刚,一步一步跟我学Struts2”系列技术文章广受好评,在ITeye等技术社区留下了深远的影响。此外,他还是开源技术的积极倡导者和推动者,参与过Spring中文文档重要章节的翻译,为众多开源框架在国内的普及和发展做出了很大贡献。

图书前言

为什么写本书
  在基于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在本书创作过程中给予我的帮助。与你在许多编程哲学上的探讨,每次都能让我受益匪浅。在本书的众多观点中,有许多出自你的连珠妙语。
  最后感谢本书的策划编辑杨福川和关敏,你们是我见过的脾气最好、业务能力最强的出版人。我从你们的身上看到了一种坚韧不拔的精神和精益求精的态度。这对我的一生都有帮助。

上架指导

计算机\程序设计

封底文字

Struts 2 是Java Web 应用首选的MVC 框架。本书主要分为3个部分:准备篇讲述了源代码阅读环境、Struts的组织结构、MVC框架及Web开发等话题相关的作者观点,并通过一个Hello World的例子作为Struts技术的入门实践;在核心实现篇中,通过源码解析,帮助广大开发者从Struts 2自身的设计原理上去掌握Web层开发的要点,如数据、动作、拦截器、视图、Plugin、配置、过程等;最佳实践篇介绍了一些在实战中提炼出来的针对Struts 2的扩展和应用,可以帮助广大开发者更好地进行Struts 2开发的最佳实践。

作者简介

陆舟 著:暂无简介

图书目录

前 言
第一部分 知识准备篇
第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

教学资源推荐
作者: 陈家骏 郑滔 编著
作者: 罗晓芳 李慧 孙涛 孙大为 朱鸣华 杨微 编著
作者: 刘奇志 尹存燕 曹迎春 编著
参考读物推荐
作者: (美)Cormac Hogan,Duncan Epping 著
作者: 刘宇 崔燕红 郭师光 党习歌 著