程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> NetBeans Visual Web JSF應用程序開發入門

NetBeans Visual Web JSF應用程序開發入門

編輯:關於JAVA

您不必以任何特殊的順序閱讀本教程。您可以快速浏覽,然後在時間允許的時候返回各個章節。如果您更喜歡逐步漸進的教程,您也許首先要嘗試 JSF Web 應用程序開發。

本教程可用以下技術和資源運作

JavaServer Faces 組件/

Java EE 平台

1.2 和 Java EE 5*

1.1 和 J2EE 1.4

Travel 數據庫 某些小節必需

* 要發揮 NetBeans IDE 6.0 的 Java EE 5 性能的優勢,請使用與 Java EE 5 規范完全兼容的應用服務器,例如 Sun Java System Application Server 9/GlassFish。

本教程是為 GlassFish v2 應用程序服務器而定制的。如果您正在使用其他服務器,請參考發行說明和 FAQ 以了解已知的問題和變通的方法。

開始一個項目

項目相當於您的 web 應用程序的工作環境。當您在 NetBeans IDE 中新建一個 Visual Web JSF 應用程序項目並且您已經指定了 GlassFish V2 或者更新的版本,IDE 會創建一個使用 JavaServer Faces 1.2 組件的基於 Java EE 5 的 web 應用程序。默認情況下,這個 web 應用程序被創建在一個符合用於 web 應用程序的 Java BluePrints 項目規范的目錄結構中。

嘗試

使用以下列表中適當的步驟啟動 IDE:

Windows,Solaris 和 Linux。 雙擊 NetBeans 桌面圖標。

Mac。 在 MacOS 上,6.0 可執行程序被安裝在 /Applications/NetBeans/ 目錄下。雙擊該文件夾中的 NetBeans 圖標。

新建一個 Visual Web JSF 應用程序項目:

從主菜單中選擇“文件”>“新建項目”。

在“新建項目”向導中,選擇“Web”類別和“Web 應用程序”項目類型,並點擊“下一步”。

把項目命名為 GettingStarted。注意默認的項目位置。假如您喜歡,可以點擊“浏覽”並選擇一個不同的位置。

選擇一個服務器和 Java EE 版本。

例如,默認的服務器是 GlassFish V2,Java EE 5 是默認的 Java EE 版本。

點擊“下一步”。

選擇 Visual Web JavaServer Faces 框架並點擊“完成”,在默認位置或者 c 步驟中選擇的位置新建一個項目。

IDE 在選擇的(或默認的)項目文件夾中創建項目目錄,並命名為與項目名稱相同的名字。

探索“項目”窗口。如下圖所示,“項目”窗口按照類別將內容分組。展開各個節點來看看每個分類中都有哪些類型。

圖 1:“項目”窗口

在“Web 頁”節點下是“Page1.jsp”節點。IDE 默認創建這個頁面並將它設為起始頁面。節點旁的箭頭標記 標志了此頁面是起始頁面。如果您想使用不同的頁面作為起始頁面,右鍵點擊那個頁面的節點並在彈出菜單中選擇“設置為起始頁”。

點擊“文件”標簽,或者從主菜單中選擇“窗口”>“文件”,“文件”窗口將顯示在前端。此窗口按照文件的物理存儲組織它們。展開節點來看看目錄結構。注意顯示在“ApplicationBean1.java”節點旁邊和它下面其它幾個節點例如“Page1.java”節點旁邊的 標記。此標記表示該文件需要被編譯。當您生成項目時 IDE 會自動編譯這些文件。

圖 2:文件窗口

在圖 2 中,注意 GettingStarted > src > java > gettingstarted > Page1.java 節點。這個 Java 類是 Page1.jsp 文件的輔助 bean。只要您向項目添加一個頁面,IDE會同時為這個頁面創建一個 .jsp 文件和一個 .java 文件。您將在下一節學習到更多關於 .jsp 和 .java 文件的內容。

了解更多

從主菜單中選擇“幫助”>“幫助內容”來打開幫助文件。在左邊的“目錄”窗格中,選擇“Web 應用程序”>“關於 Web 應用程序”>“使用 Web 應用程序”。

創建 Web 頁

使用 Visual Web JSF 應用程序,您可以用 JavaServer Pages(JSP)技術和 page bean(也稱為輔助 bean)替代 HTML 頁面。JSP 頁面是一個模板,它從服務器生成 HTML 響應被顯示在浏覽器(客戶端)上。Page bean 包含了當服務器生成 HTML 響應時和當用戶提交頁面時執行的邏輯。

當您在 Visual Web JSF 應用程序中添加一個 web 頁時,IDE同時為您創建了一個 JSP 文件和一個 Java 源文件。您主要使用可視設計器和“屬性”窗口來開發 web 頁。IDE 修改 JSP 代碼和 Java 代碼來實現您的設計。您的大部分工作可以在可視設計器和“屬性”窗口中完成。

注意事項:IDE 生成的 JSP 頁面是 JSP 文檔。JSP 文檔是一個 XML 文檔,因此,必須是良好格式化的。雖然大部分 JSP 元素遵守 XML 語法,但還是有一些元素是不屬於 XML 規范的,例如注釋,聲明,指令,表達式,和腳本。了解 JSP 文檔語法,請參見 JavaServer Pages 語法參考。

嘗試

在“項目”窗口中,右鍵單擊“Web 頁”節點,選擇“新建”>“Visual Web JSF 頁”,如下圖所示。

圖 3:右鍵點擊“Web 頁”節點

接受默認的 Page2 作為文件名,點擊“完成”按鈕。IDE 將在編輯區域的可視設計器中打開 Page2,如下圖所示。

圖 4:可視設計器

點擊編輯工具欄的“Java”按鈕查看 page bean 的源代碼,如下圖所示。當編輯區域顯示 Java 源代碼時,“導航”窗口列出了所有的成員字段和方法。注意,頁面源代碼中有用於訪問 Application Bean,Session Bean,和 Request Bean 的方法。請參見本教程的存儲和處理數據小節,查看這三種 bean 類型的說明。

圖 5:Page Bean 的 Java 源代碼

源代碼中還有在頁面被請求和頁面被繪制完成之間的某些生命周期事件中被調用的方法。

提示:在“導航”窗口中雙擊一個成員,可以打開源代碼編輯器並將光標定位到該成員被聲明的地方。您還可以在“導航”窗口中點擊任何一個地方,並輸入一個成員名稱的頭幾個字母,可以打開“快速搜索”對話框。繼續輸入直到 IDE 高亮顯示出列表中您想要找到的項,如下圖所示。然後您可以輸入 Enter 鍵來打開源代碼編輯器並將光標定位在匹配的成員聲明處。

圖 6:“導航”窗口中的快速搜索

點擊編輯工具欄的“JSP”按鈕查看頁面的 JSP 代碼,如下圖所示。注意 JSP 頁面如何使用 JSP 文檔語法。

圖 7:JSP 視圖

點擊編輯工具欄的“設計”按鈕切換到可視設計器並在“導航”窗口中顯示頁面的表示。如果您打開“Page2”節點下的節點,您可以看到如下圖所示的節點。注意 JSP 文件中的標簽如何在“導航”窗口中被表示。

圖 8:“導航”窗口

了解更多

從主菜單中選擇“幫助”>“幫助內容”來打開幫助文件。在左邊的“目錄”窗格中,選擇“Web 應用程序”>“創建 Web 應用程序”>“關於創建 Web 應用程序”。

JavaServer Pages 技術 - 文檔

向 Web 頁添加組件

您可以通過從“組件面板”窗口將組件拖動到可視設計器中的 web 頁面上來設計 web 頁面。下圖顯示了添加了“按鈕”,“文本字段”,“消息”,“下拉列表”,和“單選按鈕組”組件的 Page2 頁面。所有這些組件都是“基本”類別中可用的組件。這些組件是通過修改它們的屬性被定制過的。您將在本節學習到關於組件的屬性。

圖 9:可視設計器中的組件

注意事項:“組件面板”中可用的組件是依照設計時 API 增強的 JavaServer Faces(JSF)組件,以便它們的屬性可以在可視設計器和“屬性”窗口中使用。您可以在 web 應用程序中使用您自己使用 IDE 生成的其它組件,但是您不能在這些組件上使用 IDE 交互式的設計時特性,除非它們是依照設計時 API 的需求定制的。如果 Java EE 版本被設置為 Java EE 5,“組件面板”將提供 JSF 1.2 的組件。如果您將 Java EE 的版本設置為 1.3 或 1.4,“組件面板”則提供 JSF 1.1 的組件。

您用到的大部分組件在“組件面板”的“基本”,“布局”,和“復合”類別中。以下表格按照功能顯示了一些常用的組件。

表 1:輸入組件

組件 描述 組件面板類別 文本字段 一個單行文本輸入字段。 基本 文本區域 一個多行文本輸入字段。 基本 下拉列表 一個下拉菜單,也作為一個組合框被引用。 基本 列表框 一個根據配置,用戶可以選擇一個或多個選項的列表。 基本 復選框 一個用戶可以選擇(選中)或清除的單一符號框。 基本 單選按鈕 一個用戶可以選擇(選中)的單個單選按鈕。 基本 口令字段 一個將輸入的字符回顯為替換的字符以屏蔽輸入內容的輸入字段。 基本 文件上載 一個用於指定一個文件以便上載的組件,它由一個文本輸入字段和一個用於顯示文件選擇器的“浏覽”按鈕組成。當用戶提交這個頁面時應用程序將上載指定的文件。 基本 添加刪除 兩個列表(一個用於顯示可用選項,一個用於顯示選定選項),它有兩個按鈕,用於在兩個列表間移動選項和排序選定選項。 復合 日歷 一個輸入字段和可供選擇日期的日歷。 基本

表 2:顯示組件

組件 描述 組件面板類別 標簽 可以與一個輸入字段關聯的文本域,可以為它指定一個弱的,適中的或者加強的字體樣式。 基本 靜態文本 用於顯示文本的域。 基本 圖像 內聯圖像。 基本 消息 鏈接到一個特定的組件以顯示此組件的驗證錯誤或其它消息的文本域。 基本 消息組 顯示運行時的錯誤消息,程序生成的錯誤消息,和可選地,頁面上的組件的驗證錯誤和其它消息的文本域。 基本 頁面警報 類似於“警報”組件(下一行),但它是在一個單獨的頁面中顯示圖標和信息的。 布局 警報 顯示一個圖標和信息文本,例如警告,錯誤,或者一些事件的成功完成。 復合 隱藏字段 一個可用於保留數據或向服務器傳送信息的隱藏字段。 基本 頁面分隔符 一個可調整大小以適合任何用戶選擇的頁面寬度的水平線。 布局 表單 用於添加一個表單。 布局 內聯幫助 在您的頁面上提供內聯的簡短的幫助信息。 復合

表 3:分組組件

組件 描述 組件面板類別 復選框組 在網格布局中顯示兩個或更多的復選框。 基本 單選按鈕組 在一個網格布局中顯示兩個或多個單選按鈕,並確保每次只能有一個按鈕被選擇。 基本 表,表行組,和表列 顯示來自復合數據類型的數據,例如一個數據庫表或者一個數組。 基本 網格面板 在一個多行多列的布局中組織組件。 布局 組面板 使用流式布局模式來組織一組組件。 布局 布局面板 用於使用流式布局模式或網格布局模式來組織一組組件。 布局 標簽集和標簽 顯示一些頁面上的不同布局。也可以當作一個導航工具來使用。 布局 頁面片段框 組織兩個或多個頁面上您想要一致顯示的組件。 布局 屬性表單,屬性表單部分,和屬性 快速地在一個單獨的列中勾畫出帶有標簽的組件,並將組件分隔成幾個區域。 布局 Breadcrumbs 顯示一組用右尖括號(>)分隔的鏈接。 復合

表 4:動作組件

組件 描述 組件面板類別 按鈕 用於提交關聯表單的按鈕。 基本 超級鏈接 用於提交一個 URL 或者提交一個表單的文本字段。 基本 圖像超級鏈接 用於提交一個 URL 或者提交一個表單的圖像。 基本 標簽 一個“標簽集”組件或一個“標簽”的子組件。可選地,標簽可以用於提交一個 URL 或者一個表單。 布局 常見任務 一個連接到用戶可以執行任務的 Visual web JSF 頁面的鏈接。 復合

您可以使用“屬性”窗口中的組件屬性表來改變組件的外觀和行為,將數據綁定到組件,將事件處理器關聯到組件。

下圖顯示了一個列表框組件的屬性。

圖 10:“屬性”窗口中的列表框屬性

嘗試

打開您根據“創建 Web 頁”小節的嘗試建議所創建的 Page2 頁面,或者根據需要創建它。

從“組件面板”窗口中的“基本”類別和“布局”類別中拖放各種組件到頁面上,並設置它們的屬性。例如,嘗試以下步驟:

拖放一個“按鈕”組件到頁面上,輸入 Click Me! 並按下 Enter 鍵。在“屬性”窗口中,注意 text 屬性的值變成了 Click Me!。在“屬性”窗口中,選中 primary 屬性的復選框並注意按鈕外觀的變化。

重要注意事項:IE7 中有個已知的問題會影響 JSF 1.2 組件的寬度。工作區在一個布局組件(網格面板,組面板,布局面板)中放置“按鈕”組件。調整布局組件的大小會自動地調整“按鈕”組件的大小。

拖放一個“文本字段”組件到頁面上。然後拖放一個“標簽”組件到頁面上,輸入 Name: 並按 Enter 鍵。按住 Ctrl-Shift 鍵,在“標簽”組件中點擊並拖放到“文本字段”組件,然後放開鼠標鍵。選中“標簽”組件並請注意它的 for 屬性現在被設置為“文本字段”的 id。設置 labelLevel 為 “強(1)”。

拖放一個“消息”組件到“文本字段”的右邊。按住 Control-Shift 鍵,從“消息”組件拖動到“文本字段”組件。如同“標簽”組件,請注意“消息”組件的 for 屬性現在被設置為“文本字段”組件的 id。

拖放一個“下拉列表”組件到頁面上並設置它的 label 屬性為 Color。右鍵點擊這個“下拉列表”組件並選擇“配置缺省選項...”打開“選項定制器”窗口。

按下 Tab 鍵進入“顯示”列中的“項 1”的編輯模式,然後輸入 Blue。按下 Tab 鍵兩次並將“項 2”的值改為 White。按下 Tab 鍵兩次並將“項 3”的值改為 Green。點擊“確定”按鈕並注意您的改變是如何影響了可視設計器中的組件。

使用類似的步驟創建一個“單選按鈕組”組件,選擇項有 Blue,White,和 Red,但先別關閉“選項定制器”窗口。

在“選項定制器”窗口中,選中“選擇項”復選框,然後選中“選定”列中的一個單選按鈕將它設置為默認選擇項。點擊“確定”按鈕應用所作的改變並關閉“選項定制器”窗口。在“屬性”窗口中,設置 columns 屬性為 3,將單選按鈕從垂直排列改變為水平排列。

右鍵點擊頁面的背景,頁面中任何空白的區域,然後選擇“在浏覽器中預覽...”按鈕,看看您的浏覽器是如何呈現這些組件的。

了解更多

開發 Web 應用程序

獲得幫助

IDE 提供了一個幫助窗口,它包含了關於 IDE 的各種幫助主題。同時,當您在一個窗口,對話框,或者組件面板中按下 F1 鍵時,幫助窗口便會出現並顯示關於當前項的信息。訪問 Visual Web JSF 包的幫助主題,包含了關於組件的幫助,您可以從主菜單中選擇“幫助”>“幫助內容”並滾動到 Web 應用程序。

嘗試

點擊單選按鈕組的屬性窗口中的任意地方。按下 F1 鍵,查看關於單選按鈕組組件屬性的主題。

選擇“組件面板”的“基本”類別中的“文本字段”組件。按下 F1 鍵,查看關於文本字段組件的幫助主題。

生成和測試 Web 應用程序

當您准備測試一個項目時,按下 F6 鍵或者從主菜單中選擇“運行”>“運行主項目”。IDE 將執行以下動作:

保存所有需要保存的文件。

編譯所有需要被編譯的文件。

如果出現任何錯誤,IDE 將相關的錯誤消息顯示在“輸出”窗口(如下圖所示)中,並停止 build-and-run 過程。點擊錯誤消息的鏈接,將轉到發生編譯錯誤的源代碼處。

啟動應用程序服務器,如果尚未啟動。

將應用程序布署到應用程序服務器。

如果出現任何錯誤,IDE 將相關的錯誤消息顯示在“輸出”窗口中,並停止 build-and-run 過程。

打開浏覽器並將已布署的應用程序的 URL 發送到浏覽器,顯示起始頁面。

注意事項:如果您不是在起始頁面上添加組件,在本教程此處您將無法在浏覽器中看到它們。了解在您的應用程序中設置從起始頁面到其它頁面的導航的方法,參見接下來的“嘗試”小節。

圖 11:“輸出”窗口

如果您作了許多改動或刪除了一些項,或者您看到一些意外的行為,您可以從主菜單中選擇“生成”>“清理並生成主項目”。IDE 將清除項目的 build 文件夾和 dist 文件夾,取消布署這個 web 應用程序,然後重新生成並布署。

嘗試

如果您的項目只有少於兩個的頁面,右鍵點擊“項目”窗口中的“Web 頁”節點,選擇“新建”>“Visual Web JSF 頁”來新建一個頁面。

打開可視設計器中的起始頁(有箭頭標記 的頁面)。

拖放一個“超級鏈接”組件到起始頁上,輸入 Next Page,並按下 Enter 鍵。

在“超級鏈接”組件的“屬性”窗口中,點擊 url 屬性的省略符按鈕 ,選擇項目中的一個不同的頁面,並點擊“確定”按鈕。請注意 IDE 如何設置 url 屬性為 /faces/page-name.jsp。

按下 F6 按鈕,生成並運行這個 web 應用程序。

在生成過程中,請注意“輸出”窗口中顯示的消息。同時請注意顯示在服務器的標簽頁上的服務器日志的輸出。

請注意 IDE 發送給浏覽器的 URL。

當起始頁在浏覽器中顯示的時候,點擊 Next Page 鏈接。

返回 IDE,然後在“服務”窗口中展開“服務器”節點和相應服務器的節點,然後展開“應用程序”>“Web 應用程序”並注意有一個對應您的項目的節點,如下圖所示。

圖 12:已布署的 Web 應用程序

了解更多

從主菜單中選擇“幫助”>“幫助內容”打開幫助窗口。然後在“目錄”窗格中,選擇“Web 應用程序”>“創建 Web 應用程序”>“關於創建 Web 應用程序”。

連接 Web 頁並處理用戶 Action

當用戶輸入一個 URL,點擊一個超級鏈接,或者點擊一個按鈕時,浏覽器會向服務器發送一個請求。服務器將請求映射到一個 JSP 頁面並使用那個 JSP 頁面和相關聯的 page bean 來展現一個響應。

您可以用一種或兩種方法指定頁面的導航:

添加一個鏈接組件到頁面上,例如超級鏈接組件,或者添加一個“樹節點”組件到一個“樹”組件,或者添加一個“標簽”組件到“標簽集”組件。然後將組件的url 屬性設置為 /faces/page-name.jsp。當您使用 url 作為導航時,表單數據就不會提交。Web 應用程序簡單地導航向目標地址。

使用“頁面流”編輯器映射頁面的 action,使用可視設計器和 Java 源代碼編輯器來創建 action 的處理方法。當您將 action 的處理方法用在頁面導航時,表單數據被提交並在 web 應用程序導航向指定的目標地址前被處理。

訪問“頁面流”編輯器,在可視設計器中右鍵點擊頁面的背景並選擇“頁面導航”。

“頁面流”編輯器顯示項目中每個頁面的頁面圖標 。當您點擊“頁面流”編輯器中頁面圖標的 + 元素時,圖標將展開並顯示所有的 action 組件,例如“按鈕”,“超級鏈接”,或者“標簽”這樣有 action 屬性的組件。每個組件的旁邊是一個連接器端口。下圖中超級鏈接的連接器端口看起來像一個鏈條,按鈕的連接器看起來像一個箭頭。您可以通過從連接器端口拖放一個頁面的圖標來建立 action 請求和用於呈現請求的響應頁面之間的映射。當您釋放鼠標時,IDE 為連接添加一個可視化的表示,如下圖中的標簽為“nextPage”的連接線所示。

圖 13:頁面流編輯器

注意事項: 當頁面被提交後,web 應用程序在執行 action 方法前先執行數據的轉換和驗證。如果轉換或驗證失敗,action 的方法不會被調用。您應該在開發過程中在頁面上放置一個“消息組”組件,這樣您可以捕獲任何意外的轉換或驗證失敗以防止 action 方法被調用。

嘗試

新建名為 LinkPage1 和 LinkPage2 的兩個頁面。右鍵點擊 LinkPage1 並選擇“設置為起始頁”將它設置為起始頁面。

拖放一個“超級鏈接”組件到 LinkPage1 頁面上,輸入 Next Page,並按下 Enter 鍵。

拖放一個“按鈕”組件到 LinkPage2 頁面上,輸入 Go,並按下 Enter 鍵。

雙擊“按鈕”組件編輯按鈕的 action 方法。

請注意 action 方法返回為 null。如果 action 方法的返回為 null,應用程序將重新顯示此頁面。

點擊工具欄的“設計”按鈕切換到可視設計器。

在可視設計器中,右鍵點擊 LinkPage2 頁面的背景並選擇“頁面導航”。

在“頁面流”編輯器中 LinkPage1.jsp 的圖標,展開頁面的圖標,然後從 hyperlink1 組件連接器端口拖放一個連接到 LinkPage2.jsp 的圖標上。

雙擊 case1 連接線標簽轉換到編輯模式,輸入 nextPage 並按下 Enter 鍵。

使用類似的步驟創建一個從 LinkPage2.jsp 的按鈕返回到 LinkPage1.jsp 的連接線,並將連接線命名為 go。

點擊編輯工具欄中的“XML”按鈕查看實際的部署到服務器的映射 XML,然後關閉“頁面流”編輯器並在提示是否保存修改時點擊“保存”。

在 LinkPage2 頁面中,雙擊“按鈕”組件編輯它的 action 方法。

請注意現在 action 方法返回一個“go”字符串。您在“頁面流”編輯器中創建的映射通知服務器只要 LinkPage2.jsp 頁面返回“go”便顯示 LinkPage1.jsp。

按下 F6 鍵運行應用程序並試驗新的頁面導航。

了解更多

在 Web 應用程序中導航頁面

打開“導航編輯器”並按 F1 鍵,或者從主菜單中選擇“幫助”>“幫助內容”打開幫助窗口,然後在“目錄”窗格中,選擇“Web 應用程序” > “創建和編輯 Web 組件”>“頁面”>“關於頁面流編輯器”。

編輯 Java 代碼

IDE 的 Java 編輯器包含了用以幫助程序開發過程的所有特性,遠遠多於本篇介紹性教程所能討論的范圍。如果您在 Java 編輯器中點擊並按下 F1 鍵,您可以獲得編輯器大部分特性的幫助。

下列說明包含了編輯器中更為有用的特性中的幾個。

代碼完成。代碼完成允許您輸入幾個字母就可以從一個可選的類,方法,變量,等等的列表中選擇以自動完成表達式。按下 Ctrl-Space 顯示代碼完成框。代碼完成框同時也會在您停止輸入了跟隨在一個包名,變量,或方法調用的句點之後顯示,如下圖所示。

圖 14:代碼完成框

Javadoc。代碼完成特性同時也顯示了任何相關的 Javadoc。另外,您可以右鍵點擊一個類型,字段,或者方法,並選擇“顯示 Javadoc”來查看它的 Javadoc,,假如它的 Javadoc 可用。選擇“幫助”>“Javadoc 引用”,查看可用的 Javadoc。您還可以按下 Shift-F1 鍵來顯示“Javadoc 索引搜索”工具。

修復導入。 按下 Ctrl-Shift-I 組合鍵自動添加必需的 import 語句。

錯誤檢測。顯示在所有語句左邊邊框的紅色的錯誤方框表示它將不能編譯。鼠標停留在這個方框的上方時可以查看錯誤描述,如下圖所示。IDE 同時在右邊邊框顯示一個錯誤條。這個錯誤條表示了整個文件,而不僅僅是可見的代碼行。錯誤條中紅色的行標記了代碼中的錯誤。雙擊一個紅色的行,跳轉到錯誤的語句。當您編譯文件的時候,所有的錯誤將顯示在“輸入”窗口中。點擊一個錯誤信息,將在 Java 編輯器中顯示錯誤的代碼行。

圖 15:錯誤檢測

Java 編輯器鍵盤快捷鍵。您可以通過簡單的組合鍵來調用許多常見的編輯任務,如下列范例所示。從主菜單中選擇“幫助”>“幫助內容”,打開幫助窗口,然後在“目錄”窗格中選擇“IDE 基礎知識”>“快捷鍵”>“常規編輯器快捷鍵”,學習更多關於快捷鍵的內容。

操作 快捷鍵 格式化代碼 Alt-Shift-F 刪除當前行 Ctrl-E 將插入點移至突出顯示的匹配方括號 Ctrl-[ 選擇一對方括號之間的代碼塊 Ctrl-Shift-[

代碼模板。代碼模板是簡短的字母組合,當您輸入這些字母組合後按下空格鍵,它可以展開成完整的單詞或短語,如下列范例所示。在 Microsoft Windows 系統上選擇“工具”>“選項”,或者在 Macintosh 系統上選擇“NetBeans”>“參數”,然後選擇“基本選項”>“編輯器”>“代碼模板”,並點擊省略符 按鈕打開代碼模板屬性。一些范例:

代碼模板 縮寫 for (Iterator it = collection.iterator(); it.hasNext();)

{Object elem = (Object) it.next();}

forc for (int i = 0; i < arr.length; i++) {} fori try {|} catch (Exception ex)

{log("Error Description", ex); } finally {}

trycatch

代碼片斷。當您打開 Java 編輯器,“組件面板”窗口提供了許多有用的代碼片斷,您可以將它們拖放到您的源文件中。代碼片斷不會為受管 bean 顯示,例如 application bean 或 request bean。

注意事項:如果您在工具欄中點擊“JSP”打開 JSP 編輯器,您可以在“組件面板”窗口中看到您可以在 JSP 文件中使用的“JavaScript”工具提示。

快速搜索。當您在“導航”窗口中點擊然後開始輸入一個方法或者字段的名稱,您可以看到一個“快速搜索”對話框,IDE 將高亮顯示列表中第一個匹配的項。按下 Enter 鍵,在 Java 編輯器中定位到源代碼的匹配項聲明的地方。

嘗試

注意事項:接下來練習您在 destroy 方法中輸入代碼。您輸入的這些代碼旨在舉例說明編輯器的特性。您不能在正常的代碼錄入時像在這個方法中這樣。當您完成這些步驟,您應該刪除這些代碼。

新建一個頁面或者打開一個已存在的頁面。拖放一個“超級鏈接”組件到這個頁面上。在編輯工具欄中點擊“Java”,顯示 Java 源代碼。

右鍵點擊左邊欄並選擇“顯示行號”。在 Java 源代碼中按下 Ctrl-G 組合鍵,在“轉至行”對話框中輸入 100,並按下 Enter 鍵。

點擊“導航”窗口的標簽,然後雙擊 destroy() 定位到源代碼中的這個方法處。在 destroy() 方法中,輸入 getSessionBean1(). 然後暫停輸入。代碼完成框將彈出。輸入 d 將看到列表縮小到 destroy()方法。按下 Enter 鍵選擇那個選項。按下 Ctrl-Space。現在輸入 this.getH,然後暫停以彈出代碼完成框,輸入 set。在代碼完成框列表縮小到所有以 set 開始的方法,輸入 te 縮小列表到 setText(Object text) 然後按下 Enter 鍵。IDE 將在句點後插入 setText() 並將光標定位到參數列表。輸入 "hello",按下 End 鍵,然後輸入 ;。

開始一個新行,輸入 serr 並按下 Tab 鍵將縮寫展開為 System.err.println("")。刪除行尾的分號。按 F9 鍵編譯文件。“輸出”窗口顯示了幾個錯誤的鏈接。點擊窗口中顯示的第一個鏈接。IDE 顯示了發生錯誤的語句。重新補上您剛才刪除的分號。

開始一個新行,輸入 getSes 並按下 Ctrl-K 組合鍵。IDE 從當前行之前的源代碼中找到第一個匹配的單詞並替換剛輸入的字符。

清除代碼,將光標放置在 destroy 方法體的第一行並按下 Ctrl-E 組合鍵刪除這一行。使用 Ctrl-E 組合鍵刪除方法體中其余的行。

將鼠標移動到編輯工具欄上,嘗試每個功能。

右鍵點擊 Java 源代碼並在彈出菜單中選擇“代碼折疊”。嘗試子菜單中的各個不同的動作。

嘗試從“組件面板”中拖放代碼片斷以查看它們是怎麼提供的。

了解更多

從主菜單中選擇“幫助”>“幫助內容”打開幫助窗口。然後在“目錄”窗格中,選擇“Java 應用程序”>“編輯 Java 源文件”>“關於編輯 Java 源文件”。

從主菜單中選擇“幫助”>“幫助內容”打開幫助窗口。然後在“目錄”窗格中,選擇“IDE 基礎知識”>“快捷鍵”>“常規編輯器快捷鍵”。

Java 編輯器用戶指南 FAQ

處理用戶輸入

IDE 提供了驗證器和轉換器對象以幫助輸入的檢查和格式化。這些對象可以在“組件面板”中它們各自的類別中找到。

您可以通過拖放驗證器到一個輸入組件上,為一個輸入組件綁定一個驗證器,例如“文本字段”組件。例如,當您在可視設計器中為一個頁面添加了一個“文本字段”組件後,您可以從“驗證器”類別中拖放一個“長度驗證器”到這個“文本字段”上。

可選地,您可以拖放驗證器到頁面上,並將輸入組件的 validator 屬性設置為那個驗證器對象。例如,您可以拖放一個“長度驗證器”到一個頁面的空白區域,此時 longRangeValidator1 會被添加到“導航”窗口。然後您可以在可視設計器中選擇一個輸入組件,例如“文本字段”組件,並在它的 validatorExpression 屬性的下拉列表中選擇 longRangeValidator1。您可以在不止一個組件上使用相同的驗證器。

轉換器的機制也是類似的。您同樣可以將轉換器關聯到輸出組件上,例如“靜態文本”組件。請注意,當您綁定一個組件到一個數據提供器字段時,轉換器會被自動地設置。您可以在連接到數據庫一節中了解到更多關於綁定到數據提供器的內容。

您可以使用驗證器的“屬性”窗口來設置驗證規則,例如最小和最大值或者最小和最大長度。類似地,您可以使用轉換器的“屬性”窗口來設置轉換規則,例如值匹配模式或者被調用用於執行轉換的方法。“數值轉換器”有一個專用的向導,當您第一次拖放“數值轉換器”到頁面上或者到一個可視組件上的時候它將彈出。

“組件面板”中的“基本”類別提供了“消息”組件和“消息組”組件,它們能夠自動地顯示轉換錯誤,驗證錯誤,和必需字段的消息。“消息組”組件顯示全局錯誤消息,運行時錯誤,以及可選地,所有組件的錯誤消息。“消息”組件僅顯示與之綁定的組件的消息。您可以通過設置“消息”組件的 for 屬性或者通過在組件上按住 Ctrl-Shift 組合鍵並拖放鼠標到您想要綁定到“消息”組件的組件上,來綁定一個“消息”組件到另一個組件上。

您可以使用任何 Page Bean裡的 error,warn,fatal,和 info 方法,通過編程的方法將定制的錯誤消息發送到“消息組”組件上。選擇“幫助”>“Javadoc 索引搜索”,在下拉列表的文本字段中輸入 FacesBean,點擊“查找”,您可以了解更多關於這些方法的內容。

嘗試

新建一個頁面,拖放一個按鈕到這個頁面上。將按鈕的文本設置為 Go。

拖放一個“文本字段”組件到這個頁面上。在“文本字段”的“屬性”窗口中,選中 required 屬性的復選框。

拖放一個“標簽”組件到“文本字段”組件之上,輸入 Price: 並按下 Enter 鍵。

在“標簽”組件的“屬性”窗口中,在 for 屬性的下拉列表中選擇 textField1 。請注意可視設計器中的標簽是如何顯示一個星號以表明它所關聯的“文本字段”組件是必需輸入的。

在“組件面板”中,展開“驗證器”類別。拖放一個“雙精度范圍驗證器”到“文本字段”組件上。在“導航”窗口中,選擇新建的 doubleRangeValidator1 節點。在驗證器的“屬性”窗口中,設置 maximum 為 10.0,設置 minimum 為 1.0,如下圖所示。

圖 16:“雙精度范圍驗證器”屬性

在“組件面板”中,展開“轉換器”類別。拖放一個“數值轉換器”到“文本字段”組件上。此時將彈出一個“數字格式”對話框,如下圖所示。在“類型”下拉列表中選擇“貨幣”,在“語言環境”下拉列表中選擇“英文(美國)”。

圖 17:數字格式

添加一個“消息”組件到頁面上。在組件上按下 Ctrl-Shift 組合鍵並拖放到“文本字段”組件上。

請注意,IDE 將“消息”組件的 for 屬性設置為“文本字段”組件的 id。

添加一個“消息組”組件到頁面上。

將此頁面設置為起始頁並運行此應用程序。嘗試在沒有價格輸入,輸入 1.5,輸入一個非數字的值,和輸入大於 $10.00 的價格的情況下點擊按鈕。最後,在文本字段中輸入 $1.50 並按下按鈕。

請注意應用程序是如何拒絕所有不符合數字格式的值和沒有落在指定的范圍之內的值。請注意顯示在“消息”組件和“消息組”組件中不同的消息。

嘗試選中“消息組”組件的 showGlobalOnly 復選框。

了解更多

在 Visual Web JSF 應用程序中轉換和驗證數據

存儲和處理數據

您可以使用 Application Bean,Session Bean,和 Request Bean來存儲另一個頁面用到的信息。

使用 Application Bean 所有用戶會話中共享信息,例如一個“下拉”組件的靜態選項列表。

使用 Session Bean 存儲在用戶會話中另一個頁面使用到的信息,例如用戶的登錄名。

如果您需要用到僅被下一個頁面使用的信息,可以使用 Request Bean。

您存儲在 Request Bean 中的任何值將在請求結束時消失。一個請求是從客戶端到服務器加上相應響應的一個 HTTP 請求的獨立的傳輸,響應可以是另一個頁面。在大多數情況下,請求開始於一個按鈕或一個鏈接的點擊,結束於一個將被顯示的 HTML 頁面的響應。

注意事項: Request Bean 僅在開始請求的頁面將值存儲在 Request Bean 的屬性中時才獲得實例,例如以下描述到的,當一個輸入組件綁定到一個 Request Bean 的屬性時。

警告:如果在一個導航規則的 <navigation-case> 元素中包含 <redirect> 元素,您將不能使用 Request Bean。(您可以點擊“頁面流”編輯器中的“XML”按鈕來查看這些規則。)當頁面被提交後,<redirect> 元素重定向頁面,並在後面的頁面能夠使用存儲在 Request Bean 中的任何值之前結束這個請求。

添加一個屬性到 Session Bean 中:

在“導航”窗口中雙擊 SessionBean1 節點。

在 Java 編輯器中打開 SessionBean1.java。

添加 answer 屬性到構造器 public class SessionBean1 extends AbstractSessionBean 中。

如果需要,修復導入。

右鍵點擊編輯器並選擇“重構”>“封裝字段”。在結果對話框中,如果屬性是只讀的,創建 getter 方法,如果屬性是讀/寫的,創建 getter 和 setter 方法。

在“導航”窗口中,屬性顯示為 SessionBean1 下的一個子節點,但通常不是立刻。

使用類似的方法添加一個屬性到 Request Bean 或者 Application Bean。了解更多信息,請參見在 NetBeans IDE 6.0 中如何添加屬性到受管 bean 裡這個 FAQ。

注意事項: 您同樣可以添加屬性到一個 page bean 裡(IDE 為每個頁面創建的輔助 bean)。要添加一個屬性到一個 page bean,打開頁面的 java 代碼並在構造器 public class Page1 extends AbstractPageBean 中添加屬性的聲明,並如以上方法那樣封裝字段。Page bean 屬性的值只維持和 page bean 實例化的時間一樣。例如,當用戶點擊一個“按鈕”組件跳轉到這個頁面時(action 方法返回 null),page bean 的一個新的實例被創建,並且 page bean 的屬性值被重新初始化。如果您想傳遞一個值到這個提交,可以使用“隱藏字段”組件。

要關聯一個組件到一個 bean 的屬性,右鍵點擊這個組件並選擇“綁定到數據”。在“綁定到數據”對話框中,選擇“綁定到對象”標簽並選擇這個 bean 的屬性,如下圖所示。

圖 18:“綁定到數據”對話框

注意事項:對於大部分的組件,彈出菜單都提供了兩個綁定操作-“屬性綁定”和“綁定到數據”。“屬性綁定”對話框允許您任何組件屬性到一個受管 bean 屬性或者一個數據提供器字段。“綁定到數據”對話框是一個綁定組件屬性的快捷方式-存儲屬性到一個受管 bean 屬性或者一個數據提供器字段。使用“綁定到數據提供器”標簽綁定到您已經添加到頁面的任何數據提供器或者一個受管 bean。使用“綁定到對象”標簽綁定到一個頁面屬性或者一個受管 bean 屬性。

嘗試

添加一個屬性到 RequestBean1.java:將屬性命名為 parm,設置為 String 類型並允許用戶以讀/寫的方式訪問。

請注意新添加的屬性可能不會出現在“導航”窗口。要顯示它,在可視設計器中點擊右鍵,在彈出菜單中選擇“刷新”。您也可以通過打開並保存 RequestBean1 源文件來顯示屬性,例如下列步驟。

關閉並保存文件。

創建一個名為 First 的頁面,並添加一個“按鈕”組件和一個“文本字段”組件。

右鍵點擊“文本字段”組件,在彈出菜單中選擇“綁定到數據”。點擊“綁定到對象”標簽,選擇 RequestBean1 > parm,點擊“確定”。

創建一個名為 Next 的頁面。添加一個“按鈕”組件和一個“靜態文本”組件。

使用您剛才綁定 First 頁面上的“文本字段”組件的相同步驟,綁定 Next 頁面上的“靜態文本”組件到 RequestBean1 > parm。

右鍵點擊頁面的背景,在彈出菜單中選擇“頁面導航”。

在“頁面流”編輯器中,創建一個從 First 頁面的“按鈕”組件到 Next 頁面的連接器。不用管 Next 頁面的“按鈕”組件,因為您要使這個按鈕促發 Next 頁面簡單地跳轉到它本身。

將 First.jsp 設置為起始頁並運行這個應用程序。輸入一個值並點擊按鈕。注意 Next 頁面顯示了您在 First 頁面輸入的值。在這之後,RequestBean1 的一個實例被初始化,用於將“文本字段”組件的值存儲在 parm 屬性中。parm 屬性的值在隨後的響應中被讀到(Next 頁面的 HTML)。一旦響應被返回,RequestBean1 的實例就被銷毀。

點擊 Next 頁面上的按鈕促發 Next 頁面跳轉到它自身。注意“靜態文本”組件將不再顯示一個值。這是因為保存值的 RequestBean1 的實例只存活於 First 頁面提交到 Next 頁面的 HTML 被返回到客戶端的請求中。

了解更多

參見理解作用域和受管 Bean

連接到數據庫

“服務”窗口中包含了一個“數據庫”節點,它顯示了所有已在 IDE 中注冊的數據庫,如下圖所示。NetBeans IDE 6.0 提供了一個范例數據庫 TRAVEL,您將在本教程剩余部分使用到它。

圖 19:數據源

在您可以在項目中訪問數據庫之前,您必須將 IDE 連接到數據庫。您在每次啟動 IDE 並打開連接到數據庫的項目時都必須這麼做。

如果一個數據庫標記顯示為斷開並且您無法展開這個數據庫節點,這表示 IDE 還未連接到數據庫。要連接到 TRAVEL 數據庫,在“服務”窗口中右鍵點擊這個數據庫的節點並在彈出菜單中選擇“連接”。當出現“連接”對話框時,在“口令”中輸入 travel並選中“記住口令”。

當您打開一個已存在的項目,可視設計器可能顯示一個錯誤界面。典型地,這是因為可視設計器需要從數據庫獲得信息,但 IDE 還未連接到數據庫。嘗試連接到數據庫並點擊錯誤界面上的“繼續”按鈕來解決這個問題。

您可以從數據源中拖放一個表到一個組件上或者到頁面上,來連接一個頁面到一個數據庫表。當您這麼做了,IDE 會添加一個數據提供器到頁面上和一個 rowset 到 SessionBean1 類中,如下圖所示。

圖 20:數據提供器和 Row Set

rowset 對象創建一個到數據庫的連接,執行查詢,和管理結果集。數據提供器對象提供了一個訪問多種類型的組件數據的通用接口,從數據庫表,到 ArrayList 對象,到 Enterprise JavaBeans 對象。特別地,您使用 rowset 對象的唯一機會是當您需要設置查詢參數的時候。在大部分情況下,您可以使用數據提供器對象來訪問和操縱數據。

一旦您添加了一個數據提供器到項目中,您就可以通過右擊組件並選擇“綁定到數據”來綁定一個組件到這個數據提供器。在“綁定到數據”對話框中點擊“綁定到數據提供器”標簽使它顯示到前端。“選擇一個數據提供器”下拉列表顯示了項目中所有您可以選擇以綁定到組件的數據提供器。選擇了一個數據提供器之後,選擇適當的數據列綁定到組件。對於某些組件,例如“下拉列表”組件,您必須選擇“值字段”和“顯示字段”。

要定義 SQL 查詢來檢索數據,您可以使用“查詢編輯器”,如下圖所示。您可以通過一個 rowset 對象訪問這個編輯器。

圖 21 :查詢編輯器

嘗試

新建一個頁面,將它設置為起始頁面,然後拖放一個“列表框”組件到頁面上。

在“服務”窗口中,展開“數據庫”,展開 TRAVEL 數據庫的 jdbc 節點,展開“表”節點。

拖放 TRIPTYPE 節點到頁面上。

注意事項:如果 TRAVEL 數據庫標記是斷開的並且您無法展開數據庫節點,這表示 IDE 尚未連接到數據庫。要連接到 TRAVEL 數據庫,在“服務”窗口中右擊數據庫節點並在彈出菜單中選擇“連接”。當出現“連接”對話框的時候,在“口令”在輸入 travel,選中“記住口令”,點擊“確定”。

右擊“列表框”組件並在彈出菜單中選擇“綁定到數據”。

在“綁定到數據”對話框中,點擊“綁定到數據提供器”標簽,確認“選擇一個數據提供器”下拉列表中 tripTypeDataProvider 被選擇。

設置“值字段”為 TRIPTYPE.TRIPTYPEID(默認選項)並設置“顯示字段”為 TRIPTYPE.DESCRIPTION。點擊“確定”。

運行應用程序看看列表框是如何被表中的數據填充的。

在“導航”窗口中展開 SessionBean1 並雙擊 triptypeRowSet 節點,打開它的“查詢編輯器”。在網格中的 DESCRIPTION 行點擊“排序類型”列的區域並從下拉列表中選擇“升序”。

點擊標記有類似 jdbc:derby://localhost:1527/travel 字樣的“查詢編輯器”標簽上的 X 關閉“查詢編輯器”,並再次運行程序。注意現在的列表項以字母順序顯示。

(可選的)搜索頁面的 Java 源代碼中的 _init 方法,查看數據提供器是如何關聯到 rowset 的。這個方法默認是折疊的。點擊顯示在左邊界的代碼折疊框,展開代碼。

在“項目”窗口中雙擊“源包”> gettingstarted > SessionBean1 節點,打開 session bean 的 Java 源代碼。搜索 session bean 的 _init 方法,查看 rowset 如何實現查詢。

調試 Web 應用程序

IDE 已經集成了一個調試器以幫助您排除您代碼中的問題,如下圖所示。您可以用它設置斷點和監視,單步執行代碼,和執行到光標所在處的代碼語句。

您可以通過點擊 Java 編輯器的左邊框來設置一個斷點。您可以通過右擊一個變量或表達式選擇“新建監視”來設置一個監視。從主菜單中選擇“運行”>“調試主項目”或者“運行”>“運行至光標”來運行調試器。

圖 22:調試器窗口

提示:您可以使用這裡的一些其它的特性來診斷和解決問題:

使用 HTTP 監視器來監視客戶端-服務器之間的通信,響應 HTTP 請求。當您的頁面有幾個輸入字段並且您想要重建 HTTP 請求而又不想填寫所有的字段時,這個響應請求的能力將會是很有幫助的。

添加一個“消息組”組件到頁面上並使用 error,warn,fatal,和 info 方法顯示組件的診斷消息。

使用 log 方法將診斷消息發送到服務器日志。

嘗試

創建或重用一個起始頁。添加一個“靜態文本”組件,將它的 text 屬性設置為 Hello,並設置它的 id 屬性為 helloText。

添加一個“按鈕”組件。雙擊“按鈕”組件編輯它的 action 方法(button1_action)並用以下的代碼替換方法體裡的內容。

代碼范例 1:button1_action 方法

String oldString = (String) this.helloText.getText();
this.helloText.setText("Good Bye");
String newString = (String) this.helloText.getText();
return null;

您可以按下 Alt-Shift-F 組合鍵來重新格式化您剛添加的代碼。

右鍵點擊 oldString,選擇“新建監視”並點擊“確定”按鈕。用相同的方法為 newString 新建一個監視。

您可以看到一個“監視”標簽窗口在 IDE 的下方打開,被監視的表達式被列在窗口中。

在方法體的第一個語句左邊的邊欄上點擊,設置一個斷點。

當您點擊之後您可以看到出現一個粉紅色的框,並且整行代碼的背景變成粉紅色。

從主菜單中選擇“運行”>“調試主項目”。

當頁面在 Web 浏覽器中顯示,點擊按鈕。當調試器在 button1_action 方法處中斷時,點擊“調試器”窗口中的“監視”標簽查看 newString 和 oldString 當前的值。

從主菜單中選擇“運行”>“越過”或者在工具欄中點擊“越過”按鈕 。查看“監視”標簽。越過這段代碼幾次並觀察“監視”標簽中的“值”一列。

觀察“局部變量”標簽和“調用棧”標簽。

選擇“運行”>“完成調試器會話”來關閉此調試器會話。

總結

您通過創建一個 Visual Web JSF 應用程序項目開始構建一個 web 應用程序。

您通過右鍵點擊“項目”窗口中的“Web 頁”節點並選擇“新建”>“Visual Web JSF 頁”添加頁面。

從“組件面板”拖放組件到可視設計器中的頁面上,進行頁面設計。

點擊主工具欄上的“運行主項目”按鈕 來保存,生成,布署,和運行應用程序。

使用“頁面流”編輯器指定頁面導航。您還可以添加超級鏈接組件到頁面上並設置它們的 url 屬性值。

拖放“驗證器”對象和“轉換器”對象到一個組件上,指定格式和校驗規則。

使用“消息”組件和“消息組”組件顯示運行時錯誤消息。

使用 RequestBean1,SessionBean1,和 ApplicationBean1 類中的屬性來存儲和處理從一個頁面傳遞到另一個頁面的值。

從“服務”窗口的“數據庫”節點中拖放一個表到頁面上或者到頁面的組件上,來創建一個數據提供器和它關聯的數據庫表的 rowset。

使用“綁定到數據”菜單項綁定組件到數據提供器字段,並綁定組件到 bean 的屬性。

在一個 rowset 上打開一個“查詢編輯器”來修改用來填充 rowset 對象的 SQL 查詢。

使用調試器,HTTP 監視器,服務器日志,和“消息組”組件診斷運行時的問題。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved