基本信息
作者: 陸舟
出版社:機械工業出版社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在本書創作過程中給予我的幫助。與你在許多編程哲學上的探討,每次都能讓我受益匪淺。在本書的眾多觀點中,有許多出自你的連珠妙語。
最後感謝本書的策劃編輯楊福川和關敏,你們是我見過的脾氣最好、業務能力最強的出版人。我從你們的身上看到了一種堅韌不拔的精神和精益求精的態度。這對我的一生都有幫助。