《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
· · · · · · (
收起)