Sun Java Studio Creator中使用數(shù)據(jù)綁定組件訪問(wèn)數(shù)據(jù)庫(kù)(JSF)
在此演練中,您將在 Sun Java? Studio Creator 應(yīng)用程序開發(fā)環(huán)境 (IDE) 中創(chuàng)建和部署一個(gè)簡(jiǎn)單的 Web 應(yīng)用程序"travel center"。向頁(yè)面中添加兩個(gè)組件,并將那些數(shù)據(jù)識(shí)別組件綁定到本地?cái)?shù)據(jù)庫(kù)。然后,生成應(yīng)用程序并將其
部署到本地應(yīng)用服務(wù)器,在客戶機(jī) Web 瀏覽器上運(yùn)行該應(yīng)用程序。
內(nèi)容
? 創(chuàng)建項(xiàng)目
? 添加 Dropdown List 組件
? 將組件連接到數(shù)據(jù)庫(kù)
? 運(yùn)行 Web 應(yīng)用程序
? 添加 Data Table
? 修改 SQL 查詢
? 控制顯示的行
要完成此演練,系統(tǒng)上應(yīng)該已經(jīng)安裝了 IDE,并且您已經(jīng)閱讀了 Java Studio Creator 入門 教程。
創(chuàng)建項(xiàng)目
開發(fā) Web 應(yīng)用程序從創(chuàng)建項(xiàng)目開始。就像在入門教程中學(xué)習(xí)的那樣,項(xiàng)目是 IDE 中的基本工作單元。項(xiàng)目包含
組成應(yīng)用程序的所有源代碼和資源。
1. 在“歡迎”屏幕上單擊“創(chuàng)建新項(xiàng)目”。
2. 在“新建項(xiàng)目”對(duì)話框的“名稱”文本字段中,鍵入 TravelCenter。
3. 選擇“缺省 J2EE Web 應(yīng)用程序”模板(如果尚未選定),然后單擊“確定”。
通過(guò)這些步驟會(huì)創(chuàng)建兩個(gè)重要的文件,在本教程的其他部分中也將用到這兩個(gè)文件。
? Page1.jsp-JavaServer Pages? 中包含組成 Web 應(yīng)用程序的組件。最初,在應(yīng)用程序中只有一個(gè) JSP?
頁(yè),但是隨后您可以添加更多的頁(yè)面。
? Page1.java-包含頁(yè)面狀態(tài)并使其在不同的呈現(xiàn)中保持一致的 JavaBeans? Bean。缺省情況下代碼是不
可見的,但是您可以通過(guò)右鍵單擊頁(yè)面,然后在上下文菜單中選擇“查看 Page1 Java 類”來(lái)顯示它。
添加 Dropdown List 組件
接下來(lái),向頁(yè)面中添加 Dropdown List 組件。
1. 在組件面板中,選擇“JSF”>“JSF 標(biāo)準(zhǔn)組件”,然后將 Dropdown List 組件拖到頁(yè)面上。
Dropdown List 組件將出現(xiàn)在 Page1.jsp 頁(yè)面上。您可以通過(guò)使用選擇句柄來(lái)調(diào)整組件的大小,也可以
1
Sun Java Studio Creator
將組件移動(dòng)到新位置。
2. 右鍵單擊頁(yè)面背景,然后在上下文菜單中選擇“查看 Page1 Java 類”。
會(huì)在源編輯器中打開頁(yè)面的 JavaBeans 源代碼。
3. 在“選擇類成員”下拉列表中選擇 "dropdown1" 以導(dǎo)航到實(shí)例變量聲明。(“選擇類成員”下拉列表位于
源編輯器工具欄中。)
初始化 Dropdown List 組件的 Java 代碼已添加到 Page1 類實(shí)現(xiàn)。
private HtmlSelectOneMenu dropdown1 = new HtmlSelectOneMenu();
將組件連接到數(shù)據(jù)庫(kù)
在此部分中,使 Dropdown List 組件可以從數(shù)據(jù)庫(kù)表獲得項(xiàng)。
1. 單擊源編輯器頂部的 Page1.jsp 標(biāo)簽以查看頁(yè)面。
2. 從“服務(wù)器導(dǎo)航”中,將“數(shù)據(jù)源”> "Travel" >“表”> "PERSON" 節(jié)點(diǎn)拖放到 Dropdown List 組件的上
面。
將出現(xiàn)一個(gè)對(duì)話框,且 personRowSet 已添加到非可視組件托盤中。
注如果 PointBase Embedded 數(shù)據(jù)庫(kù)沒(méi)有運(yùn)行,則您將看到一個(gè)“錯(cuò)誤”對(duì)話框,告訴您這一情況。如果看
到此對(duì)話框,請(qǐng)關(guān)閉“錯(cuò)誤”對(duì)話框,在“服務(wù)器導(dǎo)航”中右鍵單擊“PointBase 數(shù)據(jù)庫(kù)服務(wù)器”節(jié)點(diǎn),
然后在上下文菜單中選擇“啟動(dòng) PointBase”。然后,右鍵單擊“數(shù)據(jù)源”>
"Travel",并從上下文菜單中選擇 “刷新”。現(xiàn)在,您應(yīng)該能夠定位到 "Travel" 數(shù)據(jù)源節(jié)點(diǎn)。
3. 單擊“填充列表”。
因?yàn)?PERSON.NAME 列屬于 SQL 類型 varchar,在 Dropdown List 組件中將顯示文本 "abc",指示所顯
示的數(shù)據(jù)是一個(gè)字符串。
注如果沒(méi)看到這個(gè)對(duì)話框,是因?yàn)?PERSON 節(jié)點(diǎn)沒(méi)有被直接放到 Dropdown List 組件的上面。在這種情況
下,在執(zhí)行下一步時(shí),請(qǐng)確保如圖 1 所示選定了 PERSON.PERSONID 和 PERSON.NAME 列。
4. 右鍵單擊 Dropdown List 組件,然后從上下文菜單中選擇“從數(shù)據(jù)庫(kù)填充列表”。
“值字段”被綁定到 PERSON.PERSONID 列,該列是 PERSON 表的主鍵。此字段提供由 JSF 組件的
getValue() 方法返回的值。另一方面,“顯示字段”被綁定到 PERSON.NAME 列,是組件運(yùn)行時(shí)所顯
示的內(nèi)容。
5. 單擊“確定”。
運(yùn)行 Web 應(yīng)用程序
現(xiàn)在,您可以部署和運(yùn)行 Web 應(yīng)用程序了。IDE 附帶有一個(gè)已經(jīng)安裝的本地部署服務(wù)器:
? Sun Java? System Application Server Platform Edition 8
部署服務(wù)器是作為“服務(wù)器導(dǎo)航”中“部署服務(wù)器”節(jié)點(diǎn)下的一個(gè)節(jié)點(diǎn)安裝的。通過(guò)部署服務(wù)器的上下文菜單
(可通過(guò)右鍵單擊它進(jìn)行訪問(wèn)),可以啟動(dòng)或停止它。
部署和運(yùn)行 Web 應(yīng)用程序
1. 單擊工具欄中的“全部保存”按鈕。
2. 單擊工具欄中的“運(yùn)行項(xiàng)目”按鈕。
IDE 將生成、部署和運(yùn)行 TravelCenter 應(yīng)用程序。首先,“生成輸出”窗口出現(xiàn)在 IDE 布局的底部。有關(guān)
編譯的信息和部署準(zhǔn)備將輸出到此窗口。(如果在生成時(shí)出現(xiàn)問(wèn)題,請(qǐng)首先檢查“生成輸出”窗口。)接
下來(lái),將打開一個(gè)對(duì)話框,其中顯示部署的狀態(tài)。
部署之后,將使用 URL http://localhost:18080/travelcenter/ 為應(yīng)用程序打開一個(gè)新的 Web 瀏覽器
窗口。使用 PERSON 表的 NAME 列中的數(shù)據(jù)填充下拉列表。
添加 Data Table
接下來(lái),向應(yīng)用程序中添加一個(gè) Data Table 組件,并將該組件與數(shù)據(jù)庫(kù)表相連。
1. 在組件面板中,單擊“JSF 標(biāo)準(zhǔn)組件”,將 Data Table 拖至頁(yè)面,并將它放置在 Dropdown List 組件的下
面。
2. 拖動(dòng)“數(shù)據(jù)源”> "Travel" >“表”> "TRIP" 節(jié)點(diǎn),并將其放在 Data Table 上。確保整個(gè) Data Table 組件的輪
廓為藍(lán)色時(shí)放置節(jié)點(diǎn)。如果只有列或列標(biāo)題的輪廓為藍(lán)色,請(qǐng)將節(jié)點(diǎn)在組件內(nèi)四處移動(dòng),直到整個(gè)組件的
輪廓為藍(lán)色。
如果將節(jié)點(diǎn)放在列或列標(biāo)題上,會(huì)出現(xiàn)“選擇目標(biāo)”對(duì)話框,而且 tripRowSet 已添加到非可視組件托
盤中。確保選中了 "dataTable1" 單選按鈕,然后單擊“確定”關(guān)閉對(duì)話框。
3. 右鍵單擊 Data Table 組件,然后選擇“表布局”。
注如果沒(méi)有選定 Data Table 組件,或者選定了它的其中一個(gè)子組件(在本例中是列),則在右鍵單擊 Data
Table 時(shí),將出現(xiàn)另外的上下文菜單。在這種情況下,請(qǐng)選擇 "dataTable1" >“表布局”。您可以按 Esc
鍵選擇當(dāng)前所選組件的父組件。
出現(xiàn)“表布局”對(duì)話框。這兩個(gè)列表表明哪些列可用于顯示以及正在顯示哪些內(nèi)容。將 TRIP 表放在 Data
Table 組件上時(shí),將選擇所有可用的列進(jìn)行顯示。
4. 選擇“顯示”列表中的第一列 (TRIP.TRIPID),然后單擊 "<" 按鈕。
將從“顯示”列表中移除該列。
5. 移除 TRIP.PERSONID 和 TRIP.TRIPTYPEID 列。
仍然出現(xiàn)在“顯示”列表中的三列:
? TRIP.DEPDATE
? TRIP.DEPCITY
? TRIP.DESTCITY
使用數(shù)據(jù)綁定組件訪問(wèn)數(shù)據(jù)庫(kù) ?
Sun Java Studio Creator
6. 單擊“確定”。
現(xiàn)在,Data Table 組件中有三個(gè)顯示列。
修改 SQL 查詢
在此部分中,將修改 TRIP 行集對(duì)象中的 SQL 查詢,以便查詢返回 TRIPTYPE 表中的數(shù)據(jù)。您還將修改 Data
Table 組件以顯示新列。
1. 右鍵單擊非可視組件托盤中的 tripRowSet,然后選擇“編輯行集查詢”。
在編輯器窗格中將出現(xiàn)查詢編輯器。標(biāo)簽的名稱是 tripRowSet。
2. 右鍵單擊設(shè)計(jì)視圖(見圖 4),然后選擇“添加表”。
3. 選擇 TRAVEL.TRIPTYPE 表,然后單擊“確定”。
將出現(xiàn)另一個(gè)表格圖,在兩個(gè)表格圖之間有一個(gè)鏈接。
4. 在指示的表中取消選中以下復(fù)選框:
? TRIP 表中的 TRIPID
? 兩個(gè)表中的 TRIPTYPEID
會(huì)從結(jié)果集中刪除上述列。同時(shí)會(huì)修改源視圖中的 SQL 查詢以反映這些更改。
4 使用數(shù)據(jù)綁定組件訪問(wèn)數(shù)據(jù)庫(kù) ?
圖 2 顯示的列
圖 3 第 1 列處于選定狀態(tài)的 Data Table
Sun Java Studio Creator
5. 選擇 Page1.jsp 標(biāo)簽以返回到可視編輯器。
6. 右鍵單擊 Data Table,然后選擇“表布局”。
將出現(xiàn)“表布局”對(duì)話框。由于您已經(jīng)更改了行集的 SQL 查詢,因此有更多可以顯示的列。
7. 將 TRIPTYPE.DESCRIPTION 列添加到“顯示”列表中。
8. 單擊“確定”。
第四列將出現(xiàn)在 Data Table 組件中。
控制顯示的行
在上一部分中將 TRIP 表放在 Data Table 組件上時(shí),IDE 使用返回表中所有列的所有行的 SQL 查詢創(chuàng)建了一個(gè)
行集對(duì)象。如果此時(shí)部署應(yīng)用程序,則數(shù)據(jù)表將包含 TRIP 表中的所有行程信息。
假定您僅希望顯示其名字出現(xiàn)在 Dropdown List 組件中人員的行程信息。您必須通過(guò)編輯 TRIP 行集對(duì)象的缺省查
詢,在 Dropdown List 組件和 Data Table 組件之間創(chuàng)建主從關(guān)系 (Master-Detail)。
1. 雙擊 tripRowSet 對(duì)象打開查詢編輯器。
2. 在查詢編輯器的設(shè)計(jì)網(wǎng)格(電子表格)中,右鍵單擊設(shè)計(jì)網(wǎng)格 PERSONID 行中的“條件”單元格,然后
選擇“添加查詢條件”。
使用數(shù)據(jù)綁定組件訪問(wèn)數(shù)據(jù)庫(kù) ?
圖 4 查詢編輯器
設(shè)計(jì)視圖
設(shè)計(jì)網(wǎng)格
源代碼
Sun Java Studio Creator
3. 將“比較”下拉菜單設(shè)置為“=等于”,并選擇“參數(shù)”單選按鈕。
4. 單擊“確定”。
在 PERSONID 的“條件”列中您會(huì)看到 "=?",它在 SQL 查詢中添加了以下 WHERE 子句:
WHERE TRAVEL.TRIP.PERSONID = ?
5. 通過(guò)選擇 Page1.jsp 標(biāo)簽,返回到可視編輯器,然后雙擊 Dropdown List 組件。
Page1 類的源代碼在編輯器區(qū)域中打開,且光標(biāo)位于 dropdown1_processValueChange() 方法主體
內(nèi)。此事件處理程序方法存根 (Stub) 是在您首次雙擊 Dropdown List 組件時(shí)創(chuàng)建的。
6. 從“組件面板”>“代碼片段”>“演示”拖動(dòng) Travel dropdown 代碼片段,將其放在
dropdown1_processValueChange() 方法體中。
6 使用數(shù)據(jù)綁定組件訪問(wèn)數(shù)據(jù)庫(kù) ?
圖 5 “添加查詢條件”對(duì)話框
Sun Java Studio Creator
public void dropdown1_processValueChange(ValueChangeEvent vce) {
// User event code here...
try {
dataTable1Model.setObject(1, dropdown1.getValue());
dataTable1Model.execute();
} catch (Exception e) {
log("person change exception", e);
error(“Exception changing person id:”+e);
} // end try catch
}
這段代碼將下拉列表的值綁定到為 dataTable1Model 準(zhǔn)備的 SQL 語(yǔ)句中的參數(shù)上。
7. 在 Page1 類中找到 Page1() 構(gòu)造函數(shù)。
8. 從“組件面板”>“代碼片段”>“演示”拖動(dòng) Travel initialization 代碼片段,并將其放在 Page1() 構(gòu)造
函數(shù)實(shí)現(xiàn)的結(jié)尾處。
public Page1() {
// other lines of code omitted
catch ( Exception e) {
log("Page1 Initialization Failure", e);
throw new FacesException(e);
}
// Additional user provided initialization code
try {
personRowSet.execute();
personRowSet.next();
dataTable1Model.setObject(1, personRowSet.getObject("PERSONID"));
} catch (Exception ex) {
throw new FacesException(ex);
} // end try catch
}
這段代碼將把下拉列表中當(dāng)前選定 NAME 的 PERSONID 值綁定到為 dataTable1Model 準(zhǔn)備的 SQL 語(yǔ)句
中的參數(shù)上。
9. 通過(guò)選擇 Page1.jsp 標(biāo)簽返回到可視編輯器。
10.右鍵單擊 Dropdown List 組件,然后選擇“更改時(shí)自動(dòng)提交”。
在屬性表單中,以下代碼將出現(xiàn)在 "Javascript" > "onchange" 屬性中:
this.form.submit();
現(xiàn)在,當(dāng)用戶在運(yùn)行的 Web 應(yīng)用程序中更改下拉列表選擇時(shí),將重新提交和更新頁(yè)面。
11.單擊工具欄上的“全部保存”。
12.單擊工具欄上的“運(yùn)行項(xiàng)目”。
將重新生成和部署 Web 應(yīng)用程序。在下拉列表中選擇另一個(gè)名字,您會(huì)注意到更新了數(shù)據(jù)表。
使用數(shù)據(jù)綁定組件訪問(wèn)數(shù)據(jù)庫(kù) ? 2004 6 年月 7
Sun Java Studio Creator
請(qǐng)參見
? Java Studio Creator 入門
本文下載地址:
http://mail.yl.gov.cn/ftp/yy/jscb2005.rar
posted on 2005-09-25 22:41 風(fēng) 閱讀(1864) 評(píng)論(0) 編輯 收藏 所屬分類: JSF