內容簡介
本書由著名暢銷書作家、JSF 1.0專家組成員David Geary主筆,是JSF編程圖書中的絕對“頭號指南”,自第一版出版以來,一直是廣大JSF學習者的首選教程。
本書全面深入地講解了JSF 1.2編程的各個方面,包括JSF的各種增強特性、強大的Ajax開發技術,以及使JSF更具價值的開源創新內容,為創建高性能的應用程式提供系統級的最佳實用方案。兩位傳奇作者利用自身對Java平台的透徹理解,為讀者提供了大量解決方案、技巧、提示和編寫優秀JSF 1.2產品代碼的方法,無論讀者是JSF或者servlet方面的新手還是老手,都將大受裨益。
目錄
第1章入門 1
1.1為什麼要選擇
JavaServerFaces 1
1.2軟體安裝 2
1.3一個簡單的例子 4
1.3.1組成部分 6
1.3.2目錄結構 7
1.3.3構建說明 8
1.4示例應用程式分析 9
1.4.1Beans 9
1.4.2JSF頁面 10
1.4.3導航 13
1.4.4Servlet配置 15
1.4.5歡迎檔案 17
1.5JSF開發環境 17
1.5.1集成開發環境 17
1.5.2可視構建器工具 18
1.5.3使用Ant構建自動化 20
1.6JSF框架服務 23
1.7內幕 25
1.7.1呈現頁面 26
1.7.2解碼請求 27
1.7.3生命周期 28
第2章受管理Bean 31
2.1Bean的定義 31
2.1.1Bean屬性 33
2.1.2值表達式 34
2.2訊息包 35
2.2.1具有可變部分的訊息 37
2.2.2設定應用程式的本地化 37
2.3示例應用程式 39
2.4支撐Bean 45
2.5Bean作用域 46
2.5.1會話作用域 46
2.5.2應用程式作用域 47
2.5.3請求作用域 47
2.5.4生命周期說明 48
2.6配置Bean 48
2.6.1設定屬性值 49
2.6.2初始化列表和映射 49
2.6.3連結Bean定義 51
2.6.4字元串轉換 53
2.7值表達式的語法 54
2.7.1使用方括弧 55
2.7.2映射和列表表達式 55
2.7.3解析初始術語 56
2.7.4複合表達式 57
2.7.5方法表達式 58
第3章導航 61
3.1靜態導航 61
3.2動態導航 63
3.3高級導航問題 73
3.3.1重定向 74
3.3.2通配符 75
3.3.3使用from-action 75
3.3.4導航算法 76
第4章標準JSP標籤 79
4.1JSF核心標籤概述 80
4.2JSFHTML標籤概述 82
4.3表單 89
4.4文本欄位和文本區域 94
4.4.1隱藏欄位 97
4.4.2使用文本欄位和文本區域 97
4.4.3顯示文本和圖片 101
4.5按鈕和連結 103
4.5.1使用命令按鈕 104
4.5.2使用命令連結 108
4.6選擇標籤 113
4.6.1複選框和單選按鈕 115
4.6.2選單和列表框 118
4.6.3項目 120
4.7訊息 137
4.8面板 142
第5章數據表 147
5.1數據表標籤——h:dataTable 148
5.2一個簡單的表 148
5.2.1h:dataTable屬性 151
5.2.2h:column屬性 153
5.3表頭、表尾和標題 153
5.4JSF組件 156
5.5編輯表元 160
5.6樣式 163
5.6.1列樣式 163
5.6.2行樣式 164
5.7資料庫表 165
5.8表模型 170
5.8.1編輯表模型 171
5.8.2排序和過濾 176
5.9滾動技術 186
5.9.1使用滾動條滾動表 186
5.9.2使用分頁組件滾動 187
第6章轉換和驗證 189
6.1轉換和驗證過程概述 189
6.2使用標準轉換器 190
6.2.1數字和日期的轉換 190
6.2.2轉換錯誤 194
6.2.3一個完整的轉換器的例子 199
6.3使用標準驗證器 202
6.3.1驗證字元串長度和數值範圍 202
6.3.2必需值的檢查 203
6.3.3顯示驗證錯誤 204
6.3.4跳過驗證 205
6.3.5一個完整的驗證例子 205
6.4使用自定義轉換器和驗證器編程 207
6.4.1實現自定義轉換器類 207
6.4.2實現自定義驗證器類 220
6.4.3註冊自定義驗證器 223
6.4.4使用Bean方法驗證 225
6.4.5為轉換器提供屬性 226
6.4.6在多個組件間驗證關係 226
第7章事件處理 231
7.1生命周期事件 232
7.2值變化事件 233
7.3動作事件 238
7.4事件監聽器標籤 247
7.5直接組件 249
7.5.1使用直接輸入組件 250
7.5.2使用直接命令組件 251
7.6從UI到伺服器傳遞數據 252
7.6.1f:param標籤 253
7.6.2f:attribute標籤 254
7.6.3f:setPropertyActionListener標籤 255
7.7階段事件 256
7.8把所有組件放在一起 265
第8章子視圖和Tiles 275
8.1常見布局 275
8.2書籍閱讀器和圖書館 276
8.3書籍閱讀器 278
8.3.1單一JSF頁面 279
8.3.2公共內容包含 285
8.3.3基於JSP程式的包含內容 285
8.3.4JSF特定的考慮 286
8.4書籍閱讀器中的內容包含 287
8.4.1了解Tiles 290
8.4.2安裝Tiles 290
8.4.3為書籍閱讀器使用Tiles 291
8.4.4參數化Tiles 292
8.4.5擴展Tiles 293
8.5圖書館 297
8.5.1嵌入Tiles 298
8.5.2Tiles控制器 298
第9章自定義組件、轉換器和驗證器 311
9.1用於實現自定義組件的類 312
9.1.1標籤和組件 314
9.1.2自定義組件開發者的工具箱 316
9.2編碼:產生標記 317
9.3解碼:處理請求值 320
9.4實現自定義組件標籤 325
9.4.1TLD檔案 326
9.4.2標籤處理程式類 329
9.4.3微調控制器程式 333
9.4.4在JSF1.1中定義標籤處理程式 336
9.5深入理解微調控制器 341
9.5.1使用外部呈現器 341
9.5.2從外部呈現器中調用轉換器 346
9.5.3支持值變化監聽器 347
9.5.4支持方法表達式 348
9.5.5示例程式 350
9.6編碼JavaScript以避免到伺服器往返 356
9.7使用子組件和facets 359
9.7.1處理SelectItem子組件 363
9.7.2處理facets 363
9.7.3編碼CSS樣式 364
9.7.4使用隱藏欄位 366
9.7.5保存和重建狀態 367
9.7.6觸發動作事件 369
9.7.7使用多頁選項卡 376
9.8實現自定義轉換器和驗證器 382
9.8.1自定義轉換器標籤 382
9.8.2自定義驗證器標籤 391
第10章外部服務 401
10.1使用JDBC訪問資料庫 401
10.1.1傳送SQL語句 401
10.1.2連線管理 403
10.1.3填補連線泄漏 403
10.1.4使用預編譯語句 405
10.2配置數據源 406
10.2.1在GlassFish中配置資料庫資源 406
10.2.2在Tomcat中配置資料庫資源 408
10.2.3訪問容器管理的資源 410
10.2.4一個完整的資料庫例子 412
10.3LDAP介紹 421
10.3.1LDAP目錄 421
10.3.2配置LDAP伺服器 423
10.3.3訪問LDAP目錄信息 426
10.4管理配置信息 431
10.4.1配置Bean 431
10.4.2配置外部上下文 433
10.4.3配置容器管理資源 434
10.4.4創建LDAP應用程式 438
10.5容器管理的驗證和授權 450
10.6使用Web服務 461
第11章Ajax 471
11.1Ajax基礎 472
11.2JavaScript庫 474
11.2.1Prototype庫 475
11.2.2褪色技術庫 475
11.3表單自動完成 475
11.4實時驗證 478
11.5傳送客戶端視圖狀態 483
11.6直接Web遠程調用 484
11.7Ajax組件 486
11.7.1混合組件 487
11.7.2將JavaScript放在呈現器外面 490
11.7.3傳輸JSP標籤屬性到
JavaScript代碼 492
11.8Ajax4jsf 493
11.8.1使用Ajax4jsf實現表單自動完成 494
11.8.2使用Ajax4jsf實現實時驗證 498
第12章開源 509
12.1Web流——Shale 510
12.1.1對話框配置 513
12.1.2進入對話框 513
12.1.3對話框導航 514
12.1.4對話框作用域 515
12.1.5對話框上下文敏感 517
12.1.6子對話框 519
12.2另一種視圖技術——Facelets 521
12.2.1XHTML視圖 522
12.2.2標記通過使用JSF組件替換:jsfc屬性 523
12.2.3使用JSF標籤 526
12.2.4使用模板的頁面合成 528
12.2.5Facelets自定義標籤 530
12.3EJB集成——Seam 531
12.3.1地址簿 532
12.3.2配置 535
12.3.3實體Bean 536
12.3.4有狀態會話Bean 538
12.3.5JSFDataModel集成 540
12.3.6對話作用域 542
第13章如何實現…… 545
13.1Web用戶界面設計 545
13.1.1如何找到更多的組件? 545
13.1.2如何支持檔案上傳? 548
13.1.3如何顯示圖像映射? 556
13.1.4如何在MyPage中包含一個applet? 557
13.1.5在JSF頁面中如何產生二進制數據? 559
13.1.6如何一次在一個頁面中顯示大型數據集? 569
13.1.7如何產生一個彈出視窗? 575
13.1.8如何有選擇地顯示和隱藏組件? 583
13.1.9如何自定義錯誤頁面? 584
13.2驗證 588
13.2.1如何編寫自己的客戶端驗證標籤? 588
13.2.2如何為客戶端驗證使用Shale驗證器? 595
13.2.3如何驗證組件間的關係? 596
13.3編程 597
13.3.1在Eclipse中如何使用JSF? 597
13.3.2如何查找配置檔案? 600
13.3.3JSF組件如何訪問JAR檔案中的資源? 600
13.3.4如何將一系列標籤打
包到JAR檔案中? 604
13.3.5在JavaScript中,如何為產生document.forms[id]取得表單ID? 605
13.3.6如何使JavaScript函式每頁只出現一次? 605
13.3.7如何執行初始化或清理工作? 606
13.3.8如何存儲一個受管理Bean,使它的生命周期比請求作用域長但比會話作用域短? 606
13.3.9如何擴展JSF表達式語言? 607
13.4調試和日誌 610
13.4.1如何解釋棧跟蹤? 611
13.4.2如何避免“複雜的堆疊跟蹤”? 614
13.4.3如何“熱部署”應用程式? 614
13.4.4如何注釋掉JSF頁面的一部分? 615
13.4.5如何找到日誌? 616
13.4.6如何查看頁面接收了什麼參數? 618
13.4.7如何開啟JSF容器的日誌功能? 619
13.4.8如何調試問題頁? 622
13.4.9如何找到庫原始碼? 623