拍賣 Web 應用程式詳細資料

拍賣 Web 應用程式範例是利用 Software Development Platform (SDP) 6.0 版所開發。這份文件會指出拍賣 Web 應用程式主要的建置區塊,如下圖所示。

拍賣 Web 應用程式中有許多元件。這並不是如何建置整個應用程式的指導教學。反之,這份文件會特別強調運用工作台所提供之各種不同的工具,來進行開發及設計時的重要事項,使您能夠將這些知識運用於自己的 Web 應用程式。

如之前的圖解所示,Web 內容是與資料和商業邏輯平行開發的。當設計人員開發網頁的樣式和佈置時,Java 和 Web 服務的開發人員也會撰寫商業邏輯的程式碼來驅動這些網頁。以下各節說明如何建立這些主要元件,以及其對拍賣 Web 應用程式的作用:

  1. 利用「EJB 對映」編輯器將 Entity Bean 對映至資料庫表格
  2. 利用 Session Bean Facade 精靈產生含 SDO 資料物件的 Session Facade
  3. 利用 Web Site Designer 定義網站佈置
  4. 利用 Page Designer 建立網頁範本
  5. 利用 Page Designer 將 JavaServer Faces 元件加入 JSP 頁面
  6. 利用 Java 視覺化編輯器建立 Swing 使用者介面
  7. 建立 Web 服務

利用「EJB 對映」編輯器將 Entity Bean 對映至資料庫表格

Enterprise JavaBeans (EJB) 提供了一種便利的方式,可讓 Java 應用程式存取關聯式資料庫中存放的資料。您可以利用 Bean 管理的持續性 (BMP) 或儲存器管理的持續性 (CMP) 來開發 Entity Bean。CMP 比使用 BMP 的彈性更大,因為 EJB 儲存器可以藉由 Bean 導引來產生所有資料庫特有的呼叫。依預設,Rational 工作台中的工具會利用 CMP 產生 Entity Bean。CMP Entity Bean 不可存取 SQL 程式碼。這可讓您在使用不同資料庫的其他 J2EE 伺服器上部署 Bean,而不需要重寫程式碼。

將物件對映到關聯式資料庫有不同的做法,如:由上而下、由下而上和結合發展。由上而下的做法是從現有的物件開始做起,接著依需求逐漸定義詳細的層次,最後再設計資料庫。由下而上的做法則使用現有的資料庫綱目,然後設計相依的層次來定義物件。結合發展的做法則會使用現有的資料庫和現有的物件,接著開發中介的層次,使物件與對應的資料庫表格相符。

「拍賣」應用程式在開發 Entity EJB 時,使用的是由下而上的做法。一開始 Cloudscape 資料庫就已存在,且包含的表格非常符合所需的 EJB。在利用「資料庫連線」精靈建立資料庫的連線之後,我們利用了「EJB 至 RDB 對映」精靈來建立從一或多個表格對映的 EJB,但有一些例外。下圖顯示「拍賣」應用程式中使用的 Entity EJB 以及連接它們的關係。

遠端用戶端不會直接存取「拍賣」應用程式中的 Entity Bean。所有要求和回應都是由 Session Facade 處理,而 Bean 則用來存取後端資料。這可讓伺服器端共用持續性資料儲存庫的存取權。下一節會深入說明 Session Facade。

如果需要對映 Entity Bean 的詳細資訊,請參閱說明主題產生由下而上對映

利用 Session Bean Facade 精靈產生含 SDO 資料物件的 Session Facade

Session Facade 是用戶端和後端系統之間的介面,其可和服務資料物件 (SDO) 元件通訊,最後和資料庫通訊。當用戶端傳送的要求需要執行數個物件時,Session Facade 非常有用。將這些要求個別傳送給物件會增加網路資料傳輸和潛在的風險。Session Facade 可以用來作為兩端的緩衝區,一方面處理來自用戶端的一般要求,一方面將特定的要求傳給必要的物件。如此會減少資料傳輸並簡化用戶端的開發作業。

在建立 Facade 之後,您可以從工具中的功能表選取對映 EJB,來選取它要管理的 EJB。Facade 會從 Entity Bean 產生必要的 SDO 元件。「拍賣」應用程式中有兩個 Facade,其是以下列兩個功能群組為基礎:

  • 系統 Facade 會與系統特有的後端 EJB(如:Category 和 Role)連結。
  • 使用者 Facade 會封裝使用者特有的資料,如:Bid、Item 和 Role。

您可以藉由將 EJB 分組並使用兩個不同的 Facade,來增加應用程式的效能,因為使用者只會存取他們需要的 EJB。控制網站本身功能(如:Category)的 Entity Bean,則是由系統 Facade 來控制。

您可以利用「建立 Session Bean Facade」精靈來一次選擇由 Facade 參照的 EJB,如下圖所示。如有需要,一個 EJB 可以在多個 Facade 中被參照。「拍賣」應用程式並未使用這個做法。

您可以將方法新增至 Facade 中來增加其他的功能。比方說,在使用者 Facade 中,有一個方法會傳回使用者的清單,而另一個方法則會傳回作用中使用者的清單。以這些方法為例,您可以將另一個方法新增至使用者 Facade 中,來傳回所有標示為非作用中使用者的清單。

您可以在 java.sun.com 的 "Design Patterns: Session Facade" 討論論文中找到 Session Facade 的詳細資訊。

利用 Web Site Designer 定義網站佈置

Web Site Designer 工具的「導覽」視圖提供了網站佈置方式的視覺化表示法。其會顯示個別的網頁和其階層式組織,且對於維護網站內之網頁的佈置和組織非常有用。當您在編輯器中拖放網頁時,網頁範本中的導覽控制項即會自動更新。比方說,在下圖顯示的「拍賣」導覽結構中,您可以將銷售網頁移到「瀏覽」網頁之前,來變更導覽標籤的順序。Web Site Designer 會在所有的網頁中,以正確的順序自動產生標籤。要使這些變更反映在執行中的應用程式,請重新儲存使用導覽範本的每一頁。

除了剛說明的「導覽」視圖之外,Web Site Designer 還提供了詳細資料視圖,將其他的網頁元素組織在一個方便、可編輯的表格中,如下圖所示。這份表格可讓您很容易更新網頁內容,如:標題、作者和導覽標籤。

如果需要使用 Web Site Designer 來管理網站佈置的詳細資訊,請參閱線上說明中的建立網站結構主題。

利用 Page Designer 建立網頁範本

Visual Designer 所附的工作台是用來開發網頁範本以及網頁本身。

網頁範本是可重複使用的內容程式碼片段,其提供網站區段通用的外觀和行為。如果要共用通用的外觀與操作方式,網頁只需要參照這些範本即可。 利用範本,使用者可以很容易地導覽網站,開發人員只需要撰寫特定頁面特有的程式碼,對雙方都有好處。

網頁範本也可以讓網站內容的維護變得很容易。範本檔的變更會自動反映在參照它的每一個頁面上。比方說,在拍賣 Web 應用程式中,範本 maintemplate.jtpl 提供了「拍賣」網頁的一般佈置。您可以利用 Page Designer 中的選用區(其可讓您將元素拖放到網頁中),將網頁元素加入範本中。系統會自動產生必要的 HTML 程式碼。您可以利用這種方式很容易地修改「拍賣」範本,比方說,將現行日期和時間併入頁尾中。

「拍賣」範本中的主要元素是導覽控制項。拍賣 Web 應用程式的導覽列使用了兩種形式的導覽:

  • 導覽標籤:顯示網站的不同區段。
  • 導覽軌跡或「瀏覽途徑」("bread crumbs"):以文字方式顯示使用者在網站中的位置,例如:首頁 > 瀏覽 > 清單

您只要插入標示來呼叫範本,而不需撰寫導覽的程式,即可將相同的導覽列併入網站的所有頁面中。您可以使用「範本對映」編輯器將範本的參照插入網頁中。

動態範本更進一步運用這項技術,比方說,根據使用者的角色或功能來改變網頁內容, 或是將使用者特定的資訊插入網頁中。「拍賣」範例使用了動態範本,在導覽列中提供只有以管理者身分登入的使用者可以使用的管理鏈結,以及在使用者順利登入之後,將「登入」按鈕變更為「登出」。

如果需要建立網頁範本的詳細資訊,請參閱說明主題建立網頁範本

利用 Page Designer 將 JavaServer Faces 元件新增至 JSP 檔中

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 欄位以限整數勾選框來限制只接受整數, 如圖例的右下角所示。inputText 欄位的「驗證」、「行為」和「協助工具」有其他設定, 其定義在圖例左下方 h: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

利用 Java 視覺化編輯器建立 Swing 使用者介面

除了網頁之外,「拍賣」應用程式還有一個 Java Swing 用戶端,可讓管理者維護使用者資訊(如:姓名和密碼)。利用 Swing 用戶端可以將所有的處理程序帶到用戶端的機器上,以減少與 Web 應用程式相關的等待時間。「使用者管理」用戶端會列出所有的應用程式使用者。管理者可以和使用者的資料互動以及管理其特有的屬性,而不需要等待重新載入網頁。Swing 用戶端也提供了更簡單、更應用程式導向的介面。

Swing 用戶端應用程式是利用 Java 視覺化編輯器所開發,如下所示。利用視覺化編輯器,您可以使用視覺化的方式來開發應用程式,並自動產生程式碼。如此可以減少手動撰寫複雜的 Swing 程式碼的需求。

上圖顯示 Java 視覺化編輯器內的「使用者管理」應用程式。右邊的區塊是 Session Facade,其使用 SDO 物件來存取商業邏輯。連接這些區塊到介面設計的實線,與使用者介面中的特定事件相關。虛線則顯示傳給 SDO 物件的參數,以及這些參數傳回的值。以視覺化的方式開發這個應用程式,會比撰寫複雜的 Java Swing 程式碼來得快,且可以使變更使用者介面更加容易。

「使用者管理」介面是直接在 Java 視覺化編輯器中建立的。您可以從選用區中選取新的 Swing 元件,將它加入應用程式中。您可以利用所提供的工具、精靈、回饋和內容表中的內容,來自訂任何元件以符合所需的外觀與操作方式。同時,您也可以連結可以顯示內容的元件(如:表格和文字欄位),來顯示由資料來源提供的資料。

在開發「使用者管理」應用程式之後,即需要將它部署到網站中。完成的「使用者管理」應用程式是會組合在 EAR 檔中,並放到網站的目錄結構下。系統還會建立其他的 Script 和 HTML 資源,以依照與 WebSphere Application Server 產品套裝在一起之 WebSphere Application Client 軟體的文件中所指定的方式,正確地透過 WebStart 部署應用程式。基於安全的理由,在用戶端執行的資源會利用憑證來簽章。在執行完文件中說明的所有必要設定之後,該應用程式即可部署到只有瀏覽器和 Java WebStart 的用戶端。

在建立 Web 應用程式元件之後,拍賣 Web 應用程式即已部署並在應用程式伺服器上執行。「範例展示區」中還有「拍賣」應用程式中其他的元件。

如果需要詳細資訊,請參閱說明主題在視覺化編輯器中編輯 Java

建立 Web 服務

Web 服務是和 Web 應用程式平行開發,因為它並不會相依於 Web 應用程式 - Web 服務是存取商業邏輯的另一種方法, 且不含 Web 應用程式所有的功能。請參閱 Web 服務區段,以取得「拍賣」應用程式這個片段的詳細說明。