Struts框架結構

Struts框架結構  
  Struts是一個開放資源框架,包含了一系列相互的類、Servlet和JSP標記。Struts框架是基於MVC框架開發Web應用程序的具體應用。使用Struts框架可以將商業邏輯、控制和數據顯示功能模塊區分開來,這樣對其中一個模塊的改動不會影響到其他模塊。使用這一框架,開發人員可以分別集中開發商業邏輯模塊、應用程序控制模塊和數據顯示模塊,而不用擔心這三個模塊的耦合問題。  
  3.1   Struts框架體系結構  
  從MVC的角度來分析Struts框架中的各個組件,如圖2所示。ActionServlet負責接收來自瀏覽器的請求,並將HTTP請求轉發到框架中的其他對象,包括JSP頁。在初始時,它對配置文件(struts-config.xml)進行分析,然後根據其中定義的映射轉發相應的HTTP請求。在映射中必須指明請求的路徑和對象類型。Action對象對請求進行處理並將響應返回到客戶,或者指明控制應該轉發到何處。Action對象被鏈接到應用程序的ActionServlet,因此可以訪問它的方法。在進行控制轉移時,一個對象能夠將一個或多個共享對象放置到請求、會話或應用的作用域,從而間接地轉發它們。  
   
                                    圖2     基於MVC的Struts框架結構  
    在圖2所示Struts框架中,包括了客戶端瀏覽器、控制器、事物邏輯、模型和視圖五個組成部分。  
  1)   客戶瀏覽器   (Client   Browser)  
  來自客戶測覽器的每個HTTP請求創建一個事件。Web容器將用一個HTTP響應作出迴應。  
  2)   控制器(Controller)  
  控制器接收來自瀏覽器的請求,並決定將這個請求發往何處。就Struts而言,控制器是以Servlet實現的一個命令設計模式。struts-config.Xml文件配置控制器。  
  3)業務邏輯(Bussiness   Logic)  
  業務邏輯更新模型的狀態,並幫助控制應用程序的流程。就Struts而言,這是通過作爲實際業務邏包裝的Action類完成的。  
  4)模型   (Model)  
  模型表示應用程序的狀態。業務對象更新應用程序的狀態。ActionForm   Bean在會話級或請求級表示模型的狀態,而不是在持久級。JSP文件使用JSP標記讀取來自ActionForm   Bean的信息。  
  5)視圖(View)  
  視圖就是一個JSP文件。其中沒有流程邏輯,沒有業務邏輯,也沒有模型信息,只有標記。標記是使Struts有別於其他框架因素之一。  
  3.2   Struts框架中的組件  
  Struts框架所使用的一些組件如下表:  
  組件                                                     角色  
    ActionServlet                                           控制器  
    ActionClass                                             包含事物邏輯  
    ActionForm                                             顯示模塊數據  
    ActionMapping                                       幫助控制器將請求映射到操作  
    ActionForward                                       用來指示操作轉移的對象  
    ActionError                                             用來存儲和回收錯誤  
    Struts標記庫                                         可以減輕開發顯示層次的工作  
  下面通過對Struts框架中組件的介紹來說明Struts   框架是採用MVC模式創建Web應用程序的過程。:  
  1)   ActionServlet類  
          Struts的控制器是將事件(事件通常是   HTTP   post)映射到一個Servlet。控制器使用配置文件以使我們不必對這些值迸行硬編碼。ActionServlet是該MVC實現的Command部分,它是這一框架的核心。ActionServlet(Command)創建並使用Action、ActionForm和ActionForward。如前所述,struts-config.xml文件配置該Command。在創建Web項目時,將擴展Action和ActionForm來解決特定的問題。文件struts-config.xml指示ActionServlet如何使用這些擴展的類。這種方法有幾個優點:  
  1. 用程序的整個邏輯流程都存儲在一個分層的文本文件(struts-config.xml)中。這使得人們更容易查看和理解它,尤其是對於大型應用程序而言。  
  2. 頁設計人員不必費力地閱讀Java代碼來理解應用程序的流程。  
  3. Java開發人員也不必在更改流程以後重新編譯代碼。  
  4. 可以通過擴展ActionServlet來添加Command功能。  
  2)   ActionForm類  
  ActionForm維護Web應用程序的會話狀態。ActionForm是一個抽象類,必  
  須爲每個輸入表單模型創建該類的子類。輸入表單模型,是指ActionForm表示的由HTML表單設置或更新的一般意義上的數據。例如,您可能有一個由HTML表單設置的UserActionForm。Struts框架將執行以下操作:  
  1. 查UserActionForm是否存在;如果不存在,它將創建該類的一個實例。  
  2.Struts將使用HttpServletRequest中相應的域設置UserActionForm的狀態。不需要採用太多的request.getParameter()調用。例如,Struts框架將從請求流中提取fname,並調用UserActionForm.setFname()。  
  3. Struts框架在將UserActionForm傳遞給業務包裝UserAction之前將更新它的狀態。  
  4. 在將它傳遞給Action類之前,Struts還會對UserActionForm調用validation()方法進行表單狀態驗證。注意這並不總是明智之舉。別的網頁或業務可能使用UserActionForm在這些地方,驗證可能有所不同。在UserAction類中進行狀態驗證可能更好。  
  5. 可在會話級維護UserActionForm。在Struts框架裏,由struts-config.xml文件控制HTML表單請求與ActionForm之間的映射關係。  
  3)Action類  
          Action類是業務邏輯的一個包裝。Action類的用途是將HttpServletRequest轉換爲業務邏輯。要使用Action,請創建它的子類並覆蓋process()方法。  
          ActionServlet(Command)使用perform()方法將參數化的類傳遞給ActionForm。此時,輸入表單數據域(HTML表單數據)己被從請求流中提取出來並轉移到ActionForm類中。  
  擴展Action類時請注意簡潔。Action類應該控制應用程序的流程,而不應該控制應用程序的邏輯。通過將業務邏輯放在單獨的包或EJB中,我們就可以提供更大的靈活性和可重用性。  
  ActionServlet對具體業務類接口一無所知。因此,Struts提供了它能夠理解的一個業務接口,即Action。通過擴展Action,使業務接口與Struts業務接口保持兼容。Action開始爲一個接口,後來卻變成了一個類。  
    4)ActionError類  
          ActionError封裝了單個錯誤消息。ActionErrors是ActionError類的容器,View可以使用標記訪間這些類。ActionError是Struts保持錯誤列表的方式。  
  5)ActionMapping類  
          輸入事件通常是在HTTP請求表單中發生的,Servlet容器將HTTP請求轉換爲HttpServletRequest.控制器查看輸入事件並將請求分派給某個Action類。   strut-config.xml確定Controller調用哪個Action類。strut-config.xml配置信息被轉換爲一組ActionMapping而後者又被放入ActionMapping容器中。ActionMappings是ActionMapping對象的一個集合。  
          ActionMapping包含有關特定事件如何映射到特定Action的信息。ActionServlet(Command)通過Perform()方法將ActionMapping傳遞給Action類。這樣就使Action可訪問用於控制流程的信息。  
  圖3顯示了以上介紹的Struts框架組件之間的關係。  
     
                                        圖3   Struts框架的組件的關係  
            採用Struts框架開發Web應用程序可以實現清晰的分工,網頁設計人員可以只關心視圖的設計而不必瞭解業務邏輯和數據的操作;業務專家可以專心於系統業務邏輯的實現。同時,Struts框架降低了模塊之間的耦合度,頁面的修改不會影響業務邏輯的實現;業務邏輯的修改也很少涉及頁面的修改,有利於系統的維護和升級。  
  3.3   基於Struts框架開發Web應用程序的優勢  
  基於Struts框架開發Web應用程序簡化了基於MVC的應用程序的開發;提供了很多對象實現了MVC的基本特徵;允許開發人員使用XML文件來配置很多默認的框架;提供了一個靈活的體制來處理錯誤和異常;提供了一個方便的方法對應用程序的信息進行國際化;Struts框架具有組件的模塊化、靈活性和重用性的特點,同時簡化了基於MVC的Web應用程序的開發  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章