「拍賣」Web 應用程式由數個元件組成,如下圖所示。 本文不是如何建置整個應用程式的指導教學。 而是強調以工作台提供的各種工具來進行開發和設計的重點,您能將知識運用在自己的 Web 應用程式上。
Enterprise JavaBeans™ (EJB) 提供便捷的方式讓 Java 應用程式存取關聯式資料庫中保存的資料。 Entity Bean 可以採用 Bean 管理的持續性 (BMP) 或儲存器管理的持續性 (CMP) 來開發。 CMP 比使用 BMP 更有彈性,因為 EJB 儲存器會根據 Bean 的指示,負責處理資料庫相關的所有呼叫。 依預設,Rational® 工作台的工具會以 CMP 來產生 Entity Bean。 CMP Entity Bean 不含存取 SQL 程式碼。這可讓您將 Bean 部署在使用不同資料庫的其他 J2EE 伺服器上,完全不必重寫程式碼。
物件對映至關聯式資料庫有各種不同的方式,例如由下而上、由下而上及雙向逼進。 由上而下法是從現有的物件開始,視情況將各層定義得更詳細,到最後才設計資料庫。 由下而上法使用現有的資料庫綱目,然後設計相依層來定義物件。 雙向逼進法使用現有的資料庫和現有的物件,然後開發中間層,將物件對映到相對應的資料庫表格。
「拍賣」應用程式採用由下而上法來開發實體 EJB。 Derby 資料庫一開始就存在,且包含的表格密切結合所需的 EJB。 在以「資料庫連線」精靈建立資料庫的連線之後, 您們利用「EJB 至 RDB 對映」精靈來建立從一或多個表格對映的 EJB,但有部分例外。 下圖顯示「拍賣」應用程式中的實體 EJB 及 EJB 之間的關係。
遠端用戶端不直接存取「拍賣」應用程式中的 Entity Bean。 所有要求和回應皆由 Session Facade 來處理,Bean 用來存取後端資料。 這可讓伺服器端共用對持續資料儲存區的存取。 下一節會深入討論 Session Facade。
如需對映 Entity Bean 的相關資訊,請參閱「產生由下而上對映」說明主題。
Session Facade 是用戶端和後端之間的介面,可通往「服務資料物件 (SDO)」元件,最後抵達資料庫。 當用戶端傳送的要求需要執行多個物件時,Session Facade 很有用。 逐一傳送這些要求給物件會造成網路壅塞和延遲。 Session Facade 就像雙方之間的緩衝區,先取得用戶端的一般要求,再將特定要求傳送至必要物件。 不但減少資料流量,也讓簡化用戶端的開發過程。
經由 EJB 分組和使用兩個不同的 Facade,可以提高應用程式的效能,因為使用者只存取所需的 EJB。 控制網站本身功能的 Entity Bean,例如「種類」,由系統 Facade 來控制。
Facade 參照的 EJB 是在「建立 Session Bean Facade」精靈中一次選擇一個,如下圖所示。 必要的話,一個 EJB 也可以在多個 Facade 中參照。在「拍賣」應用程式中沒有這種情形。
您可以在 Facade 中加入方法來增加其他功能。 例如,在使用者 Facade 中,有一個方法會傳回使用者清單,還有一個方法會傳回作用中使用者的清單。 以這些方法為例子,使用者 Facade 中可以再增加另一個方法,傳回所有標示為非作用中使用者的清單。
如需 Session Facade 的詳細資訊, 請參閱 "Design Patterns: Session Facade" 討論文件,網址是 http://java.sun.com./。
Web Site Designer 工具的「導覽」視圖以視覺化表示站台如何佈置。 此視圖顯示個別頁面及其階層式組織,適合用來維護站台頁面的版面配置和組織。 在編輯器中拖放頁面時,網頁範本中的導覽控制項會自動更新。 例如,就下圖顯示的「拍賣」導覽結構為例, 您可以將銷售頁面移至「瀏覽」頁面之前,以變更導覽標籤的順序。 Web Site Designer 會自動以正確的順序在所有頁面上產生標籤。 若要讓變更在執行中應用程式裡生效,請重新儲存用到導覽範本的每一個頁面。
除了剛才說明的「導覽」視圖, Web Site Designer 也提供「詳細資料」視圖,以方便、可編輯的表格來組織其他頁面元素,如下圖所示。 這個表格讓頁面內容更新更簡單,例如標題、作者及導覽標籤。
如需以 Web Site Designer 來管理網站版面配置的相關資訊,請參閱線上說明的「建立網站結構」主題。
工作台提供視覺化設計工具,方便開發網頁範本及網頁本身。
網頁範本是可重複使用的內容程式碼片段,可讓網站的各區段有一致的外觀或行為。 為了達成一致的外觀和操作方式,網頁只需要參照範本。 使用範本對使用者(可輕鬆導覽網站)和開發人員(只需要撰寫特定頁面特有的程式碼)都有好處。
網頁範本也讓網站內容維護起來更簡單。 範本檔的變更會自動反映在參照此範本的每一個頁面上。 例如,在「拍賣」Web 應用程式中,範本 maintemplate.jtpl 提供「拍賣」頁面的一般版面配置。 利用 Page Designer 的選用區,將元素拖放至網頁,即可將網頁元素新增至範本。 必要的 HTML 程式碼會自動產生。 如此,修改「拍賣」範本就很簡單,例如,可在頁尾加上今天日期與時間。
插入可呼叫範本的標示,而不要直接在程式中撰寫導覽,就可以讓站台的所有頁面有相同的導覽列。 「範本對映」編輯器會將範本的參照插入網頁中。
動態範本更進一步發揮這項技術,例如,根據使用者的角色或能力來變換網頁內容,或在網頁中插入使用者指定的資訊。 「拍賣」範例採用動態範本,只對以管理者身分登入的使用者,才會在導覽列提供管理鏈結, 當使用者順利登入之後,也會將「登入」按鈕的文字改成「登出」。
如需建立網頁範本的相關資訊,請參閱「建立網頁範本」的說明主題。
JavaServer Faces (JSF) 這項技術有助於為應用程式伺服器上執行的動態 Web 應用程式建置使用者介面。 JSF 是開放式標準語言,使用 JavaServer Faces 標準標示庫。 HTML 程式碼中會插入標示來建立動態網頁。
JSF 架構可跨伺服器要求來管理使用者介面狀態,提供簡單的開發模型來處理用戶端引發的伺服器端事件。 例如,JSF 可以為不同的事件指定行為,例如按一下按鈕。 Page Designer 在選用區上顯示一些內建函數,可拖放至網頁上。 這些拖放功能讓 JSF、HTML 及其他 Scripting 元素使用起來更簡單。 這不僅有利用於控制欄位的基本功能,例如文字欄位的值類型(整數、英數),也可以設定驗證規則。 在 Page Designer 中,JSF 控制項可連結至每一個頁面相關的 SDO 資料。
透過 Page Designer 選用區,可以將其他函數新增至 JSF 頁面。 例如,「立即購買」按鈕可新增至商品明細頁面,讓使用者以賣方設定的商品價格來購買商品。
下圖顯示「拍賣」詳細資料頁面的 JSF 控制項。 newbid inputText 欄位以僅限整數勾選框來指定僅限接受整數,如圖中的右下角所示。 在圖中的左下角,h:inputText 下方的標籤中定義 inputText 欄位有「驗證」、「行為」及「可存取性」的其他設定。 「驗證」標籤中以 Java 來定義特定的驗證規則。 例如,newbid inputText 欄位的有效輸入是整數而不是空值、大於起標價且大於目前出價加 1。
在「拍賣」應用程式的 itemdetails 頁面上,newbid inputText 欄位已產生下列程式碼。
<h:inputText styleClass="inputText" id="newbid" required="true" size="14"> <f:convertNumber integerOnly="true" /> <f:validateLongRange minimum="#{pc_Itemdetail.userFacadeLocalGetFindHighestBidResultBean==null ? pc_Itemdetail.userFacadeLocalGetBidItemSDOByKeyResultBean.startingbid : pc_Itemdetail.userFacadeLocalGetFindHighestBidResultBean.currentbid+1}"> </f:validateLongRange> </h:inputText>
如需開發 Faces JSP 檔的相關資訊,請參閱 JavaServer Faces 的說明主題。
Web 服務和 Web 應用程式同步開發,因為 Web 服務不依賴 Web 應用程式 - Web 服務是存取商業邏輯的另一種作法,不含 Web 應用程式的所有功能。 如需這個「拍賣」應用程式的詳細說明,請參閱 Web 服務章節。