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

Struts應用實例:Helloapp應用

編輯:JAVA編程入門知識

  本章講解了一個簡單的Struts應用例子helloapp應用,這個例子可以幫助讀者迅速入門,獲得開發Struts應用的基本經驗。該應用的功能非常簡單,接受用戶輸入的姓名<name>,然後輸出"Hello <name>" 。開發helloapp應用涉及以下內容: 
  
      分析helloapp應用的需求 
  
      在開發應用時,首先從分析需求入手,列舉該應用的各種功能,以及限制條件。helloapp應用的需求非常簡單,包括如下需求:
      ?接受用戶輸入的姓名<name>,然後返回字符串"Hello <name> !" 
      ?假如用戶沒有輸入姓名就提交表單,將返回出錯信息,提示用戶首先輸入姓名。
      ?假如用戶輸入姓名為"Monster",將返回出錯信息,拒絕向"Monster"打招呼。
      為了演示模型組件的功能,本應用使用模型組件來保存用戶輸入的姓名。 
  
      運用Struts框架 
  
      下面把Struts框架運用到helloapp應用中。Struts框架可以方便迅速的把一個復雜的應用劃分成模型、視圖和控制器組件,而Struts的配置文件struts-config.XML則可以靈活的組裝這些組件,簡化開發過程。
      以下是helloapp應用的各個模塊的構成:
      ?模型包括一個JavaBean組件PersonBean,它有一個userName屬性,代表用戶輸入的名字。它提供了get/set方法,分別用於讀取和設置userName屬性,它還提供一個save()方法,負責把userName屬性保存到持久化存儲系統中,如數據庫或文件系統。對於更為復雜的Web應用,JavaBean組件可以作為EJB或Web服務的前端組件。
      ?視圖包括一個jsp文件hello.jsp,它提供用戶界面,接受用戶輸入的姓名。視圖還包括一個ActionForm Bean,它用來存放表單數據,並進行表單驗證,假如用戶沒有輸入姓名就提交表單,將返回出錯信息。 
      ?控制器包括一個Action類HelloAction,它完成三項任務:1.進行業務邏輯驗證,假如用戶輸入的姓名為"Monster", 將返回錯誤消息;2.調用模型組件PersonBean的save()方法,保存用戶輸入的名字;3.決定將合適的視圖組件返回給用戶。 
  
      除了創建模型、視圖和控制器組件,還需要創建Struts的配置文件struts-config.xml,它可以把這些組件組裝起來,使它們協調工作。此外,還需要創建整個Web應用的配置文件web.xml。 
  
      創建JSP文件和ActionForm Bean 
      本例中,視圖包括兩個組件:
      ?一個JSP文件:hello.jsp
      ?一個ActionForm Bean: HelloForm Bean
      下面分別講述如何創建這兩個組件。 
  
      Struts框架的數據驗證功能 
      幾乎所有和用戶交互的應用都需要數據驗證,而從頭設計並開發完善的數據驗證機制往往很費時。幸運的是,Struts框架提供了現成的、易於使用的數據驗證功能。 
  
      創建控制器組件:HelloAction.java 
      控制器組件包括ActionServlet類和Action類。ActionServlet類是Struts框架自帶的,它是整個Struts框架的控制樞紐,通常不需要擴展。Struts框架提供了可供擴展的Action類,它用來處理特定的HTTP請求,例程2-4為HelloAction類的源程序。 
  
      創建模型組件:PersonBean.java 
      PersonBean是一個非常簡單的JavaBean,它包括一個userName屬性,以及相關的get/set方法。此外,它還有一個業務方法saveToPersistentStore()。 
  
      創建存放常量的Java文件
      HelloAction類和視圖組件之間通過HttpServletRequest的setAttribute()和getAttribute()方法來共享request范圍內的數據。下面再看一下HelloAction類調用HttpServletRequest的setAttribute()方法的細節。 
  
      創建Web應用和Struts框架的配置文件 
      對於Struts應用,它的配置文件web.xml應該對ActionServlet類進行配置,此外,還應該聲明Web應用所使用的Struts標簽庫,本例中聲明使用了三個標簽庫: Struts Bean、Struts Html和Struts Logic標簽庫。 
  
      發布和運行helloapp應用
      helloapp應用作為Java Web應用,它的目錄結構應該符合Sun公司制定的Java Web應用的規范,此外,由於helloapp應用使用了Struts框架,因此應該把Struts框架所需的JAR文件和標簽庫描述文件TLD文件包含進來。 
  
      小結 
  
      本章通過簡單完整的helloapp應用例子,演示了如何把Struts框架運用到Web應用的開發中。通過這個例子,讀者可以把握以下內容:
      ?分析應用需求,把應用分解為模型、視圖和控制器來實現這些需求。
      ?利用Struts的標簽庫來創建視圖組件。視圖組件中的文本內容保存在專門的消息資源文件中,在JSP文件中通過Struts的bean:message標簽來訪問它,這樣可以很方便的實現Struts應用的國際化,支持多國語言。
      ?Struts框架采用ActionForm Bean把視圖中的表單數據傳給控制器組件。ActionForm Bean被存放在request或session范圍內,它能夠被JSP組件、Struts標簽以及Action類共享。
      ?數據驗證分為兩種類型:HTML表單驗證和業務邏輯驗證。表單驗證由ActionForm Bean的validate()方法來實現。業務邏輯驗證由Action類或模型組件來實現。
      ?ActionMessage可以表示數據驗證錯誤,它被保存在ActionMessages(或其子類ActionErrors)集合對象中。ActionMessages對象被保存在request范圍內,Struts的視圖組件可以通過html:errors標簽來訪問它。
      ?Action類的execute()方法調用模型組件來完成業務邏輯,它還能決定把客戶請求轉發給哪個視圖組件。
      ?模型組件具有封裝業務實現細節的功能,開發者可以方便的把模型組件移植到遠程應用服務器上,這不會對MVC的其它模塊造成影響。
      ?通過調用HttpServletRequest或HttpSession的setAttribute()以及getAttribute()方法,可以保存或訪問在request或session范圍內的Java對象,從而實現視圖組件和控制器組件之間信息的交互與共享。
      ?利用struts-config.xml文件來配置Struts應用。(T111) 
 

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