《Struts 2.x權威指南(第3版)(含DVD光碟1張)》是2012年10月電子工業出版社出版的圖書,作者是李剛。
基本介紹
- 書名:Struts 2.x權威指南(第3版)(含DVD光碟1張)
- 作者:李剛
- 出版社:電子工業出版社
- 出版時間:2012年10月
- 頁數:672 頁
- 定價:89 元
- 開本:16 開
- ISBN:9787121180477
內容簡介,圖書目錄,
內容簡介
本書是《Struts 2權威指南》的第3版,本書介紹了Struts 2最新版本:Struts 2.3.1.2。 本書全面介紹了Struts 2框架的各知識點,從Struts 2框架的MVC原理、Struts 2的處理機制開始講起,全面覆蓋了Struts 2的Action開發、Action配置管理、Result配置管理、Struts 2異常機制、Struts 2類型轉換、輸入校驗、檔案上傳和下載、Struts 2國際化支持、Struts 2的Ajax支持、攔截器機制、Convention外掛程式與REST等方面,並詳盡講解了Struts 2與Spring、Hibernate、JSF、SiteMesh、JasperReports、JFreeChart等框架的整合開發,力求讓讀者不僅可以掌握Struts 2理論知識,而且能真正步入實際開發殿堂。 本書保留了前兩版通俗易懂的寫作風格:按Struts 2.3.1.2的架構體系,細緻地介紹了Struts 2各個知識點。在介紹過程中,筆者依照讀者的學習規律,首先介紹基本概念和基本操作,然後對內容進行深入講解。在介紹Struts 2框架時,既照顧到Struts 2初學者的能力,對每個知識點都給出簡單的快速上手的示例;同時也考慮到開發者在日後開發中可能遇到的問題,詳細講解了每個知識點的各種用法,本書覆蓋了Struts 2.1近80%的API。 本書適合於有較好的Java編程基礎,有一定JSP、Servlet等Web編程基礎或具備初步Java EE編程基礎的讀者閱讀。本書給出了Struts 2入門級的示範實例,可作為學習Struts 2框架的學習指南;也詳細講解了Struts 2各個知識點及各選項的詳細用法,可作為項目開發的參考手冊。
圖書目錄
第1章 Struts 2概述 1
1.1 MVC思想概述 2
1.1.1 Web技術的發展 2
1.1.2 Model 1和Model 2 4
1.1.3 MVC思想及其優勢 5
1.1.4 常用的MVC框架 6
1.2 Struts 1的缺陷與現狀 8
1.2.1 支持的表現層技術單一 8
1.2.2 與Servlet API嚴重耦合 8
1.2.3 代碼依賴於Struts 1 API 9
1.3 Struts 2的優勢與體系 9
1.3.1 Struts 2的優勢 9
1.3.2 Struts 2架構 11
1.3.3 Struts 2的配置檔案 11
1.3.4 Strut 2的標籤庫 12
1.3.5 Struts 2的控制器組件 13
1.4 本章小結 14
第2章 Struts 2的HelloWorld 15
2.1 下載和安裝Struts 2框架 16
2.2 從用戶請求開始 17
2.3 創建Struts 2的Web套用 19
2.3.1 創建Web套用 19
2.3.2 增加Struts 2功能 20
2.4 實現控制器 21
2.4.1 實現控制器類 21
2.4.2 配置Action 22
2.4.3 增加視圖資源完成套用 23
2.5 改進控制器 24
2.5.1 實現Action接口 24
2.5.2 跟蹤用戶狀態 25
2.5.3 添加處理信息 26
2.5.4 輸出處理信息 28
2.6 改進視圖組件 29
2.6.1 保護JSP頁面 30
2.6.2 改善輸出頁面 30
2.6.3 使用UI標籤簡化表單頁面 31
2.7 完成程式國際化 32
2.7.1 定義國際化資源檔案 33
2.7.2 載入資源檔案 34
2.7.3 輸出國際化信息 35
2.8 增加數據校驗 36
2.8.1 繼承ActionSupport 37
2.8.2 使用Struts 2的校驗框架 39
2.9 本章小結 40
第3章 Struts 2核心技術 41
3.1 在Eclipse中開發Struts 2 42
3.1.1 創建Web套用 42
3.1.2 增加Struts 2支持 44
3.1.3 部署Struts 2套用 45
3.1.4 增加套用的Action 46
3.2 Struts 2的基本流程 47
3.2.1 核心控制器
StrutsPrepareAndExecuteFilter 47
3.2.2 業務控制器 48
3.2.3 Struts 2的模型組件 48
3.2.4 Struts 2的視圖組件 49
3.2.5 Struts 2的運行流程 49
3.3 Struts 2的基本配置 50
3.3.1 配置web.xml檔案 50
3.3.2 struts.xml配置檔案 51
3.3.3 struts.properties檔案與常量配置 54
3.3.4 struts.xml檔案結構 59
3.4 深入Struts 2配置檔案 61
3.4.1 Bean配置 61
3.4.2 常量配置 62
3.4.3 包配置 62
3.4.4 命名空間配置 64
3.4.5 包含配置 66
3.4.6 攔截器配置 66
3.5 Struts 2的Action 67
3.5.1 實現Action處理類 67
3.5.2 Action訪問Servlet API 71
3.5.3 Action直接訪問Servlet API 74
3.5.4 配置Action 76
3.5.5 配置Action的默認處理類 78
3.5.6 動態方法調用 78
3.5.7 為action元素指定method屬性 81
3.5.8 使用通配符 82
3.5.9 配置默認的Action 87
3.6 管理處理結果 87
3.6.1 處理結果的改進 88
3.6.2 配置結果 88
3.6.3 Struts 2支持的處理結果類型 89
3.6.4 chain結果類型 91
3.6.5 plainText結果類型 93
3.6.6 redirect結果類型 95
3.6.7 redirectAction結果類型 96
3.6.8 動態結果 97
3.6.9 請求參數決定結果 98
3.6.10 全局結果 100
3.7 屬性驅動和模型驅動 101
3.7.1 模型的作用 101
3.7.2 使用模型驅動 103
3.8 Struts 2的異常機制 105
3.8.1 Struts 2的異常處理哲學 105
3.8.2 聲明式異常捕捉 107
3.8.3 輸出異常信息 110
3.9 未知處理器 111
3.10 本章小結 113
第4章 Struts 2的類型轉換 114
4.1 類型轉換的意義 115
4.1.1 表現層數據處理 115
4.1.2 傳統的類型轉換 116
4.2 Struts 2內建的類型轉換器 118
4.3 基於OGNL的類型轉換 120
4.3.1 使用OGNL轉換成Map集合 121
4.3.2 使用OGNL轉換成List集合 122
4.4 自定義類型轉換器 123
4.4.1 系統需求 123
4.4.2 實現類型轉換器 125
4.4.3 局部類型轉換器 127
4.4.4 全局類型轉換器 128
4.4.5 局部類型轉換器和全局類型
轉換器的說明 130
4.4.6 基於Struts 2的類型轉換器 130
4.4.7 數組屬性的類型轉換器 132
4.4.8 集合屬性的類型轉換器 135
4.5 集合類型轉換的高級特性 137
4.5.1 指定集合元素的類型 137
4.5.2 為Set集合的元素指定索引屬性 138
4.6 類型轉換中的錯誤處理 140
4.6.1 類型轉換的錯誤處理流程 140
4.6.2 處理類型轉換錯誤 142
4.6.3 輸出類型轉換錯誤 142
4.6.4 處理集合屬性的轉換錯誤 145
4.7 本章小結 147
第5章 Struts 2的輸入校驗 148
5.1 輸入校驗概述 149
5.1.1 為什麼需要輸入校驗 149
5.1.2 客戶端校驗 150
5.1.3 伺服器端校驗 152
5.1.4 類型轉換和輸入校驗 155
5.2 基本輸入校驗 156
5.2.1 編寫校驗規則檔案 156
5.2.2 國際化提示信息 159
5.2.3 使用客戶端校驗 161
5.3 校驗器的配置風格 164
5.3.1 欄位校驗器配置風格 164
5.3.2 非欄位校驗器配置風格 165
5.3.3 短路校驗器 166
5.3.4 校驗順序和短路 167
5.4 校驗檔案的搜尋規則 168
5.5 內建校驗器 170
5.5.1 註冊校驗器 170
5.5.2 必填校驗器 172
5.5.3 必填字元串校驗器 172
5.5.4 整數校驗器 173
5.5.5 日期校驗器 174
5.5.6 表達式校驗器 175
5.5.7 欄位表達式校驗器 175
5.5.8 郵件地址校驗器 176
5.5.9 網址校驗器 176
5.5.10 Visitor校驗器 177
5.5.11 轉換校驗器 180
5.5.12 字元串長度校驗器 181
5.5.13 正則表達式校驗器 181
5.6 基於Annotation的輸入校驗 182
5.7 手動完成輸入校驗 184
5.7.1 重寫validate方法 184
5.7.2 重寫validateXxx方法 185
5.7.3 Struts 2的輸入校驗流程 186
5.8 本章小結 188
第6章 上傳和下載檔案 189
6.1 檔案上傳的原理 190
6.1.1 表單元素的enctype屬性 190
6.1.2 手動上傳 193
6.1.3 使用Servlet 3.0 API完成上傳 194
6.2 Struts 2的檔案上傳 197
6.2.1 Struts 2的檔案上傳支持 197
6.2.2 實現檔案上傳的Action 197
6.2.3 配置檔案上傳的Action 200
6.2.4 手動實現檔案過濾 201
6.2.5 攔截器實現檔案過濾 203
6.2.6 輸出錯誤提示 205
6.2.7 檔案上傳的常量配置 206
6.3 使用Pell上傳 206
6.4 同時上傳多個檔案 207
6.4.1 使用數組同時上傳多個檔案 208
6.4.2 使用List同時上傳多個檔案 210
6.5 使用Struts 2控制檔案下載 212
6.5.1 實現檔案下載的Action 212
6.5.2 配置Action 214
6.5.3 下載前的授權控制 214
6.6 本章小結 216
第7章 Struts 2的國際化 217
7.1 程式國際化簡介 218
7.1.1 程式國際化的意義 218
7.1.2 Java國際化的思路 219
7.1.3 Java支持的國家和語言 219
7.1.4 完成程式國際化 220
7.1.5 使用MessageFormat處理帶
占位符的訊息 222
7.2 Struts 2的國際化支持 224
7.2.1 Struts 2的國際化 224
7.2.2 視圖頁面的國際化 224
7.2.3 Action的國際化 225
7.2.4 使用包範圍的國際化資源 227
7.2.5 使用全局國際化資源 228
7.2.6 輸出帶占位符的國際化訊息 231
7.2.7 載入資源檔案的順序 232
7.3 允許用戶自行選擇程式語言 233
7.3.1 Struts 2國際化機制的原理 234
7.3.2 創建下拉列表框 235
7.3.3 選擇程式語言 237
7.4 本章小結 238
第8章 Struts 2的標籤庫 239
8.1 Struts 2標籤庫概述 240
8.1.1 標籤的優勢 240
8.1.2 Struts 2的標籤分類 241
8.2 Struts 2標籤入門 242
8.2.1 使用Struts 2標籤的準備 242
8.2.2 Struts 2的OGNL表達式語言 243
8.2.3 OGNL中的集合操作 245
8.2.4 訪問靜態成員 246
8.2.5 Lambda(λ)表達式 246
8.3 控制標籤 247
8.3.1 if/elseif/else標籤 247
8.3.2 iterator標籤 248
8.3.3 append標籤 250
8.3.4 generator標籤 252
8.3.5 merge標籤 253
8.3.6 subset標籤 254
8.3.7 sort標籤 256
8.4 數據標籤 258
8.4.1 action標籤 258
8.4.2 bean標籤 260
8.4.3 date標籤 262
8.4.4 debug標籤 263
8.4.5 i18n標籤 263
8.4.6 include標籤 263
8.4.7 param標籤 264
8.4.8 property標籤 264
8.4.9 push標籤 265
8.4.10 set標籤 265
8.4.11 text標籤 267
8.4.12 url標籤 267
8.5 主題和模板 269
8.5.1 選擇主題 269
8.5.2 自定義主題 271
8.6 表單標籤 273
8.6.1 表單標籤的通用屬性 273
8.6.2 表單標籤的name和value屬性 275
8.6.3 checkboxlist標籤 275
8.6.4 combobox標籤 277
8.6.5 doubleselect標籤 278
8.6.6 head標籤 280
8.6.7 optiontransferselect標籤 280
8.6.8 select標籤 282
8.6.9 radio標籤 284
8.6.10 optgroup標籤 284
8.6.11 token標籤 285
8.6.12 updownselect標籤 287
8.7 非表單標籤 288
8.7.1 actionerror和actionmessage
標籤 289
8.7.2 component標籤 289
8.8 本章小結 291
第9章 Struts 2的攔截器 292
9.1 理解攔截器 293
9.1.1 理解DRY規則 293
9.1.2 攔截器的意義 295
9.1.3 攔截器的實現原理 297
9.1.4 攔截器和AOP的關係 300
9.1.5 攔截器在Struts 2中的作用 301
9.2 Struts 2內建攔截器介紹 303
9.2.1 Struts 2內建攔截器 303
9.2.2 struts-default.xml里配置的
攔截器 304
9.3 攔截器配置初步 308
9.3.1 配置攔截器 308
9.3.2 使用攔截器 310
9.3.3 配置默認的攔截器 311
9.4 開發自己的攔截器 313
9.4.1 實現攔截器類 313
9.4.2 使用攔截器 314
9.4.3 攔截器和Struts 2外掛程式的關係 316
9.5 深入攔截器編程 317
9.5.1 攔截方法的攔截器 317
9.5.2 攔截器的執行順序 319
9.5.3 攔截結果的監聽器 321
9.5.4 覆蓋攔截器棧里特定攔截器
的參數 322
9.6 攔截器套用示例:實現許可權控制 323
9.6.1 實現攔截器類 323
9.6.2 配置許可權控制攔截器 324
9.7 本章小結 326
第10章 Struts 2的Ajax支持 327
10.1 Struts 2基本的Ajax支持 328
10.1.1 Ajax技術概述 328
10.1.2 使用stream結果類型實現
Ajax 331
10.2 基於Dojo的異步表單 334
10.2.1 安裝Dojo外掛程式 335
10.2.2 定義異步表單 335
10.2.3 實現Action 337
10.2.4 實現伺服器回響頁面 338
10.3 基於Dojo的Pub-Sub事件
模型 340
10.3.1 Pub-Sub原理 340
10.3.2 Pub-Sub示例 341
10.3.3 阻止請求 343
10.4 基於Dojo的Ajax標籤 343
10.4.1 div標籤 343
10.4.2 a和submit標籤 349
10.4.3 autocompleter標籤 354
10.4.4 tabbedpanel標籤 360
10.4.5 datetimepicker標籤 363
10.4.6 tree和treenode標籤 365
10.4.7 textarea標籤 369
10.4.8 bind標籤 369
10.5 基於JSON外掛程式的Ajax實現 371
10.5.1 JSON的基本知識 371
10.5.2 安裝Struts 2的JSON外掛程式 374
10.5.3 實現Action邏輯 374
10.5.4 實現JSP頁面 376
10.6 本章小結 377
第11章 Convention外掛程式與REST支持 378
11.1 Convention外掛程式和零配置 379
11.1.1 搜尋Action 379
11.1.2 按約定映射Action 380
11.1.3 按約定映射Result 382
11.1.4 Action鏈的約定 385
11.1.5 自動重載入映射 386
11.2 Convention外掛程式的相關常量 386
11.3 Convention的Annotation 387
11.3.1 Action配置相關的Annotation 388
11.3.2 Result配置相關的Annotation 389
11.3.3 包和命名空間相關的
Annotation 391
11.3.4 異常處理相關的Annotation 391
11.3.5 攔截器配置相關的Annotation 392
11.4 REST簡介 393
11.4.1 資源和標識符 394
11.4.2 操作資源的方式 394
11.5 Struts 2的REST支持 395
11.5.1 RestActionMapper簡介 395
11.5.2 安裝REST外掛程式 397
11.5.3 實現支持REST的Action類 397
11.6 本章小結 404
第12章 FreeMarker詳解 405
12.1 體驗FreeMarker 406
12.1.1 下載和安裝FreeMarker 406
12.1.2 在Java程式中使用FreeMarker 407
12.1.3 在Web套用中使用FreeMarker 408
12.2 FreeMarker的模板檔案 411
12.2.1 模板結構 412
12.2.2 FTL指令規則 412
12.2.3 插值規則 413
12.3 表達式 414
12.3.1 直接指定值 414
12.3.2 輸出變數值 417
12.3.3 字元串操作 418
12.3.4 集合連線運算符 419
12.3.5 Map連線運算符 419
12.3.6 算術運算符 420
12.3.7 比較運算符 420
12.3.8 邏輯運算符 421
12.3.9 內建函式 421
12.3.10 空值處理運算符 422
12.3.11 運算符優先權 422
12.4 FreeMarker的常用指令 422
12.4.1 if指令 423
12.4.2 switch、case、default、break
指令 423
12.4.3 list、break指令 424
12.4.4 include指令 424
12.4.5 import指令 425
12.4.6 noparse指令 425
12.4.7 escape、noescape指令 425
12.4.8 assign指令 426
12.4.9 setting指令 427
12.4.10 macro、nested、return指令 427
12.5 使用FreeMarker作為Struts 2的視
圖技術 430
12.5.1 在FreeMarker模板中使用
Struts 2標籤 430
12.5.2 使用Freemarker Result 433
12.5.3 解析模板中的變數 434
12.5.4 訪問Servlet/JSP範圍的值 436
12.6 本章小結 438
第13章 整合Spring 439
13.1 Spring簡介 440
13.1.1 Spring的起源和核心 440
13.1.2 Spring在Java EE套用中的
作用 442
13.2 Struts 2外掛程式 444
13.2.1 外掛程式概述 444
13.2.2 外掛程式開發概述 445
13.3 使用Spring外掛程式完成整合 447
13.3.1 整合Spring前的準備工作 447
13.3.2 整合Spring的思考 449
13.4 讓Spring管理控制器 450
13.4.1 整合流程 450
13.4.2 從頁面請求開始 451
13.4.3 實現控制器邏輯 451
13.4.4 實現業務邏輯 453
13.5 使用自動裝配 454
13.5.1 指定自動裝配 454
13.5.2 修改配置檔案 455
13.5.3 改變自動裝配策略 456
13.6 本章小結 458
第14章 整合JSF 459
14.1 JSF簡介 460
14.1.1 JSF概述 460
14.1.2 JSF和Struts 2的對比 461
14.2 使用MyFaces 461
14.2.1 下載和安裝MyFaces 462
14.2.2 從輸入頁面開始 463
14.2.3 在Web套用中配置MyFaces 465
14.2.4 實現後台Bean 466
14.2.5 定義導航規則 467
14.3 安裝JSF外掛程式 469
14.4 使用JSF外掛程式 470
14.4.1 實現業務邏輯組件 470
14.4.2 列出全部圖書 473
14.4.3 添加/修改圖書 475
14.5 整合JSF的思考 480
14.6 本章小結 480
第15章 整合SiteMesh 481
15.1 SiteMesh簡介 482
15.1.1 SiteMesh概述 482
15.1.2 下載和安裝SiteMesh 483
15.1.3 定義裝飾器頁面 485
15.1.4 定義原始頁面 487
15.1.5 更複雜的裝飾器頁面 488
15.2 使用SiteMesh外掛程式 490
15.2.1 安裝SiteMesh外掛程式 491
15.2.2 在Struts 2中使用SiteMesh 492
15.3 本章小結 494
第16章 整合JasperReports 495
16.1 JasperReports簡介 496
16.1.1 下載和安裝JasperReports 496
16.1.2 開發JasperReports靜態報表 497
16.1.3 JasperReports的開發流程 503
16.1.4 解決PDF報表的中文問題 504
16.2 動態報表 504
16.2.1 帶參數的報表 504
16.2.2 帶查詢的報表 508
16.2.3 以VO集合作為數據源的
動態報表 512
16.3 使用iReport設計報表 516
16.3.1 下載和安裝iReport 516
16.3.2 使用iReport 518
16.3.3 建立數據源 520
16.3.4 設計報表布局 522
16.4 安裝JasperReports外掛程式 525
16.5 使用JasperReports報表 525
16.5.1 創建生成報表的Action 525
16.5.2 配置生成JasperReports
報表的Action 526
16.5.3 生成JasperReports報表 527
16.6 本章小結 529
第17章 整合JFreeChart 530
17.1 JFreeChart簡介 531
17.1.1 JFreeChart的下載和安裝 531
17.1.2 使用JFreeChart 532
17.1.3 JFreeChart開發步驟 534
17.2 JFreeChart的常用統計圖表 535
17.2.1 柱狀圖 536
17.2.2 折線圖 540
17.2.3 時間順序圖 540
17.3 在網頁中生成帶互動功能的
統計圖 542
17.4 安裝JFreeChart外掛程式 547
17.5 在Struts 2套用中使用JFreeChart 548
17.5.1 創建Action類 548
17.5.2 配置Action 550
17.5.3 改進JFreeChart外掛程式 551
17.5.4 使用改進後的JFreeChart
外掛程式 554
17.6 本章小結 555
第18章 整合Hibernate 556
18.1 Hibernate概述 557
18.1.1 ORM的功能與Hibernate 557
18.1.2 流行的ORM框架簡介 560
18.2 Struts 2整合Hibernate的思考 560
18.2.1 自定義的整合方案 560
18.2.2 整合方案的實現策略 561
18.3 整合示例 562
18.3.1 持久層設計 562
18.3.2 DAO層設計 565
18.3.3 業務邏輯層設計 568
18.3.4 初始化組件工廠 570
18.3.5 控制器實現 571
18.4 整合後的思考和Spring框架 572
18.5 本章小結 573
第19章 “零配置”案例:註冊登錄系統 574
19.1 系統概述 575
19.1.1 系統功能簡介 575
19.1.2 系統總體設計 576
19.2 實現Hibernate持久層 576
19.3 實現DAO層 577
19.3.1 管理SessionFactory 578
19.3.2 實現DAO基類 579
19.3.3 實現系統DAO組件 580
19.3.4 配置DAO組件 582
19.4 實現業務邏輯層 582
19.4.1 定義業務邏輯組件接口 582
19.4.2 提供業務邏輯組件實現類 583
19.4.3 配置業務邏輯組件 585
19.5 使用Struts 2 586
19.5.1 整合Struts 2和Spring 586
19.5.2 處理登錄 587
19.5.3 圖形驗證碼 591
19.5.4 使用Ajax驗證用戶名 594
19.5.5 註冊新用戶 597
19.6 使用SiteMesh裝飾頁面 599
19.7 本章小結 600
第20章 電子拍賣系統 601
20.1 系統功能簡介和架構設計 602
20.1.1 系統功能簡介 602
20.1.2 系統架構設計 603
20.1.3 相關技術介紹 604
20.2 持久層設計 606
20.2.1 系統實體 606
20.2.2 系統E-R圖和數據表 607
20.2.3 實現Hibernate PO 609
20.2.4 管理SessionFactory 616
20.3 實現系統DAO層 617
20.3.1 實現DAO基類 618
20.3.2 實現系統DAO組件 619
20.3.3 配置系統DAO組件 622
20.4 實現業務邏輯層 624
20.4.1 定義業務邏輯組件接口 624
20.4.2 依賴注入DAO組件 626
20.4.3 業務邏輯組件中的異常處理 627
20.4.4 處理用戶競價 628
20.4.5 判斷拍賣物品狀態 630
20.4.6 事務管理 632
20.4.7 配置業務層組件 633
20.5 實現系統Web層 635
20.5.1 配置Struts 2的核心Filter 636
20.5.2 處理用戶登錄 637
20.5.3 圖形驗證碼 640
20.5.4 Web層的異常處理 641
20.5.5 登錄控制 642
20.5.6 添加物品 644
20.5.7 處理用戶競價 650
20.6 使用SiteMesh頁面裝飾 655
20.6.1 在Struts 2中整合SiteMesh
頁面裝飾 655
20.6.2 定義頁面裝飾 655
20.7 本章小結 658