摘要:Struts是基于MVC模型的Web應用軟件開發框架,文中闡述了Struts的體系結構及主要組成組件,并以BBS系統實現為實例,討論如何設計基于Struts框架的應用,同時也分析了使用Struts框架開發web應用的優勢。
關鍵詞:Struts;模型;視圖;控制器;MVC
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2009)15-3951-02
The Design and Implement of Web Application System Based on Struts Framework
ZHANG Wei1,2, GAO Yuan1
(1.Anyang Institute of Technology, Anyang 455000, China; 2.Master in East China Normal University, Shanghai 200062, China)
Abstract: Struts is the Web-application development framework based on MVC model, the paper explain clearlythe architecture and key component parts of Struts, and take BBS systems implementation as an example to discuss how to design applications based on Struts framework, also analyzed the advantages of using the struts framework in web application development.
Key words: Struts; model; view; controller; MVC
1 引言
隨著Internet技術的發展,基于MVC(Model-View-Controller)模型的Struts框架越來越受到web系統開發者的歡迎。Struts是建立在當前動態網站設計領域中JSP、Servlet、XML等相關開發技術基礎之上的一種主流開發架構,具有組件模塊化、靈活性和重用性的優點,同時極大地簡化了Web應用程序的開發。它合理地將用戶表示邏輯、業務邏輯和控制邏輯分離,使得開發過程變得簡潔清晰,并提高了軟件的可維護性和可重用性。
2 Struts框架
2.1 Struts體系結構
Struts是Apache 基金會Jakarta 項目組的一個Open Source 項目,它采用MVC模式,能夠很好地幫助java 開發者利用J2EE開發Web應用。和其他的java架構一樣,Struts 也是面向對象設計,將MVC模式\"分離顯示邏輯和業務邏輯\"的能力發揮得淋漓盡致。Structs 框架的核心是一個彈性的控制層,基于如 Java Servlets,JavaBeans,ResourceBundles與XML等標準技術,以及 Jakarta Commons 的一些類庫。Struts有一組相互協作的類(組件)、Serlvet以及jsp tag lib組成。基于struts構架的web應用程序基本上符合JSP Model2的設計標準,可以說是一個傳統 MVC設計模式的一種變化類型。
Struts體系結構實現了MVC設計模式的概念,它將Model、View和Controller分別映射到Web應用中的組件。Model由代表系統狀態和商業邏輯Action來構建,View是由JSP和struts提供的自定義標簽來實現,Controller負責控制流程,由ActionServlet和ActionMapping來完成。
2.2 主要組件介紹
下面我們就從分別從視圖、控制、模型和Struts的配置文件struts-config.xml來介紹struts的體系結構。圖1所示。
1) 視圖:主要由JSP建立,Struts自身包含了一組可擴展的自定義標簽庫(Tag1 ib),可以簡化創建用戶界面的過程。
2) 模型:模型主要是表示一個系統的狀態和業務邏輯。在Struts中,系統的狀態主要由ActiomForm Bean體現,對于業務邏輯通常由JavaBean或EJB組件來實現。
3) 控制器:控制器主要由ActionServlet類和Action類來實現,ActionServlet類是Struts框架中的核心組件,主要負責接收HTTP請求信息。根據配置文件struts-config.xml的配置信息,把請求轉發合適的Action對象。Action類負責調用模型的方法,更新模型的狀態,并幫助控制應用程序的流程。
4) 配置文件struts-config.xml:當ActionServlet接收HTTP請求信息時,如何決定把用戶請求轉發給哪個Action對象呢?這就需要一些描述用戶請求路徑和Action映射關系的配置信息。在Struts中.這些配置映射信息都存儲在特定的XML 文件Struts—config.xml中,在該配置文件中,每一個Action的映射信息都通過一個(action)元素來配置。這些配置信息在系統啟動時會被讀入內存,供Struts在運行期間使用,在內存中,每一個(action)元素都對應一個ActionMapping類的實例。
3 基于Struts框架BBS系統實現
BBS論壇是電子商務網站中一種常見的功能,它為上網用戶提供了一個自由的討論區。用戶可以根據需要在論壇上發表文章,提出問題并表達自己的觀點,俗稱發帖子或灌水。與此同時,上網用戶也可以在論壇中瀏覽其他人發表文章,并能對該文章進行回復。故一個典型的BBS系統一般應提供如下功能:①會員管理,②討論區文章查閱,③發表新文章,④后臺管理。
運用Struts框架實現BBS,首先把應用分解為模型、視圖和控制器來實現,這樣就將業務邏輯和表現層分開,提高軟件可擴展性和良好的邏輯性,改變了傳統Web開發設計模式。然后運用struts-config.xml配置文件將三者組裝起來,協調它們完成相應的功能。下面將以BBS中用戶登陸為例按照MVC架構來詳述實現過程。
3.1 創建視圖組件
在視圖中主要包括兩個組件:用戶登錄頁面bbsLogin.jsp,是struts的輸入顯示頁面;登錄失敗頁面wrong.jsp;是用戶登錄失敗后顯示的頁面。它們都保存在Web應用目錄bbs下。
3.2 創建模型組件
模型組件文件UserInfo.java是處理業務邏輯的JavaBean, 封裝了與論壇用戶相關的所有信息,同時也定義了所有與論壇用戶信息處理相關的方法。例如檢查用戶身份的方法以及查找、刪除、編輯、存儲用戶信息等。通過Action類派生的子類LoginAction訪問UserInfo.java實現對業務邏輯的處理。如果模型組建處理的業務比較復雜可以使用EJB或其他J2EE組件來實現。注意業務邏輯層對應的類所在的包應該部署在bbs/WEB-INF/classes下。
3.3 創建控制器組件
控制器組件作為整個Struts架構的控制中心,包括了ActionServlet、Action Bean、ActionForm Bean、以及相關配置文件web.xml、struts-config.xml及資源包。ActionServlet類是框架自帶的,是整個Struts框架的控制樞紐,通常不需要擴展。
3.3.1 聲明及定義LoginActionForm.java
該Javabean用于收取用戶登錄頁面提交的表單數據。注意ActionFormBean中屬性名稱一定要對應用戶表示層JSP頁面中的表單元素名稱及超鏈接參數名。
3.3.2 聲明及定義LoginAction.java
LoginAction負責處理客戶端提交請求,其主要功能是依據接收到的不同請求,通過LoginActionForm中得到對應的提交表單數據,調用業務邏輯層中對應的UserInfo.java進行處理。最終將結果傳給用戶表示層JSP頁面,顯示在用戶面前。
3.3.3 配置文件定義
web.xml主要實現了對ActionServlet進行配置,同時還必須聲明Web表示層中所使用的struts標簽庫。針對本應用Struts-config.xml配置如下:
<form-beans>
<form-bean name=\"loginForm\" type=\"bbs.LoginForm\"/>
</form-beans>
<global-forwards>
<forward name=\"LoginSuccessed\" path=\"/bbsMain.jsp\"/>
<forward name=\"LoginFailed\" path=\"/wrong.jsp\"/>
</global-forwards>
<action-mappings>
<action path=\"/login\" type=\"bbs.LoginAction\" name=\"loginForm\" scope=\"session\" input=\"/bbsLogin.jsp\" />
</action-mappings>
4 結束語
在Web應用開發中,Struts技術只實現了Web層的應用框架,但它是一個具有良好擴展性和不斷完善的框架,結合J2EE核心設計模式,可構建出相當穩定的基于MVC應用框架,利用這樣應用框架不但能縮短開發時間,還能夠實現框架和代碼的重用,是未來web應用開發的主要技術方向之一。
參考文獻:
[1] 周寶剛,劉杰,李成.基于Struts的WEB頁面構建系統[J].電腦知識與技術,2008(4):695-698.
[2] 劉杰.Struts——基于MVC的Web開發框架[J].電腦知識與技術,2007(18):1677-1678.
[3] 賴英旭,李毛毛,劉增輝.MVC模式在B/S系統開發中的應用研究[J].微計算機信息,2006,22(30):62-64,113.
[4] 孫衛琴.精通Struts基于MVC的Web設計與開發[M].北京:電子工業出版社,2004.