第一部分 Strut 2:一個全新的框架
第1章 Struts 2:現代Web框架 2
1.1 Web應用程序:快速學習 2
1.1.1 構建Web應用程序 2
1.1.2 基礎技術簡介 3
1.1.3 深入研究 6
1.2 Web應用程序框架 7
1.2.1 什麼是框架 7
1.2.2 為什麼使用框架 8
1.3 Struts 2框架 9
1.3.1 Struts 2簡史 9
1.3.2 Struts 2概覽:MVC模式 10
1.3.3 Struts 2的工作原理 12
1.4 小結 14
第2章 初識Struts 2 16
2.1 聲明性架構 16
2.1.1 兩種配置 16
2.1.2 聲明架構的兩種方式 17
2.1.3 智能默認值 20
2.2 簡單的HelloWorld示例 20
2.2.1 部署示例應用程序 20
2.2.2 探索HelloWorld應用程序 24
2.3 使用注解的HelloWorld 31
2.4 小結 33
第二部分 核心概念:動作、攔截器和類型轉換
第3章 使用Struts 2動作 36
3.1 Struts 2動作簡介 36
3.2 打包動作 39
3.2.1 Struts 2公文包示例應用程序 39
3.2.2 組織你的包 39
3.2.3 使用struts-default包中的組件 41
3.3 實現動作 43
3.3.1 可選的Action接口 44
3.3.2 ActionSupport類 45
3.4 嚮對象傳遞數據 51
3.4.1 對象支持的JavaBean屬性 52
3.4.2 ModelDriven動作 54
3.4.3 域對象用作數據轉移的潛在危險 55
3.5 案例研究:文件上傳 56
3.5.1 通過struts-default包獲得內建的支持 56
3.5.2 fileUpload攔截器做什麼 57
3.5.3 Struts 2公文包示例代碼研究 58
3.6 小結 60
第4章 使用攔截器追加工作流 61
4.1 為什麼要攔截請求 61
4.1.1 清理MVC 61
4.1.2 從攔截器受益 63
4.1.3 開發攔截器 64
4.2 攔截器的工作原理 64
4.2.1 總指揮ActionInvocation 64
4.2.2 如何觸發攔截器 64
4.3 研究內建的Struts 2攔截器 67
4.3.1 工具攔截器 67
4.3.2 數據轉移攔截器 67
4.3.3 工作流攔截器 69
4.3.4 其他攔截器 72
4.3.5 內建的攔截器棧 73
4.4 聲明攔截器 74
4.4.1 聲明獨立的攔截器和攔截器棧 74
4.4.2 將攔截器映射到動作組件 76
4.4.3 設置、覆蓋攔截器參數 77
4.5 構建自定義攔截器 78
4.5.1 實現Interceptor接口 78
4.5.2 構建AuthenticationInterceptor攔截器 79
4.6 小結 82
第5章 數據轉移:OGNL和類型轉換 84
5.1 數據轉移和類型轉換:Web應用程序領域的常見任務 85
5.2 OGNL和Struts 2 85
5.2.1 OGNL是什麼 85
5.2.2 OGNL如何融入框架 87
5.3 內建的類型轉換器 89
5.3.1 立即可用的類型轉換器 89
5.3.2 使用OGNL錶達式從錶單字段名映射到屬性 90
5.4 自定義類型轉換 101
5.4.1 實現類型轉換器 102
5.4.2 在String和Circle之間轉換 102
5.4.3 配置框架使用自定義轉換器 103
5.5 小結 106
第三部分 構建視圖——標簽和結果
第6章 構建視圖——標簽 108
6.1 入門 108
6.1.1 ActionContext和OGNL 109
6.1.2 虛擬對象ValueStack 111
6.2 Struts 2標簽概要 113
6.2.1 Struts 2標簽API語法 113
6.2.2 使用OGNL設置標簽屬性 115
6.3 數據標簽 117
6.3.1 property標簽 117
6.3.2 set標簽 118
6.3.3 push標簽 119
6.3.4 bean標簽 120
6.3.5 action標簽 122
6.4 控製標簽 124
6.4.1 iterator標簽 124
6.4.2 if和else標簽 125
6.5 其他標簽 126
6.5.1 include標簽 126
6.5.2 URL標簽 127
6.5.3 i18n和text標簽 128
6.5.4 param標簽 129
6.6 使用JSTL和其他本地標簽 130
6.7 OGNL錶達式語言的基礎知識 130
6.7.1 什麼是OGNL 130
6.7.2 Struts 2中常用的錶達式語言特性 131
6.7.3 錶達式語言的高級特性 135
6.8 小結 137
第7章 UI組件標簽 139
7.1 為什麼需要UI組件標簽 139
7.2 標簽、模闆和主題 144
7.2.1 標簽 146
7.2.2 模闆 146
7.2.3 主題 146
7.3 UI組件標簽 148
7.3.1 通用屬性 148
7.3.2 簡單組件 149
7.3.3 基於集閤的組件 159
7.3.4 額外的組件 166
7.4 小結 168
第8章 結果 170
8.1 動作之後 170
8.1.1 頁麵上:如何使用自定義結果組件構建Struts 2 Ajax應用程序 171
8.1.2 實現JSON結果類型 173
8.2 常用的結果類型 180
8.2.1 RequestDispatcher,也叫做dispatcher 180
8.2.2 ServletRedirectResult,也叫做redirect 186
8.2.3 ServletActionRedirectResult,也叫做redirectAction 188
8.3 JSP替代品 189
8.3.1 VelocityResult,也叫做velocity 189
8.3.2 FreemarkerResult,也叫做freemarker 191
8.4 全局結果 192
8.5 小結 193
第四部分 完善應用程序
第9章 集成Spring和Hibernate/JPA 196
9.1 為什麼在Struts 2中使用Spring 196
9.1.1 依賴注入能做些什麼 197
9.1.2 Spring如何管理對象和注入依賴 199
9.1.3 使用接口隱藏實現 200
9.2 將Spring添加到Struts 2 202
9.2.1 讓Spring管理動作、攔截器和結果的創建 203
9.2.2 使用自動連綫將依賴注入到動作、攔截器和結果 205
9.3 為什麼在Struts 2中使用JPA 207
9.3.1 使用JPA和Hibernate建立項目 208
9.3.2 基於Spring管理JPA編寫代碼 212
9.4 小結 216
第10章 探索驗證框架 217
10.1 熟悉數據驗證框架 217
10.1.1 驗證框架的架構 218
10.1.2 Struts 2工作流中的驗證框架 219
10.2 將動作關聯到驗證框架 222
10.2.1 使用ActionClass-validations.xml聲明驗證元數據 223
10.2.2 研究內建的驗證器 226
10.3 編寫自定義驗證器 227
10.3.1 檢查密碼強度的自定義驗證器 227
10.3.2 使用自定義數據驗證器 229
10.4 驗證框架的高級主題 230
10.4.1 在域對象級彆驗證 231
10.4.2 使用驗證上下文優化驗證 233
10.4.3 驗證繼承 235
10.4.4 驗證短路效應 236
10.4.5 使用注解聲明驗證 237
10.5 小結 239
第11章 理解國際化 240
11.1 Struts 2框架和Java i18n 241
11.1.1 使用ResourceBundle和Locale取得本地化文本 241
11.1.2 Struts 2如何解決本地Java對i18n支持的問題 243
11.2 Struts 2 i18n示例 244
11.2.1 Struts 2 i18n快速展示 244
11.2.2 幕後一覽 246
11.3 Struts 2 i18n詳情 247
11.3.1 Struts 2默認的TextProvider Re-sourceBundle搜索算法 248
11.3.2 從包中取得消息文本 251
11.3.3 使用i18n標簽指定包 254
11.3.4 參數化本地化文本 255
11.3.5 格式化日期和數字 256
11.4 覆蓋框架默認的地域決定 257
11.4.1 讓用戶交互地設置地域 257
11.4.2 以編碼的方式設置地域 259
11.5 小結 260
第五部分 高級主題和最佳實踐
第12章 使用插件擴展Struts 2 264
12.1 插件概要 264
12.2 常用插件 265
12.2.1 SiteMesh 266
12.2.2 Tiles 267
12.2.3 JFreeChart 269
12.3 內部組件係統 271
12.3.1 Bean 271
12.3.2 常量 272
12.3.3 注入 272
12.3.4 Struts內部擴展點 273
12.4 編寫瀏覽路徑插件 274
12.5 小結 278
第13章 最佳實踐 279
13.1 建立開發環境 279
13.1.1 建立IDE 280
13.1.2 重新加載資源 280
13.2 對動作進行單元測試 281
13.2.1 將IoC用於測試的優勢 281
13.2.2 JUnit與測試 282
13.2.3 測試validation.xml文件 284
13.3 最大化重用 284
13.3.1 使用component標簽組件化 285
13.3.2 重用模闆化的標簽 286
13.3.3 連接UI標簽和對象 287
13.4 高級UI標簽的使用 288
13.4.1 覆蓋既有模闆 288
13.4.2 編寫自定義模闆 288
13.4.3 編寫自定義主題 289
13.5 小結 289
第14章 從經典Struts遷移 290
14.1 翻譯經典Struts的知識 290
14.1.1 動作 290
14.1.2 ActionForm怎麼瞭 292
14.1.3 切換標簽庫 293
14.1.4 拆分消息資源 294
14.2 逐步轉換 296
14.2.1 逐步實現 296
14.2.2 動作映射 298
14.2.3 動作在哪裏遇到錶單 300
14.2.4 轉換頁麵 301
14.2.5 不說英語 303
14.2.6 數據警察 304
14.2.7 兩者能夠和睦相處嗎 306
14.3 小結 307
第15章 高級主題 308
15.1 高級動作的應用 308
15.2 動態方法調用 310
15.2.1 通配符方法的選擇 310
15.2.2 動態工作流 312
15.3 使用令牌防止錶單重復提交 313
15.3.1 使用s:token/錶單標簽 313
15.3.2 令牌攔截器規則的例外 314
15.4 自動顯示等待頁麵 316
15.5 完成CRUD操作的一個動作 317
15.5.1 CRUD 317
15.5.2 攔截器和接口 318
15.5.3 連接各部分 323
15.6 Tiles和Struts 2 325
15.6.1 關注網站的界麵外觀 325
15.6.2 配置相互關係 326
15.6.3 使用聲明性架構 329
15.6.4 使用Tiles控製器準備網頁內容 331
15.7 小結 332
· · · · · · (
收起)