茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1729107 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
PIMG_00111.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2008/3/18 4:51:52
使用 IBM WebSphere Studio 開始學習 Struts 的提示和技巧

本文演示了如何使用 IBM 的 WebSphere Studio 產品來創建一個使用 Struts 的簡單 Web 應用程序,Struts
是一個用於開發 Web 應用程序的概念框架,它是 Apache 軟件基金會 Jakarta
項目的一部分。如果您有任何疑問、意見,或者希望尋求幫助,請訪問我們的技術支持論壇

簡介
Struts 是一個用於開發 Web 應用程序的概念框架。它是模型-視圖-控制器(Model-View-Controller,MVC)設計範例的一個變體,其中控製器的功能是作為應用程序邏輯(模型)和數據表示(視圖)之間的中間介質。該框架包含一組 Java 類和 JSP 標記庫。同 IBM WebSphere Studio 中的工具一起,Struts 可以幫助開發人員快速地設計和實現 Web 應用程序。Struts 是 Apache 軟件基金會 Jakarta 項目所擁有的眾多產品中的一種。

本文為您演示了如何使用 IBM WebSphere Studio Site Developer 來創建一些初始組件,它們是基於 Struts 的 Web 應用程序所必需的。這些組件包括:

  • 應用程序的網站的入口頁面(index.jsp),它包括用於輸入用戶標識和密碼的登錄表單
  • 用於初始數據驗證的相關 ActionForm 類,它驗證用戶是否輸入了用戶標識和密碼,如果未輸入則發出錯誤消息
  • 認證用戶的用戶標識和密碼的 Action 類(在實際的應用程序中,應當由 WebSphere 或 IBM Policy Director 管理安全性,例如用戶標識/密碼認證)
  • 網站的 home.jsp,一旦成功登錄就調用它
  • error.jsp 頁面,如果輸入的用戶標識和密碼未能通過認證,則顯示該頁面

圖 1. 樣本 Struts 應用程序
樣本 Struts 應用程序

開始之前
請安裝 Red
Hat Linux 7.2
、Red Hat Linux 7.3、SuSE Linux 7.3安裝 SuSE Linux Enterprise Server(SLES)8


將需要 WebSphere Studio Site Developer。通過索取包含 WebSphere Studio Site
Developer 和其它 IBM 試用軟件的免費 CD 集,或者通過下載,可以獲得免費的 60 天試用版本。可在「Speed-start
your Linux application」概述頁面上找到有關索取 CD 集或下載產品
信息。儘管本文中的示例使用了 IBM WebSphere Studio Site Developer,但是也可以使用 IBM
WebSphere Studio Application Developer,它包含了其它特性,例如 EJB
支持。本文以下部分將這兩個產品都稱為「WebSphere Studio」。

您應當使用 Help->Software Updates 菜單功能將您的 WebSphere Studio 軟件升級到 5.0.1 級別。這將糾正下面提及的一些接口問題;否則,這些問題將要求您停止和重新啟動 WebSphere Studio。

您是 Linux 新手嗎?如果您是一位 Linux 新手,並且需要有關登錄和註銷、掛裝 CD-ROM 或打開終端窗口方面的幫助,請參閱「針對 Linux 開發新手的基本任務」,它介紹了這些任務,以及其它任務。

創建 Web 項目
在本節中,我們將登錄,然後啟動 WebSphere Studio 並在新的工作空間中創建用於 Struts 應用程序的 Web 項目。

  1. 以某個用戶身份(不要以 root 用戶身份)登錄並啟動 WebSphere Studio Site Developer。從終端窗口運行wssitedev50
    如果您的路徑中無 /usr/bin,那麼請運行 /usr/bin/wssitedev50。還可以從桌面的任務欄啟動程序。例如,對於 KDE,選擇 Start Application > Run Command... 並根據情況相應地輸入 wssitedev50/usr/bin/wssitedev50。對於本示例,我們將創建一個名為 MyBank 的新工作空間,以便於將該項目與您可能正在進行的其它項目區分開。

    圖 2. 啟動新項目
    啟動新項目

  2. 創建工作空間時,您會看到顯示 Site Developer 徽標。這一工作可能需要花費一些時間,請耐心等待。

    圖 3. 創建 MyBank 工作空間
    創建 MyBank 工作空間

  3. 當工作空間打開時,您的首要任務是創建一個新項目。對於本項目,我們將向您介紹基於 Struts 的 Web 應用程序備忘單(cheat sheet)。有關創建項目的更多方法,請參閱文章「用 WebSphere Studio Application Developer 在 90 秒內快速啟動您的 Linux 應用開發:「Hello, World」」。順帶我們將指出備忘單的功能,並且將介紹一些備忘單未涉及的一些功能。要啟動一個帶有備忘單的新 Struts 項目,請單擊 Help > Cheat Sheets > Create a Struts-based Web application,如圖 4 所示。

    圖 4. 創建新項目
    創建新項目

  4. 打開了備忘單介紹。現在,在左邊的導航區域有一個備忘單圖標,當看不見備忘單時,可以使用該圖標來打開它。還有一個形狀為黑色箭頭的按鈕,可以使用它跳到備忘單的下一步。現在單擊它以轉到備忘單的下一個階段,在那將開始創建我們的項目。

    圖 5. 備忘單介紹
    備忘單介紹

  5. 單擊執行按鈕(黑色箭頭)以創建一個 Web 項目。

    圖 6. 備忘單 — 創建 Web 項目
    備忘單 — 創建 Web 項目

  6. 在下一個屏幕上,在 Project name 域中輸入 MyBankWeb。備忘單已經選擇了 Web Project features 下的 Add Struts support。選項 Create a default CSS file 應當已處於被選中狀態。單擊 Next

    圖 7. 創建新的 Web 項目
    創建新的 Web 項目(1)

  7. 在 J2EE Settings Page 上,在 New project name 域中輸入 MyBankEAR,並在 Context root 域中輸入 MyBank。使用缺省的 J2EE 級別 1.3。單擊 Next

    圖 8. 指定 J2EE 設置
    指定 J2EE 設置

  8. Struts Settings 窗口上的缺省值是可接受的。請注意選中了Create a Resource Bundle for Struts Project。在下一部分處理中,我們將向該資源束(Resource bundle)添加屏幕文本和出錯消息特性。在資源束中保存這樣的字符串有助於將我們的 Web 頁面翻譯成另一種語言。單擊 Finish

    圖 9. 指定 Struts 設置
    指定 Struts 設置

  9. 您將返回到備忘單,現在多了一個處於選中狀態的項。單擊備忘單上的最小化(_)按鈕,因為我們在下一步中要使用工作空間的其它一些特性。

    圖 10. 備忘單 — 創建 Web 圖
    備忘單 — 創建 Web 圖

WebSphere Studio 中的透視圖

繼續之前,我們需要介紹一個重要的概念。WebSphere Studio 是一個面向任務的工具,它的用戶界面是為要執行的任務定製的。用於開發
JSP 的界面與用於服務器開發的界面有很大的不同。通過切換您正在使用的透視圖,Site Developer 允許您對查看哪些窗口和視圖進行控制。透視圖是一組視圖,這些視圖顯示了執行具體任務時您需要的資源。WebSphere Studio 擁有為 Web 應用程序開發、J2EE 開發、調試和許多其它常見任務而定義的透視圖。左邊的導航欄包含了幾個圖標,這些圖標允許您方便地打開透視圖或在透視圖之間切換。

打開透視圖圖標
打開透視圖
打開新的透視圖或切換到一個已經打開的透視圖。常用的透視圖是列在菜單中的,其它許多透視圖可通過 Other 菜單選項訪問。
Web 透視圖圖標
Web 透視圖
將視圖切換到 Web 透視圖。
備忘單圖標
備忘單
顯示或最小化備忘單

應用程序資源

面我們提到過,我們將創建資源束,以允許翻譯文本。根據這個應用程序的初始設計,它將包含三個 JavaServer
Pages:index.jsp、home.jsp 和
error.jsp。我們將為您演示如何為要在所有頁面、出錯消息、按鈕文本和用戶標識及密碼提示上使用的標題創建應用程序資源。儘管我們在實際的應用程
序中不會混合使用不同的方法,但是我們還是會將一些文本直接編輯進頁面,這樣您就可以看到不同的工作方法。

這些資源存儲在應用程序資源特性文件中。在本節中,我們將為您演示幾個有關 IDE 的技巧,然後創建這些應用程序資源。

  1. 如果你從頭至尾都是按照我們的步驟進行的,那麼您現在應當看到了 Web 透視圖。如果沒有,那麼請單擊左邊導航欄中的Web 透視圖圖標(見上面的 WebSphere Studio 中的透視圖中的描述),或者選擇 Window > Open Perspective > Web。我們將使用 Web 透視圖中的 J2EE Navigator 窗格來瀏覽應用程序資源文件,然後打開它進行編輯。窗格底部的選項卡允許您在窗格之間切換。

    圖 11. J2EE Navigator 窗格
    J2EE Navigator 窗格

  2. 現在通過單擊加號(+)展開 Web 項目樹,以顯示如圖 12 所示的ApplicationResources.properties 文件。如果 J2EE 窗格非常小,可以在標題上按鼠標右鍵以彈出上下文菜單,然後最大化該窗格。

    圖 12. 展開的 J2EE Navigator 窗格
    展開的 J2EE Navigator 窗格

  3. 雙擊 MyBankWeb.Web Content.WEB-INF.classes.mybankweb.resources 中的 ApplicationResources.properties,以利用特性文件編輯器(Properties File Editor)打開它。請注意當您這樣做時 J2EE Navigator 窗格是如何恢復成以前大小的。儘管超出了本文的範圍,但是如果您願意,也可以使用其它編輯器。選擇 Window > Preferences,並且在首選項樹的 Workbench 部分的 File associations 下面進行查看。

    除去 errors.header 和 errors.footer 特性前的 #。在 errors.footer 特性之後添加如下面清單所示的那些行。

    提示:Linux 的應用程序有時候會共享剪貼板,但並非始終如此。在共享的情況下,Edit >
    copy(ctrl-C)和 Edit >
    paste(ctrl-V)通常分別用做複製和粘貼。如果這無法工作,那麼如果您有一個三鍵鼠標(或者如果您已經對鼠標進行了設置,通過協調兩個按鍵

    即同時按下兩個按鍵來模擬三鍵鼠標),通常有一個較為「古老」的方法可以使用。按下鼠標左鍵,在某個窗口的文本上拖動鼠標,然後使用中間的按鍵(或在
    2 鍵鼠標上同時按下兩個按鍵)將突出顯示的文本粘貼進編輯器窗格。您可以在一個窗口中或多個窗口之間使用這個便捷的技巧。

    清單 1. 將這些行添加到 ApplicationResources.properties 文件中的 errors.footer 特性之後

    # Optional header and footer for <errors/> tag.
    errors.header=<ul>
    errors.footer=</ul>
    index.title=MyBank Application
    button.login=Login
    global.field.userid=User ID
    global.field.password=Password
    error.login.nouserid=<li>You must enter a User ID.
    error.login.nopassword=<li>You must enter a Password.
    error.login.failed=<li>Invalid User ID and/or Password entered.
    error.login.exception=<li>Exception occurred in action.


  4. 剛剛添加的值將表示 JSP 文件中的顯示輸出。請注意,我們的出錯消息是以無序列表中的列表元素的形式顯示的。保存並關閉
    ApplicationResources.properties 文件。在缺省的編輯器中,如果您願意,可以使用鍵盤快捷鍵:Ctrl-s
    將保存文件,Ctrl-F4 將關閉該窗格。

Struts 應用程序圖
在這一步中,我們將返回到備忘單,並且創建 Struts 應用程序圖,我們將用它來設計和構建我們的應用程序組件。

  1. 單擊左邊導航欄中的備忘單圖標以將其恢復成圖 10 中的備忘單。單擊 Perform 按鈕創建新的 Web 圖。

    如果您沒在使用備忘單,那麼通過單擊工具欄按鈕(New 嚮導按鈕)(或選擇 File > New > Other.... )可以打開 New 嚮導。在 Select 對話框的左邊窗格上,展開 Web 並選擇 Struts。在右邊的窗格中選擇 Web Diagram。單擊 Next

    註:如果您不喜歡使用 Struts 應用程序圖,那麼通過使用 File > New > Other... 下可用的新建文件嚮導,然後選擇Web > Struts 和您希望構建的組件,您仍可以為該項目創建每個組件。

  2. 在 File name 域中輸入 Login。單擊 Finish

    圖 13. 創建新的 Web 圖
    創建新的 Web 圖



    Struts 應用程序圖文件 Login.gpf 是用 SADE(Struts
    應用程序圖表編輯器)創建和打開的。現在將在自由窗體界面(Free Form Surface,FFS)上布置您的 JavaServer
    Pages、表單 Bean 和 Action
    Bean。我們將使用下列位於編輯器上方的工具欄按鈕。(除非您將鼠標移動到這些按鈕上方,否則它們是灰色的,不可點擊。)

    連接圖標
    連接(Connection)
    繪製從選定節點到目標節點的連接
    操作映射圖標
    操作映射節點(Action Mapping Node)
    使光標準備就緒以將新的操作映射放到 FFS 上
    表單 bean 圖標
    表單 Bean 節點
    使光標準備就緒以將新的表單 bean 節點放到 FFS 上
    java bean 圖標
    Java Bean 節點
    使光標準備就緒以將新的 java bean 節點放到 FFS 上
    Web 頁面圖標
    Web 頁面節點
    使光標準備就緒以將新的 Web 頁面放到 FFS 上

  3. 我們現在將創建 Web 頁面對象。首先單擊工具欄中的「新建 Web 頁面節點(New Web Page Node)」按鈕(Web 頁面圖標)(或者在圖表編輯器界面中單擊鼠標右鍵,然後選擇 New > Web Page Node),然後在圖表編輯器的左邊單擊以放下 Web 頁面節點。將該頁面的路徑從缺省的 /page.jsp 更改為 /index.jsp,然後按 Enter。在新的 JSP 上單擊鼠標右鍵以彈出上下文菜單,然後選擇 Change description。輸入 Login entry page 的描述,並按 Enter。您的 FFS 現在應當看起來如圖 14 所示。如果弄錯了路徑或描述,可以使用上下文菜單更改它們。

    圖 14. 創建新的 JSP
    創建新的 JSP

  4. 以同樣的方式,在 FFS 上創建另兩個新的 Web 頁面節點,並將它們的路徑名分別更改為 /home.jsp/error.jsp,如圖 15 所示。如果願意,可以添加描述。

    圖 15. 創建其它 JSP
    創建其它 JSP

  5. 以類似的方式,將操作映射節點(操作映射圖標)放在 FFS 的中間,並將其路徑設置為 /login。然後創建表單 Bean 對象(表單 Bean 圖標)。在 Form Bean Attributes 中,在 Name 域中輸入 loginForm,並保留 Scope 為 request。單擊 OK

    圖 16. 創建表單 bean
    創建表單 bean

  6. 現在我們將創建節點之間的連接。Struts 圖連接是一條線,它表示了兩個 Struts 節點之間的邏輯流或數據流。要創建連接,請單擊工具欄中的「連接兩個節點(Connect Two Nodes)」按鈕(連接圖標)。首先單擊源對象,再單擊目標對象,以在編輯器中創建兩個節點之間的連接。
    1. index.jsp(登錄入口)頁面連接到 login 操作映射。
    2. login 操作映射連接到 home.jsp 頁面。將連接 的轉發名(forward name)替換為 success,然後按 Enter。如果稍後需要更改連接的轉發名,只需在連接線上單擊鼠標右鍵,然後選擇Edit the forward name
    3. login 操作映射連接到 error.jsp 頁面。將連接 的轉發名替換為 failure,然後按 Enter
    4. error.jsp 頁面連接到 index.jsp(登錄入口)頁面。
    5. index.jsp(登錄入口)頁面連接到 loginForm Bean。


    建立了這些連接後,應當擁有一個類似圖 17 的布局。

    圖 17. 添加連接
    添加連接


    請注意,對像是灰色的,連接是用虛線表示的,因為它們尚未實現。

實現 JavaServer Pages
現在我們將返回到備忘單,以實現我們的 JSP:index.jsp(登錄入口頁面)、主頁和出錯頁面。

  1. 再次顯示備忘單,並在 Create the JSPs (WebPages) and Beans 部分中單擊 Perform 按鈕。在產生的窗口上,展開 MyBankWeb 並單擊一次以選擇 Login 表單,然後單擊 OK。將打開一個新窗口,其中帶有一個未實現的 JSP 和表單 bean 的檢查表。我們將從 index.jsp 著手,所以選擇它並單擊 OK(或者雙擊它)。

    圖 18. 未實現的 JSP 和 bean 的列表
    未實現的 JSP 和 bean 的列表

  2. 現在我們將使用頁面設計器(Page Designer)來創建 index.jsp。
    1. 將打開新建 JSP 嚮導。如果您並未在使用備忘單,也可以打開該嚮導,即通過在應用程序圖(Login.gph)中的 index.jsp 節點上雙擊。File Name 已被設置為 index,而 Model 被設置為 Struts JSP。單擊 Finish

      圖 19. 新建 JSP 嚮導
      新建 JSP 嚮導

    2. 頁面設計器將以設計方式(Design mode)啟動。在開始編輯我們的 JSP 之前,我們將為您介紹 Studio IDE 中的一些便捷的視圖。從 IDE 左下方窗格中的選項卡(Gallery、Library 和 Outline ……)單擊 Outline 選項卡以選擇 outline 視圖,這將向我們提供樹結構的 JSP outline 視圖,該視圖將有助於我們確保我們的頁面結構是正確的。

      右下窗格包含一條表明 /login 目標不存在的消息。我們需要編輯幾個特性,所以這裡我們將打開 properties 視圖。要做到這一點,請選擇Window > Show View > Other。在彈出的對話框中,展開 Basic,選擇Properties,然後單擊 OKProperties 選項卡將被添加到右下窗格,該窗格將在 Properties 視圖中打開。您的屏幕現在應當如圖 20 所示。

      圖 20. Outline 和 Properties 視圖
      Outline 和 Properties 視圖

    3. 現在我們回過頭創建 JSP。應當已經存在了一個 標記集(由一個邊框所表示的),其操作被設置為 /login,以調用登錄操作映射。在邊框中單擊以選擇它。當它被選中時您會看到框的輪廓發生變化。還應在 Outline 視圖中選擇 html:form 元素。一旦選擇了它,單擊 JSP 菜單並選擇 Insert Custom

      圖 21. 頁面設計
      頁面設計

    4. 如圖 22 所示選擇 beanmessage。單擊 Insert。選擇 htmltext,並再次單擊 Insert。然後單擊 Close。這將插入一個用於用戶標識提示的消息 bean,以及一個要求用戶輸入標識的文本域。請注意 Outline 視圖中的其它項。

      圖 22. 添加消息 bean 和文本域
      添加消息 bean 和文本域

    5. 在上一個步驟中插入到登錄表單的消息 bean 定製標記應當有表明 Missing message for key

      的文本。單擊該 bean:message 定製標記以選擇它(或者在 Outline 視圖中選擇它)。這將在 Properties 視圖中顯示
      bean 的特性。如果 Properties 視圖非常小,您可能希望把它放大,這可以象圖 23
      中所做的那樣,通過使用鼠標左鍵拖動它的上部將其往上拉來做到這一點。向下滾動 Properties 視圖,然後將消息的 key 特性更改為 global.field.userid。按 Enter。這將在應用程序資源文件中使用與 global.field.userid 相關的文本。用同樣的方法,選擇您插入的 html:text 定製標記,並將其 property 特性更改為 userid。這將是用戶標識變量在 Java 代碼中的名稱。當您更改特性時,可能會有一些延遲,這取決於您的處理器速度和所擁有的 RAM 數量。

      圖 23. 設置消息 bean 的 key 特性
      設置消息 bean 的 key 特性

    6. 將光標放到 html:text 域之後,然後按 Enter 插入一個換行符(BR)。現在我們將插入其它兩個定製元素,以創建我們的密碼提示和輸入域,所以請單擊 JSP 菜單然後選擇 Insert Custom。選擇 beanmessage,並單擊 Insert。選擇 htmlpassword,然後單擊 Insert 以添加密碼輸入域。單擊 Close。將新的消息 bean 的 key 特性設置為 global.field.password,並單擊Enter。將 property 特性設置為 password,然後單擊 Enter。您的屏幕看上去應當象圖 24。

      圖 24. 添加密碼提示和輸入域
      添加密碼提示和輸入域

    7. 既然已經定義了數據輸入域,我們需要一個按鈕來提交該表單。將光標放在 html:password 域之後並按兩次 Enter,以插入兩個換行符。現在使用 JSP 菜單並選擇 Insert Custom。現在選擇 htmlSubmit 並單擊 Insert,然後選擇 beanmessage,再次單擊 Insert。單擊Close。在 Properties 視圖中,輸入 button.login 作為新消息 bean 的 key 特性,並按 Enter。(如果您尚未運行 Help > Software updates 升級到 V5.0.1,那麼 button.login 文本可能不會立即出現在 Design 視圖中)。如果一切正常,您的屏幕現在看起來應該如圖 25。

      圖 25. 添加提交按鈕
      添加提交按鈕

    8. 在表單上方(在它外面)單擊鼠標左鍵以添加標題標記。您的光標應該正好在表單前面。Outline 視圖應當突出顯示「BODY」。從菜單欄選擇 Format > Paragraph > Heading 1。通過插入另一個 bean:message JSP 定製標記來添加 Login 頁面標題文本。將 key 特性設置為 index.title 並按 Enter。應當出現 MyBank Application 標題。

      圖 26. 添加頁面標題
      添加頁面標題

    9. 在標題和表單之間的位置上單擊鼠標左鍵。然後插入另一個 JSP 定製標記html:errors

      圖 27. 添加 html:errors 標記
      添加 html:errors 標記

    10. 通過單擊 Source 選項卡可以查看我們頁面的源文件。Login 入口頁面的 Source 視圖如圖 28 所示。請注意 action="/login" 旁邊有一個警告,因為我們尚未為其定義操作映射。

      圖 28. Source 視圖
      Source 視圖

    11. 使用 File > Save index.jsp 保存 JSP,然後使用 File > Close 關閉它。請注意應用程序圖中的 index.jsp 節點現在加上了色彩,表明它已經實現了。在備忘單的 JSP 和 bean 列表中還有一個選中標記。
  3. 既然創建了 Login 入口頁面(index.jsp),現在可以創建網站的 home.jsp 頁面。
    1. 象上一步對 index.jsp 節點所做的那樣,在備忘單的 JSP 和 bean 列表中選擇 home.jsp 項,然後單擊 OK;或者在應用程序圖(Login.gph)中雙擊 home.jsp 節點。這將啟動 New JSP File 嚮導。File Name 已被設置為 home.jsp,而 Model 被設置為 Struts JSP。單擊 Finish
    2. 切換到頁面設計器的 Source 視圖,並且刪除文本

      Place home.jsp's content here.

      。用下面這些行代替它以實現主頁:(為了節省時間您可以複製/粘貼下面的代碼。)
      <h1><bean:message key="index.title"/></h1>
      
      <h2>Welcome <bean:write name="loginForm"  property="userid"/></h2>
      <h2>To MyBank Home Page</h2>

      請注意,主頁正在使用 loginForm 的用戶標識 bean 特性來輸出用戶標識的輸入。考慮將如何在 Design 視圖中添加 bean:write。還請注意 H2 元素並未使用來自應用程序資源文件的文本,而是在使用靜態文本。正如我們在前面所說的,我們在此說明兩種方法,但是像這樣混合使用文本源不是好的做法。
    3. 切換到 Design 視圖以查看該頁面的外觀。然後保存並關閉 home.jsp。
  4. 現在已經創建了 index.jsp 和 home.jsp 頁面,您可以創建 error.jsp 頁面了。
    1. 在應用程序圖(Login.gph)中,就像您在前面步驟中對 index.jsp 節點所做的那樣雙擊 error.jsp 節點。這將啟動 New JSP File 嚮導。Model 和 File Name 已經設置好了。單擊 Finish
    2. 在頁面設計器的 Source 視圖中,刪除文本

      Place home.jsp's content here.

      。利用下面這些行替代它以實現出錯頁面:(為了節省時間您可以複製/粘貼下面的代碼。)
      <h1><bean:message key="index.title"/></h1>
      
      <h2>Error Page</h2>
      <p>
      <html:errors/>
      <p>
      <a href="index.jsp"><b>Return to Login Page</b></a>
    3. 切換到 Design 視圖以查看該頁面的外觀。然後保存並關閉 error.jsp。
  5. 現在,應用程序圖上的所有三個 JSP 頁面都應當添加了色彩。

    圖 29. 帶有已實現的 JSP 的應用程序圖
    帶有已實現的 JSP 的應用程序圖

實現 ActionForm 類

  1. 現在需要實現 loginForm 類以處理來自 index.jsp 的輸入。這個 ActionForm 類將包含一個字段,以及用於輸入表單中每個域的取值方法(getter 和 setter),並且將提供簡單的域檢查。要幫助實現該類,您將使用 New ActionForm Class 嚮導。創建 ActionForm 類之後,然後您將把代碼添加到該類中的 validate 方法。
    1. 在應用程序圖(Login.gph)中,雙擊 loginForm 節點。這將啟動 New ActionForm Class 嚮導。ActionForm 類名已經被設置為 LoginForm。單擊 Next如果 Next 按鈕被任務欄遮蔽了,那麼您可能必須最小化任務欄,或者將它拖到屏幕的另一邊。

      圖 30. 啟動 ActionForm 嚮導
      啟動 ActionForm 嚮導

    2. 在「Choose new accessors for your ActionForm class」上,展開 MyBankWeb、Web Pages、index.jsp 和 /login。對於 Choose Accessors,請選擇 text:useridpassword:password。單擊 Next。(註:如果您未看到 text:userid 和 password:password,您可能需要關閉 WebSphere Studio,然後重新啟動它。)

      圖 31. 選擇取值方法
      選擇取值方法

    3. 下一個頁面顯示了已選擇的新取值方法(New Accessors)。單擊 Next
    4. 下一個頁面為您的 ActionForm 類創建映射。請檢查 Configuration File Name 為 WEB-INF/struts-config.xml,而 Mapping Name 為loginForm。單擊 Finish

      圖 32. 配置文件名和映射名
      配置文件名和映射名

    5. Java 編輯器現在將打開 LoginForm.java。請注意,該嚮導已為您創建了 ActionForm 類的大部分內容,包括兩個字段(userid 和 password)及其 setter 和 getter 方法。向下滾動文件至 ActionErrors validate 方法(接近源文件的底部),用以下代碼替代該方法。
      public ActionErrors validate(
      ActionMapping mapping,
      HttpServletRequest request) {
      
      ActionErrors errors = new ActionErrors();
      // Validate the fields in your form, 
      // adding each error to this.errors as found
       if ((getUserid() == null) || (getUserid().length() == 0))
      errors.add("userid", 
      new ActionError("error.login.nouserid"));
      if ((getPassword() == null) || (getPassword().length() == 0))
      errors.add("password", 
      new ActionError("error.login.nopassword"));
      return errors;
      } 
    6. 保存並關閉 LoginForm.java。(如果剛才必須最小化任務欄或將其移到不礙事的地方,那麼現在您可以恢復它。)
  2. 現在,您可以檢查 Struts 配置文件,也可以不檢查。在 J2EE Navigator 視圖中,雙擊 Web Content/WEB-INF/ 目錄中的 struts-config.xml,以便用 Struts 配置文件編輯器(Struts Configuration File Editor)打開它。選擇 Form Beans 選項卡並選擇 Bean Name 中的 loginForm。檢查配置文件之後關閉它。

    圖 33. 檢查 Struts 配置文件
    檢查 Struts 配置文件

  3. 關閉備忘單的 JSP 和 bean 列表。

實現操作映射(Action Mapping)和操作類(Action Class)
實現的最後一部分是實現登錄操作映射和 LoginAction 類。將用來自登錄表單的數據調用 LoginAction 類。該類可用於實現對業務邏輯的調用,就像包裝器類一樣。它還可用於確保調用業務邏輯的狀態和條件是正確的。在本練習中,通過檢查用戶標識和密碼,用它來驗證用戶的權限。


驗證用戶標識和密碼,通常將 LTPA 和權限 LDAP 目錄(例如 IBM Directory)或者其它一些權限管理支持(例如 IBM
Policy Director)一起使用。在本示例中,將只根據固定的用戶標識和密碼(userid/password)檢查用戶標識和密碼。

  1. 顯示備忘單。您應當正在查看 Create the actions 部分。單擊 Perform 按鈕以打開未實現操作的列表。
    1. 就像在上面對 JSP 和 bean 所做的那樣,選擇未實現的操作並單擊 OK。這將打開 New Action Mapping 嚮導以創建我們的操作映射和操作類。如果您並未在使用備忘單,那麼雙擊應用程序圖(Login.gph)中的 login 操作映射節點。這樣會啟動 New Action Mapping 嚮導。Configuration File Name 已經被設置為 WEB-INF/struts-config.xml,Mapping Path 被設置為 /login,Forwards 中,Name 被設置為您定義的名稱(successfailure)。從 Form Bean Name 下拉菜單選擇 loginForm。從 Form Bean Scope 下拉菜單選擇 request。單擊 Next

      圖 34. New Action Mapping 嚮導
      New Action Mapping 嚮導

    2. 在「Create an Action class for your mapping」上,Action Class Name 已經被設置為 LoginAction。單擊 Finish。我們不再需要備忘單的操作列表了,所以在它上面單擊 Close
    3. Java 編輯器將打開 LoginAction 類文件。向下滾動到 perform 方法,並利用下列代碼替換它。
      public ActionForward perform(
        ActionMapping mapping,
        ActionForm form,
        HttpServletRequest request,
        HttpServletResponse response)
        throws IOException, ServletException {
        ActionErrors errors = new ActionErrors();
        ActionForward forward = new ActionForward();
        // return value 
        LoginForm loginForm = (LoginForm) form;
        try {
          // do something here
          if (!loginForm.getUserid().equals("userid")
            || !loginForm.getPassword().equals("password"))
            errors.add("login", new ActionError("error.login.failed"));
        } catch (Exception e) {
          // Report the error using the appropriate name and ID.
          errors.add("login", new ActionError("error.login.exception"));
        }
        // If a message is required, save the specified key(s)
        // into the request for use by the <struts:errors> tag.
        if (!errors.empty()) { 
          saveErrors(request, errors);
          // Forward control to the failure URI
          forward = mapping.findForward("failure");
        } else {
          // Forward control to the success URI
          forward = mapping.findForward("success");
        }
        // Finish with
        return (forward);
      }
    4. 保存並關閉 LoginAction.java。既然已實現了所有組件,那麼 Login.gph 上的組件現在都是有顏色的了。

      圖 35. 應用程序圖中的所有組件都已實現
      應用程序圖中的所有組件都已實現

  2. 既然已實現了 LoginAction 類,您可以檢查 Struts 配置文件以查看圖表編輯器(Diagram Editor)和嚮導做了哪些更改。
    1. 在 J2EE Navigator 視圖中,雙擊 Web Content/WEB-INF/ 目錄中的 struts-config.xml 以在 Struts 配置文件編輯器(Struts Configuration File Editor)中打開它。
    2. 選擇 Actions 選項卡。然後在 Action Path 中選擇 /login。如果尚未設置好,那麼在 Input 域中輸入 /index.jsp。Specify
      Forwards 的域應當由圖 34 中 Forwards 域的 Name 中為 JSP 頁面指定的名稱填充,這些名稱分別與對應的 JSP
      頁面相關(success 與 /home.jsp 相關,而 failure 與 /error.jsp 相關)。

      圖 36. 設置操作輸入
      設置操作輸入

    3. 現在,通過選擇 XML Source 選項卡來檢查 struts-config.xml 文件的 XML 源代碼。
    4. 保存和關閉 struts-config.xml 文件。

測試 Struts 應用程序
既然已經完成了 Struts 應用程序,那麼可以利用內置的 WebSphere V5.0 測試環境(Test Environment)測試它。

  1. 再次顯示備忘單。您應該正好看到 Run the Web Application 部分。單擊執行按鈕(黑色箭頭)。如果您沒有使用備忘單,那麼可以在 J2EE Navigator 窗格中選擇 index.jsp。然後用鼠標右鍵單擊 index.jsp,並選擇 Run on Server ...
  2. 在 Server selection 對話框中,選擇 WebSphere V5.0 Test Environment 並單擊 OK

    圖 37. 設置操作輸入
    設置操作輸入

  3. 該項目將被發布到測試環境服務器上。將啟動服務器(Server),並且打開控制台(Console)視圖。當服務器準備就緒時,控制台將顯示一條以「Server server1 open for e-business」結尾的消息,該消息後面跟著另一條以 /index.jsp: init 結尾的消息。

    圖 38. 服務器測試環境啟動
    服務器測試環境啟動



    註:現在如果您關閉已完成的備忘單,那麼查看控制台將更容易。
  4. 然後 index.jsp 將在 Web 瀏覽器中打開。輸入用戶標識 userid 和密碼 password。單擊 Login

    圖 39. 登錄
    登錄

  5. 稍候片刻,應用程序將顯示 .jsp 頁面:

    圖 40. MyBank 主頁
    MyBank 主頁

  6. 單擊瀏覽器的 Back 按鈕,並嘗試輸入不同的用戶標識或密碼,以查看出錯頁面。單擊 Login

    圖 41. 出錯頁面
    出錯頁面

  7. 然後將在 Web 瀏覽器中打開 index.jsp。輸入用戶標識 userid 和密碼 password。單擊 Login

    圖 42. 未輸入用戶標識或密碼
    未輸入用戶標識或密碼

結束語

喜您!您剛才已經創建了一個基於 Struts 的 Web 應用程序。您使用 WebSphere Studio 構建了 JavaServer
Pages、ActionForm、操作類和操作映射。您使用 Struts 應用程序圖表編輯器(Struts Application
Diagram Editor)設計和創建了您的應用程序。然後您利用 WebSphere Studio V5.0 測試環境(它包含在
WebSphere Studio 中)測試了您的應用程序。如果您有任何問題,請訪問我們的技術支持論壇

致謝
非常感謝 Ian Shields 為 Struts 備忘單補充了材料,並增加了有關 WebSphere Studio IDE 的使用技巧,他還通過大量的測試進行了其它許多修改。

參考資料

內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|