內容簡介
struts是目前非常流行的基於mvc的java web框架。本書詳細介紹了在最新的struts1.1以及不久將推出的struts1.2版本上設計和開發java web套用的各種技術。本書第1章到第3章為入門篇,通過兩個struts套用實例,引導讀者把握設計、開發和部署struts套用的整體流程,充分體會 struts框架在開放大型、可擴展的web套用方面發揮的優勢。第4章到第7章深入探討了struts框架的核心組件actionservlet和 requestprocessor的實現原理,詳細介紹了開發struts套用的模型、視圖和控制器的各種技術,細緻的描述了struts配置檔案的每個元素的使用方法。第8章到第9章介紹了開發struts套用的一些實用技術,如struts框架的擴展點、struts套用的國際化,validator 驗證框架和異常處理機制等。第12章到第16章結合具體的struts套用實例,詳細介紹了struts的標籤庫以及tiles框架的使用方法。第17章和第18章介紹如何採用ejb和web服務來實現struts框架的模型。第19章到第21章介紹了如何採用第三方軟體,如apache common logging api、log4j、ant和strutstestcase,來控制struts套用的輸出日誌、管理以及測試struts套用項目。
作者
孫衛琴,1997年畢業於上海交通大學,隨後一直從事基於Java的軟體開發工作,還從事過J2EE培訓和諮詢。目前在美國肯特大學作為訪問學者,研究課題包括基於Java和XML的電子商務系統、J2EE軟體架構、Web服務和網路安全等。代表著作有:
《精通Struts: 基於MVC的Java Web設計與開發》 2004
《Tomcat與Java Web開發技術詳解》2004
《Java 2認證考試指南與試題解析》 2002
目錄
第1章 struts與java web套用簡介 1
1.1 java web套用概述 1
1.1.1 servlet組件 2
1.1.2 jsp組件 3
1.1.3 共享數據在web套用中的範圍 3
1.1.4 javabean組件及其在web套用中的範圍 5
1.1.5 客戶化jsp標籤 5
1.1.6 ejb組件 6
1.1.7 xml語言 6
1.1.8 web伺服器和套用伺服器 7
1.2 web組件的三種關聯關係 7
1.2.1 請求轉發 7
1.2.2 請求重定向 8
1.2.3 包含 9
1.3 mvc概述 9
1.3.1 mvc設計模式 10
1.3.2 jsp model1和jsp model2 11
1.4 struts概述 13
1.4.1 struts實現mvc的機制 13
1.4.2 struts的工作流程 15
.1.5 小結 17
第2章 struts套用:helloapp套用 19
2.1 分析helloapp套用的需求 19
2.2 運用struts框架 19
2.3 創建視圖組件 20
2.3.1 創建jsp檔案 20
2.3.2 創建訊息資源檔案 23
2.3.3 創建actionform bean 23
2.3.4 數據驗證 25
2.4 創建控制器組件 26
2.4.1 action類的工作機制 28
2.4.2 訪問封裝在messageresources中的本地化文本 28
2.4.3 業務邏輯驗證 28
2.4.4 訪問模型組件 29
2.4.5 向視圖組件傳遞數據 30
2.4.6 把http請求轉發給合適的視圖組件 30
2.5 創建模型組件 30
2.6 創建存放常量的java檔案 31
2.7 創建配置檔案 32
2.7.1 創建web套用的配置檔案 32
2.7.2 創建struts框架的配置檔案 33
2.8 發布和運行helloapp套用 35
2.8.1 伺服器端裝載hello.jsp的流程 37
2.8.2 表單驗證的流程 37
2.8.3 邏輯驗證失敗的流程 39
2.8.4 邏輯驗證成功的流程 40
2.9 小結 41
第3章 struts套用的需求分析與設計 43
3.1 收集和分析套用需求 43
3.2 設計資料庫 44
3.3 設計套用的業務邏輯 45
3.3.1 訪問xml格式的用戶信息 45
3.3.2 訪問資料庫 47
3.4 設計用戶界面 49
3.4.1 界面風格 50
3.4.2 使用客戶化標籤 52
3.5 設計actionform 53
3.6 設計action和action映射 55
3.6.1 設計logonaction 58
3.6.2 設計logoffaction 60
3.6.3 設計insertaction 61
3.6.4 設計searchaction 62
3.6.5 設計displayallaction 63
3.7 設計客戶化標籤 64
3.7.1 設計validatesessiontag標籤 64
3.7.2 設計displaytag標籤 66
3.7.3 創建客戶化app標籤庫的tld檔案 67
3.8 小結 68
第4章 配置struts套用 71
4.1 web套用的發布描述檔案 71
4.1.1 web套用發布描述檔案的文檔類型定義(dtd) 71
4.2 為struts套用配置web.xml檔案 72
4.2.1 配置struts的actionservlet 72
4.2.2 聲明actionservlet的初始化參數 73
4.2.3 配置歡迎檔案清單 74
4.2.4 配置錯誤處理 75
4.2.5 配置struts標籤庫 76
4.3 struts 配置檔案 77
4.3.1 org.apache.struts.config包 77
4.3.2 [struts-config]元素 79
4.3.3 [data-sources]元素 80
4.3.4 [form-beans]元素 82
4.3.5 [global-exceptions]元素 83
4.3.6 [global-forwards]元素 84
4.3.7 [action-mappings]元素 85
4.3.8 [controller]元素 87
4.3.9 [message-resources]元素 87
4.3.10 [plug-in]元素 88
4.3.11 配置多套用模組 89
4.4 digester 組件 91
4.5 struts 控制臺工具 91
4.6 重新載入配置檔案 93
4.7 小結 94
第5章 struts控制器組件 95
5.1 控制器組件的控制機制 95
5.1.1 actionservlet類 96
5.1.2 requestprocessor類 99
5.1.3 action類 105
5.2 使用內置的struts action類 112
5.2.1 org.apache.struts.actions.forwardaction類 112
5.2.2 org.apache.struts.actions.includeaction類 114
5.2.3 org.apache.struts.actions.dispatchaction類 115
5.2.4 org.apache.struts.actions.lookupdispatchaction類 118
5.2.5 org.apache.struts.actions.switchaction類 121
5.3 利用token解決重複提交 121
5.4 實用類 125
5.4.1 requestutils類 125
5.4.2 tagutils類 125
5.4.3 moduleutils類 126
5.4.4 globals類 126
5.5 小結 127
第6章 struts模型組件 129
6.1 模型在mvc中的地位 129
6.2 模型的概念和類型 130
6.2.1 概念模型 130
6.2.2 設計模型 131
6.3 業務對象(bo) 133
6.3.1 業務對象的特徵和類型 133
6.3.2 業務對象的重要性 134
6.4 業務對象的持久化 134
6.4.1 對業務對象進行持久化的作用 135
6.4.2 數據訪問對象(dao)設計模式 135
6.4.3 常用的orm軟體 136
6.5 創建netstore套用的模型 137
6.5.1 為netstore套用創建模型的步驟 137
6.5.2 創建netstore套用的業務對象 138
6.5.3 創建netstore套用的資料庫 142
6.5.4 netstore套用的orm框架 145
6.5.5 聯合使用業務代理和dao模式 155
6.6 小結 167
第7章 struts視圖組件 169
7.1 視圖概述 169
7.2 在視圖中使用javabean 170
7.2.1 dto數據傳輸對象 170
7.2.2 struts框架提供的dto:actionform bean 171
7.3 使用actionform 172
7.3.1 actionform的生命周期 172
7.3.2 創建actionform 174
7.3.3 配置actionform 176
7.3.4 訪問actionform 177
7.3.5 處理表單跨頁 178
7.4 使用動態actionform 184
7.4.1 配置動態actionform 185
7.4.2 動態actionform的reset()方法 186
7.4.3 訪問動態actionform 187
7.4.4 動態actionform的表單驗證 187
7.4.5 在netstore套用中使用動態actionform 187
7.5 小結 189
第8章 擴展struts框架 191
8.1 struts外掛程式(plugin) 191
8.2 擴展struts的配置類 194
8.3 控制器擴展點 195
8.3.1 擴展actionservlet類 195
8.3.2 擴展requestprocessor類 196
8.3.3 擴展action類 198
8.4 擴展視圖組件 200
8.5 擴展模型組件 200
8.6 小結 204
第9章 struts套用的國際化 205
9.1 本地化與國際化的概念 205
9.2 web套用的中文本地化 206
9.2.1 處理http請求數據編碼 207
9.2.2 處理資料庫數據編碼 207
9.2.3 處理xml配置檔案編碼 207
9.2.4 處理回響結果的編碼 208
9.3 java對i18n的支持 208
9.3.1 locale類 208
9.3.2 resourcebundle類 214
9.3.3 messageformat類和複合訊息 214
9.4 struts框架對國際化的支持 216
9.4.1 創建struts的resource bundle 216
9.4.2 訪問resource bundle 217
9.5 對helloapp套用實現國際化 220
9.5.1 對jsp檔案的文本、圖片和按鈕進行國際化 220
9.5.2 創建臨時中文資源檔案 221
9.5.3 對臨時資源檔案進行編碼轉換 222
9.5.4 創建英文資源檔案 223
9.5.5 採用servlet過濾器設定請求數據的字元編碼 223
9.5.6 運行國際化的helloapp套用 225
9.6 異常處理的國際化 226
9.7 小結 226
第10章 validator驗證框架 229
10.1 安裝和配置validator框架 229
10.1.1 validator-rules.xml檔案 229
10.1.2 validation.xml檔案 233
10.1.3 validator外掛程式 237
10.2 validator框架和actionform 238
10.3 validator框架和struts客戶化標籤 240
10.4 在netstore套用中使用validator框架 241
10.5 創建自定義的驗證規則 245
10.6 在validator框架中使用javascript 247
10.7 validator框架的國際化 250
10.8 小結 251
第11章 異常處理 253
11.1 java異常處理 253
11.1.1 java異常 253
11.1.2 jvm的方法調用堆疊 254
11.1.3 異常處理對性能的影響 255
11.1.4 系統異常和套用異常 256
11.1.5 使用異常鏈 256
11.1.6 處理多樣化異常 258
11.2 struts框架異常處理機制概述 260
11.3 struts框架異常處理機制的細節 261
11.3.1 java web容器處理異常的機制 261
11.3.2 actionservlet類處理異常的機制 261
11.3.3 requestprocessor類處理異常的機制 262
11.3.4 exceptionhandler類處理異常的機制 263
11.4 在struts套用中處理異常的各種方式 266
11.4.1 創建異常類 266
11.4.2 由java web容器捕獲異常 269
11.4.3 以配置方式處理異常 271
11.4.4 以編程方式處理異常 277
11.5 小結 282
第12章 struts html標籤庫 283
12.1 用於生成基本的html元素的標籤 283
12.1.1 [html:html]標籤 288
12.1.2 [html:base]標籤 288
12.1.3 [html:link]和[html:rewrite]標籤 289
12.1.4 [html:img]標籤 292
12.2 基本的表單標籤 293
12.2.1 [html:form]標籤 296
12.2.2 [html:text]標籤 296
12.2.3 [html:cancel]標籤 297
12.2.4 [html:reset]標籤 298
12.2.5 [html:submit]標籤 298
12.2.6 [html:hidden]標籤 299
12.3 檢查框和單選按鈕標籤 299
12.3.1 [html:checkbox]標籤 304
12.3.2 [html:multibox]標籤 305
12.3.3 [html:radio]標籤 306
12.4 下拉列表和多選列表標籤 307
12.4.1 [html:select]標籤 311
12.4.2 [html:option]標籤 312
12.4.3 [html:options]標籤 313
12.4.4 [html:optionscollection]標籤 314
12.5 在表單中上傳檔案標籤 315
12.5.1 [html:file]標籤 319
12.5.2 在actionform bean中設定formfile屬性 319
12.5.3 在action類中處理檔案上傳 319
12.6 [html:errors]標籤 320
12.6.1 錯誤訊息的來源 324
12.6.2 格式化地顯示錯誤訊息 326
12.6.3 [html:errors]標籤的用法 326
12.7 [html:messages]標籤 328
12.8 小結 330
第13章 struts bean標籤庫 331
13.1 訪問http請求信息或jsp隱含對象 331
13.1.1 [bean:header]標籤 334
13.1.2 [bean:parameter]標籤 334
13.1.3 [bean:cookie]標籤 335
13.1.4 [bean:page]標籤 336
13.2 訪問web套用資源 337
13.2.1 [bean:message]標籤 339
13.2.2 [bean:resource]標籤 341
13.2.3 [bean:struts]標籤 341
13.2.4 [bean:include]標籤 342
13.3 定義或輸出javabean 342
13.3.1 [bean:define]標籤 344
13.3.2 [bean:size]標籤 345
13.3.3 [bean:write]標籤 346
13.4 小結 347
第14章 struts logic標籤庫 349
14.1 進行比較運算的logic標籤 349
14.2 進行字元串匹配的logic標籤 354
14.3 判斷指定內容是否存在的logic標籤 356
14.3.1 [logic:empty]和[logic:notempty]標籤 359
14.3.2 [logic:present]和[logic:notpresent]標籤 360
14.3.3 [logic:messagespresent]和[logic:messagesnotpresent]標籤 361
14.4 進行循環遍歷的logic標籤 363
14.4.1 遍歷集合 366
14.4.2 遍歷map 367
14.4.3 設定被遍歷的變數 369
14.5 進行請求轉發或重定向的logic標籤 369
14.5.1 [logic:forward]標籤 369
14.5.2 [logic:redirect]標籤 370
14.6 小結 370
第15章 struts nested標籤庫 373
15.1 [nested:nest]和[nested:writenesting]標籤 373
15.2 [nested:root]標籤 379
15.3 和其他標籤庫中的標籤功能相同的nested標籤 381
15.4 小結 382
第16章 tiles框架 383
16.1 採用基本的jsp語句創建複合式網頁 383
16.2 採用jsp的include指令創建複合式網頁 387
16.3 採用[tiles:insert]標籤創建複合式網頁 391
16.4 採用tiles模板創建複合式網頁 394
16.5 採用tiles模板和tiles組件創建複合式網頁 396
16.5.1 tiles組件的基本使用方法 397
16.5.2 通過struts action來調用tiles組件 399
16.5.3 tiles組件的組合 399
16.5.4 tiles組件的擴展 402
16.6 小結 403
第17章 struts與ejb組件 405
17.1 j2ee體系結構簡介 405
17.2 創建ejb組件 406
17.2.1 編寫remote接口 407
17.2.2 編寫home接口 408
17.2.3 編寫enterprise java bean類 408
17.3 在struts套用中訪問ejb組件 413
17.3.1 創建業務代理實現類netstoreejbdelegate 413
17.3.2 運用ejbhomefactory模式 416
17.4 發布j2ee套用 419
17.4.1 在jboss-tomcat上部署ejb組件 419
17.4.2 在jboss-tomcat上部署web套用 421
17.4.3 在jboss-tomcat上部署j2ee套用 422
17.5 小結 424
第18章 struts與soap web服務 425
18.1 soap簡介 425
18.2 建立apache axis環境 427
18.3 創建和發布soap服務 428
18.3.1 創建實現soap服務的java類 428
18.3.2 創建web服務發布描述檔案 429
18.3.3 發布soap服務 432
18.4 在struts套用中訪問soap服務 432
18.5 小結 438
第19章 struts與apache通用日誌包 439
19.1 apache通用日誌包概述 439
19.1.1 log接口 439
19.1.2 logfactory接口 441
19.2 常用的日誌實現 441
19.2.1 nooplog日誌器 441
19.2.2 simplelog日誌器 442
19.2.3 log4j日誌器 442
19.3 配置通用日誌接口 443
19.3.1 準備jar檔案 443
19.3.2 指定日誌器 443
19.3.3 設定日誌器的屬性 444
19.4 配置log4j 444
19.4.1 配置log4j的一般步驟 444
19.4.2 log4j的配置樣例 446
19.4.3 log4j對套用性能的影響 447
19.5 在struts套用中訪問通用日誌接口 447
19.5.1 在action類中訪問通用日誌接口 448
19.5.2 在jsp中訪問通用日誌接口 450
19.6 小結 454
第20章 用ant工具管理struts套用 455
20.1 web套用常用的開發目錄結構 455
20.2 安裝配置ant 455
20.3 創建build.xml檔案 456
20.3.1 設定公共屬性 462
20.3.2 設定classpath 463
20.3.3 定義help target 463
20.3.4 定義clean-all target 463
20.3.5 定義prepare target 464
20.3.6 定義compile target 464
20.3.7 定義build target 465
20.3.8 定義deploy target 466
20.3.9 定義javadoc target 466
20.4 運行ant 466
20.4.1 運行help target 466
20.4.2 運行deploy target 467
20.4.3 運行javadoc target 468
20.5 小結 468
第21章 用strutstestcase測試struts套用 469
21.1 strutstestcase簡介 469
21.2 制訂單元測試用例 469
21.3 創建strutstestcase測試類 470
21.4 用ant工具運行測試程式 471
21.4.1 準備必要的jar檔案 471
21.4.2 在build.xml檔案中定義test target 471
21.4.3 運行測試程式 472
21.5 創建包含多個單元測試用例的測試類 473
21.6 小結 475
附錄a struts1.1的uml類框圖 476
附錄b struts資源 477
b.1 struts郵件列表 477
b.2 struts資源web站點 477
b.3 tiles標籤庫站點 477
b.4 nested 標籤庫站點 478
b.5 struts gui工具 478
b.6 easy struts 工程 478
附錄c 發布和運行addressbook套用 479
c.1 發布addressbook套用 479
c.2 運行addressbook套用 479
附錄d 發布和運行netstore套用 482
d.1 運行netstore所需的軟體 482
d.2 netstore套用的目錄結構 483
d.3 安裝netstore資料庫 484
d.4 發布netstore套用 484
d.4.1 在工作模式1下發布netstore套用 484
d.4.2 在工作模式2下發布netstore套用 485
d.4.3 在工作模式3下發布netstore套用 485
d.4.4 在工作模式4下發布netstore套用 486
d.4.5 在工作模式5下發布netstore套用 486
d.5 運行netstore套用 487
附錄e 編譯本書的java web樣例 491
附錄f struts 1.2 api的新特徵 492