內容簡介
jsf是sun公司j2ee標準指定的Web套用框架,得到了眾多廠商的支持。本書是jsf方面的名著,共分五個部分。第一部分是jsf基礎知識;第二部分是構建ui;第三部分研究將原型轉化為實際套用所需的套用代碼;第四部分從組件開發的角度來研究jsf;第五部分基於第四部分所講述的知識給出了大量示例。本書作者是jsf界的權威,在書中提供了大量的實際經驗。.
本書適合正在開發java web套用的架構師、套用開發人員閱讀。
jsf是基於組件的javaee標準web框架,得到了業界各大廠商的普遍支持。本書是jsf領域的一部名著,是世界頂尖jsf專家的經驗結晶。..
本書集教程、案例和參考於一身,講解了何為jsf,它的工作原理,如何套用jsf開發web程式的界面,如何與struts、jsp和xul等技術結合。書中還講解了標準組件、呈現器、轉換器和驗證器的各種細節,以及如何套用它們來構建實際套用。
另外,在本書的配套網頁上為讀者免費提供了近300頁極具價值的擴展內容,包括開發各種組件、呈現器、驗證器和轉換器的示例和jsf參考。
目錄
第一部分 jsf探秘
第1章 jsf介紹 . 2
1.1 這是rad化的世界 2
1.1.1 什麼是jsf 3
1.1.2 業界支持 7
1.2 幕後的技術 7
1.2.1 http 7
1.2.2 servlet 8
1.2.3portlet9
1.2.4 javabeans 9
1.2.5 jsp和其他顯示技術 10
1.3 框架,框架,還是框架 10
1.3.1 為什麼使用框架 11
1.3.2 它是模型2的 11
1.3.3 jsf、struts以及其他框架 12
1.4 組件無處不在 14
1.5 hello, world! 15
1.5.1 解剖hello.jsp 17
1.5.2 解剖goodbye.jsp 22
1.5.3 檢視hellobean類 23
.1.5.4 通過faces-config.xml進行配置 25
1.5.5 配置web.xml 26
1.6 小結 27
第2章 jsf基礎 28
2.1 關鍵部件 28
2.1.1UI組件30
2.1.2 呈現器 31
2.1.3 驗證器 32
2.1.4 後台bean 33
2.1.5 轉換器 34
2.1.6 事件和監聽器 35
2.1.7 訊息 40
2.1.8 導航 40
2.2 請求處理生命周期 41
2.2.1 階段1:恢復視圖 44
2.2.2 階段2:套用請求值 46
2.2.3 階段3:處理驗證 47
2.2.4 階段4:更新模型值 47
2.2.5 階段5:調用套用 48
2.2.6 階段6:呈現回響 49
2.3 理解組件和客戶端標識符 49
2.3.1命名容器52
2.3.2 引用標識符 53
2.4 jsf表達式語言 54
2.4.1 作用域變數 57
2.4.2 使用隱含變數 58
2.4.3 在組件中使用el 60
2.5 小結 62
第3章 熱身:初識jsf 64
3.1 設定jsf環境 64
3.1.1 基本要求 64
3.1.2 選擇jsf實現 65
3.1.3 目錄結構 65
3.1.4 配置 66
3.2 jsp的角色 73
3.2.1 使用jsp包含 74
3.2.2 與jstl以及其他jsp定製標籤一起使用jsf 75
3.3 創建和初始化bean 80
3.3.1 聲明受管bean 82
3.3.2 將list和map聲明為受管bean 90
3.3.3 通過值綁定表達式設定值 93
3.4 在頁面海洋中導航 95
3.5 小結 101
第4章 從標準組件開始 102
4.1 一切盡在組件中 102
4.1.1 使用html屬性 104
4.1.2 理解facet106
4.1.3 工具的威力 106
4.1.4 幕後的呈現包 108
4.2 組件的通用屬性 108
4.3 用uiviewroot控制頁面 109
4.4 用uiparameter設定組件參數 110
4.5 使用output組件顯示數據 112
4.5.1 使用htmloutputtext顯示普通文本 112
4.5.2 與<f:verbatim>標籤一起使用uioutput 113
4.5.3 使用htmloutputlabel創建輸入標註 116
4.5.4 使用htmloutputformat輸出參數化文本 117
4.5.5 使用htmloutputlink顯示超連結 121
4.6 使用htmlgraphicimage顯示圖像 122
4.7 使用htmlmessage顯示組件訊息 123
4.8 使用htmlmessages顯示套用訊息 126
4.9 使用面板組件進行分組和布局 127
4.9.1 使用htmlpanelgroup分組組件 128
4.9.2 使用htmlpanelgrid創建表格 129
4.10 小結 133
第5章 使用輸入組件和數據表格組件 135
5.1 註冊事件監聽器 135
5.1.1 聲明值改變事件 136
5.1.2 聲明動作事件 136
5.2通用組件屬性 137
5.3 使用htmlform處理表單 138
5.4 處理基本用戶輸入 140
5.4.1 使用htmlinputtext顯示基本文本框 140
5.4.2 使用htmlinputtextarea顯示備註欄位 141
5.4.3 使用htmlinputsecret顯示口令欄位 142
5.4.4 使用htmlinputhidden聲明隱藏欄位 143
5.5 使用htmlselectbooleancheckbox來顯示複選框 144
5.6 定義條目列表 144
5.6.1 用uiselectitem表示單選條目 145
5.6.2 uiselectitems用作多選條目 147
5.7 處理多項選擇 148
5.7.1 htmlselectmanycheckbox用作複選框組 149
5.7.2 使用htmlselectmanylistbox顯示列表框 151
5.7.3 htmlselectmanymenu用作單選列表框 152
5.8 處理單項選擇 153
5.8.1 htmlselectoneradio用作單選按鈕組 154
5.8.2 用htmlselectonelistbox顯示單選列表框 156
5.8.3 使用htmlselectonemenu顯示組合框 157
5.9 執行套用命令 158
5.9.1 使用htmlcommandbutton聲明按鈕 158
5.9.2 使用htmlcommandlink創建動作連結 160
5.10 使用htmldatatable顯示數據集 162
5.11 小結 168
第6章 國際化、驗證器和轉換器 170
6.1 國際化和本地化 170
6.1.1 探究場所 171
6.1.2 創建資源束 173
6.1.3 在組件中使用資源束 174
6.1.4 從後台代碼國際化字元串 177
6.2 輸入驗證 177
6.2.1 使用驗證器方法 177
6.2.2 使用驗證器 178
6.2.3 使用標準驗證器 179
6.2.4 綜合不同驗證器 181
6.3 類型轉換和格式化 182
6.3.1 使用轉換器 184
6.3.2 使用標準轉換器 185
6.4 定製套用訊息 195
6.5 小結 198
第二部分 構建用戶界面
第7章 projecttrack介紹 200
7.1 需求 200
7.2 概念模型 203
7.3 用戶界面 204
7.4 開發團隊 206
7.5 小結 206
第8章 不用java編碼開發用戶界面:登錄頁面 207
8.1 開始 208
8.1.1 設定web.xml 209
8.1.2 設定faces-config.xml 210
8.2 創建login頁面 210
8.2.1 從htmlgraphicimage和htmloutputtext組件開始 211
8.2.2 添加一個表單 213
8.3 裝扮一下 218
8.3.1 對按鈕使用圖像 218
8.3.2 集成javascript 219
8.3.3 添加css 220
8.4 添加驗證器 221
8.5 用htmlpanelgrid改善布局 224
8.6 小結 229
第9章 不用java編碼開發用戶界面:其他頁面 231
9.1 使用定製組件構建頁面頭部 231
9.1.1 使用定製的工具條組件 235
9.1.2 配置導航規則 236
9.2 使用面板建立數據表格原型 237
9.2.1 inbox頁面 238
9.2.2 配置導航規則 241
9.2.3 show all頁面 242
9.2.4 配置導航規則 242
9.3 創建輸入表單 243
9.3.1approvea project頁面 243
9.3.2 配置導航規則 248
9.3.3 reject a project頁面 248
9.3.4 配置導航規則 250
9.3.5 create a project頁面 251
9.3.6 配置導航規則 255
9.4 project details頁面 256
9.5 小結 260
第10章 集成套用系統功能 261
10.1 理解jsf開發方法 261
10.2 探究應用程式環境 263
10.3 基於安全重組頁面 265
10.4 login頁面 266
10.5 header頁面 270
10.6 集成數據表格 273
10.6.1 inbox頁面 273
10.6.2 show all頁面 280
10.7 集成輸入表單 280
10.7.1 更新包含頁面 280
10.7.2 approve a project頁面 283
10.7.3 reject a project頁面 285
10.7.4 create a project頁面 286
10.8 project details頁面 289
10.9 添加錯誤頁面 294
10.9.1 更新web.xml檔案 295
10.9.2 更新導航規則 295
10.10 國際化和本地化ui 296
10.10.1 將文本提取到資源束中 296
10.10.2 國際化header 297
10.10.3 本地化為俄語 299
10.11 小結 301
第三部分 開發應用程式邏輯
第11章 jsf環境 304
11.1 從servlet到jsf 304
11.2應用程式基礎 306
11.2.1 application類 307
11.2.2 求解表達式 309
11.3 一切盡在上下文 311
11.3.1 facescontext 312
11.3.2 facesmessage 313
11.3.3 externalcontext 315
11.4 事件處理 .. 318
11.4.1 facesevent 319
11.4.2 處理動作事件 320
11.4.3 處理值改變事件 322
11.4.4 處理階段事件 323
11.5 再探組件 325
11.5.1 ui組件 328
11.5.2 uiviewroot 330
11.5.3 valueholder 333
11.5.4 editablevalueholder 334
11.5.5 selectitem和selectitemgroup模型bean 335
11.6 小結 337
第12章 應用程式設計和基本類 338
12.1 餅的層次 338
12.2 烘烤豆子 340
12.2.1 tostring方法的重要性 341
12.2.2 序列化 342
12.2.3 一切盡在屬性中 342
12.2.4 暴露bean 350
12.3 分析業務層和數據層 351
12.4 開發套用層 353
12.4.1 處理常數 354
12.4.2組織工具方法 356
12.4.3 初始化singleton358
12.4.4 適配業務對象 360
12.5 編寫一個管理會話狀態的visit對象 365
12.6 開發一個後台bean 基類 368
12.7 小結 371
第13章 後台bean、安全和國際化 372
13.1 編寫後台bean 372
13.1.1 執行緒安全 373
13.1.2 處理錯誤 373
13.1.3 執行認證 376
13.1.4 使用uidata和參數化監聽器列出項目 381
13.1.5 修改項目 391
13.1.6 創建新項目 395
13.1.7 使用uidata對項目歷史分頁 400
13.1.8 使用jdbc resultsets和uidata 406
13.2 加入安全機制 410
13.2.1 基於容器的安全和定製的安全 410
13.2.2 使用定製安全 411
13.3 在代碼中支持國際化 415
13.3.1 使用資源束國際化文本 415
13.3.2 國際化訊息 419
13.4 設計推論和替代選擇 423
13.4.1 訪問業務層 423
13.4.2 按功能組織bean 424
13.4.3 用後台bean實現的動作方法 425
13.4.4 通過受管bean 創建工具初始化bean 屬性 426
13.5 小結 426
第14章 集成jsf與struts及現有套用 428
14.1 集成意味著什麼 428
14.2 何時需要與其他框架一起使用jsf 429
14.3 請求和回響的多面性 429
14.4 集成jsf與struts套用 431
14.4.1 第一步 433
14.4.2 遷移struts jsp標籤 434
14.4.3 使用jsf動作方法和受管bean 451
14.4.4 誰控制誰 452
14.5 集成jsf和非struts套用 453
14.6 小結 454
第四部分 編寫定製組件、呈現器、驗證器和轉換器
第15章 jsf環境:組件開發者的視角 456
15.1 三步驟至ui擴展架構之天堂 456
15.2 開發ui 組件 457
15.2.1 決定何時編寫ui組件 458
15.2.2 類和接口 459
15.2.3 通過方法綁定進行事件處理 469
15.2.4 註冊 470
15.2.5 jsp集成 472
15.3 開發呈現器 479
15.3.1 決定何時需要編寫呈現器 482
15.3.2 renderer類 483
15.3.3 renderkit類 484
15.3.4 註冊 485
15.3.5 jsp集成 488
15.4 開發驗證器 488
15.4.1 validator接口 489
15.4.2 註冊 490
15.4.3 jsp集成 492
15.5 開發轉換器 493
15.5.1 converter接口 494
15.5.2 註冊 495
15.5.3 jsp集成 497
15.6 處理國際化 498
15.7 封包ui擴展 498
15.8 小結 499
附錄a 在非jsp環境中使用jsf 501
a.1 jsf如何處理顯示技術 501
a.2 使用基於類的頁面創建視圖 502
a.3 通過xul創建視圖 504
a.4 其他選擇 506
參考文獻 507
第五部分 編寫定製組件、呈現器、驗證器和轉換器:示例1
第16章 uiinputdate:一個簡單的輸入組件 512
16.1 編寫uiinputdate類 513
16.1.1 編碼 514
16.1.2 解碼 520
16.1.3 實現stateholder方法 521
16.2註冊組件522
16.3 jsp集成 522
16.3.1 編寫jsp 定製標籤 522
16.3.2 驗證標籤 524
16.3.3 將標籤添加到標籤庫 525
16.4 使用組件 527
16.5 小結 528
第17章 rolloverbutton呈現器:javascript支持的呈現器 530
17.1 編寫rolloverbuttonrender類 532
17.1.1 編碼 533
17.1.2 解碼 536
17.1.3 註冊呈現器 537
17.2 jsp集成 537
17.2.1 編寫htmlbasetag類 538
17.2.2 編寫jsp定製標籤 540
17.2.3 驗證標籤 543
17.2.4 將標籤添加到標籤庫中 544
17.3 使用呈現器 546
17.4 包裝現有的呈現器 548
17.5 小結 552
第18章 uiheadlineviewer:一個複合的數據感知組件 553
18.1 rss和informa api 555
18.2 在informa中使用uidata 558
18.3子類化datamodel 559
18.4 編寫uiheadlineviewer類 562
18.5 註冊組件 573
18.6 jsp集成 574
18.6.1 編寫jsp定製標籤 574
18.6.2 將標籤添加到標籤庫 580
18.7 使用組件 581
18.8 小結 585
第19章 uinavigator:模型驅動的工具條組件 586
19.1 編寫模型類 588
19.2 編寫uinavigator類 591
19.2.1 實現actionsource方法 593
19.2.2 覆蓋uicomponentbase方法 595
19.2.3 實現stateholder方法 597
19.2.4 開發navigatoractionlistener:一個定製actionlistene 598
19.3 註冊組件 599
19.4 編寫toolbarrenderer 類 599
19.4.1 編碼 600
19.4.2 解碼 607
19.5 註冊呈現器 608
19.6 jsp集成 608
19.6.1 編寫navigatortoolbartag組件標籤 609
19.6.2 編寫navigatoritemtag 標籤處理器 612
19.6.3 將標籤添加到標籤庫 616
19.7 使用組件 619
19.8 小結 622
第20章 驗證器和轉換器:示例 624
20.1 驗證器方法和驗證器類 624
20.2 開發驗證器 624
20.2.1 編寫regularexpression- validator類 626
20.2.2 註冊驗證器 630
20.2.3 與jsp集成 631
20.2.4 使用驗證器 634
20.3 何時定製轉換器是必要的 636
20.4 開發轉換器 636
20.4.1 編寫userconverter類 638
20.4.2 註冊轉換器 646
20.4.3 jsp集成 647
20.4.4 使用轉換器 651
20.5 小結 652
附錄b jsf ide和實現概覽 653
b.1 使用 jsf with oracleJDeveloper653
b.1.1 oracle對jsf的看法 654
b.1.2 何為adf faces 組件 654
b.1.3 jdeveloper 探究 656
b.1.4 構建projecttrack的登錄頁面 657
b.1.5 誇獎一番 668
b.2 在websphere studio中使用jsf 668
b.2.1 探究websphere studio 668
b.2.2 構建projecttrack的login頁面 670
b.2.3 誇獎一番 681
b.3 jsf和Java Studiocreator 682
b.3.1 使用java studio creator 682
b.3.2 構建projecttrack的login頁面 684
b.3.3 誇獎一番 692
b.4 jsf實現 693
附錄c 擴展核心jsf類 694
c.1 隱藏於幕後的類 694
c.2 替換或者擴展可插入類 698
c.2.1 配置可插入類 698
c.2.2 裝飾可插入類 699
c.2.3 替換可插入類 703
附錄d jsf配置 712
d.1 公共屬性 713
d.2 公共元素 713
d.2.1 <icon> 713
d.2.2 <property> 714
d.2.3 <attribute> 714
d.2.4 <facet> 715
d.3 日常配置和可插入類 715
d.3.1 <application> 715
d.3.2 <managed-bean> 716
d.3.3 <referenced-bean> 718
d.3.4 <navigation-rule> 718
d.4 用戶界面擴展 719
d.4.1 <component]>720
d.4.2 <render-kit> 720
d.4.3 <validator]>721
d.4.4 <converter> 722
d.5 高級特徵 722
d.5.1 <lifecycle> 722
d.5.2 <factory> 722
附錄e 時區、國家(地區)、語言和貨幣代碼724
e.1 時區代碼 724
e.2 語言代碼 733
e.3 國家(地區)代碼 736
e.4 貨幣代碼 ... 741