- 相關(guān)推薦
淺析使用struts框架開(kāi)發(fā)web應用的優(yōu)勢
摘要 Struts是目前Web開(kāi)發(fā)中比較成熟的一種框架,本文闡述了基于MVC模型的Web應用軟件開(kāi)發(fā)框架struts的體系結構及主要組成組件,并結合一個(gè)實(shí)例討論如何設計基于struts框架的應用,同時(shí)也分析了使用struts框架開(kāi)發(fā)web應用的優(yōu)勢。
關(guān)鍵詞 Struts;模型;視圖;控制器
近年來(lái),基于MVC(Model-View-Controller)模型的Struts框架越來(lái)越受到web系統開(kāi)發(fā)者的青睞。Struts是建立在當前動(dòng)態(tài)網(wǎng)站設計領(lǐng)域中JSP、Servlet、XML等相關(guān)開(kāi)發(fā)技術(shù)基礎之上的一種主流開(kāi)發(fā)架構,具有組件模塊化、靈活性和重用性的優(yōu)點(diǎn),同時(shí)極大地簡(jiǎn)化了Web應用程序的開(kāi)發(fā)。它合理地將用戶(hù)表示邏輯、業(yè)務(wù)邏輯和控制邏輯分離,使得開(kāi)發(fā)過(guò)程變得簡(jiǎn)潔清晰,并提高了軟件的可維護性和可重用性。
1 Struts框架
1.1 Struts體系結構
Struts是一種基于MVC經(jīng)典設計模式的開(kāi)放源代碼的應用框架,也是目前Web開(kāi)發(fā)中比較成熟的一種框架。通過(guò)把Servlet、JSP、JavaBean、自定義標簽和信息資源整合到一個(gè)統一的框架中,為Web開(kāi)發(fā)提供了具有高可配置性的MVC開(kāi)發(fā)模式。
Struts體系結構實(shí)現了MVC設計模式的概念,它將Model、View和Controller分別映射到Web應用中的組件。Model由代表系統狀態(tài)和商業(yè)邏輯Action來(lái)構建,View是由JSP和struts提供的自定義標簽來(lái)實(shí)現,Controller負責控制流程,由ActionServlet和ActionMapping來(lái)完成。
1.2主要組件介紹
下面我們就從分別從視圖、控制、模型和Struts的配置文件struts-config.xml來(lái)介紹struts的體系結構。
(1)視圖:主要由JSP建立,Struts自身包含了一組可擴展的自定義標簽庫(Tag1 ib),可以簡(jiǎn)化創(chuàng )建用戶(hù)界面的過(guò)程。
(2)模型:模型主要是表示一個(gè)系統的狀態(tài)和業(yè)務(wù)邏輯。在Struts中,系統的狀態(tài)主要由ActiomForm Bean體現,對于業(yè)務(wù)邏輯通常由JavaBean或EJB組件來(lái)實(shí)現。
(3)控制器:控制器主要由ActionServlet類(lèi)和Action類(lèi)來(lái)實(shí)現,ActionServlet類(lèi)是Struts框架中的核心組件,主要負責接收HTTP請求信息。根據配置文件struts-config.xml的配置信息,把請求轉發(fā)合適的Action對象。Action類(lèi)負責調用模型的方法,更新模型的狀態(tài),并幫助控制應用程序的流程。
(4)配置文件struts-config.xml:當ActionServlet接收HTTP請求信息時(shí),如何決定把用戶(hù)請求轉發(fā)給哪個(gè)Action對象呢?這就需要一些描述用戶(hù)請求路徑和Action映射關(guān)系的配置信息。在Struts中.這些配置映射信息都存儲在特定的XML 文件Struts—config.xml中,在該配置文件中,每一個(gè)Action的映射信息都通過(guò)一個(gè)(action)元素來(lái)配置。這些配置信息在系統啟動(dòng)時(shí)會(huì )被讀入內存,供Struts在運行期間使用,在內存中,每一個(gè)(action)元素都對應一個(gè)ActionMapping類(lèi)的實(shí)例。
2 基于Struts框架BBS系統實(shí)現
BBS論壇是電子商務(wù)網(wǎng)站中一種常見(jiàn)的功能,它為上網(wǎng)用戶(hù)提供了一個(gè)自由的討論區。用戶(hù)可以根據需要在論壇上發(fā)表文章,提出問(wèn)題并表達自己的觀(guān)點(diǎn),俗稱(chēng)發(fā)帖子或灌水。與此同時(shí),上網(wǎng)用戶(hù)也可以在論壇中瀏覽其他人發(fā)表文章,并能對該文章進(jìn)行回復。故一個(gè)典型的BBS系統一般應提供如下功能:①會(huì )員管理,②討論區文章查閱,③發(fā)表新文章,④后臺管理。
運用Struts框架實(shí)現BBS,首先把應用分解為模型、視圖和控制器來(lái)實(shí)現,這樣就將業(yè)務(wù)邏輯和表現層分開(kāi),提高軟件可擴展性和良好的邏輯性,改變了傳統Web開(kāi)發(fā)設計模式。然后運用struts-config.xml配置文件將三者組裝起來(lái),協(xié)調它們完成相應的功能。下面將以BBS中用戶(hù)登陸為例按照MVC架構來(lái)詳述實(shí)現過(guò)程。
2.1創(chuàng )建視圖組件
在視圖中主要包括兩個(gè)組件:用戶(hù)登錄頁(yè)面bbsLogin.jsp,是struts的輸入顯示頁(yè)面;登錄失敗頁(yè)面wrong.jsp;是用戶(hù)登錄失敗后顯示的頁(yè)面。它們都保存在Web應用目錄bbs下。
2.2創(chuàng )建模型組件
模型組件文件UserInfo.java是處理業(yè)務(wù)邏輯的JavaBean, 封裝了與論壇用戶(hù)相關(guān)的所有信息,同時(shí)也定義了所有與論壇用戶(hù)信息處理相關(guān)的方法。例如檢查用戶(hù)身份的方法以及查找、刪除、編輯、存儲用戶(hù)信息等。通過(guò)Action類(lèi)派生的子類(lèi)LoginAction訪(fǎng)問(wèn)UserInfo.java實(shí)現對業(yè)務(wù)邏輯的處理。如果模型組建處理的業(yè)務(wù)比較復雜可以使用EJB或其他J2EE組件來(lái)實(shí)現。注意業(yè)務(wù)邏輯層對應的類(lèi)所在的包應該部署在bbs/WEB-INF/classes下。
2.3 創(chuàng )建控制器組件
控制器組件作為整個(gè)Struts架構的控制中心,包括了ActionServlet、Action Bean、ActionForm Bean、以及相關(guān)配置文件web.xml、struts-config.xml及資源包。ActionServlet類(lèi)是框架自帶的,是整個(gè)Struts框架的控制樞紐,通常不需要擴展。
、 聲明及定義LoginActionForm.java
該Javabean用于收取用戶(hù)登錄頁(yè)面提交的表單數據。注意ActionFormBean中屬性名稱(chēng)一定要對應用戶(hù)表示層JSP頁(yè)面中的表單元素名稱(chēng)及超鏈接參數名。
、 聲明及定義LoginAction.java
LoginAction負責處理客戶(hù)端提交請求,其主要功能是依據接收到的不同請求,通過(guò)LoginActionForm中得到對應的提交表單數據,調用業(yè)務(wù)邏輯層中對應的UserInfo.java進(jìn)行處理。最終將結果傳給用戶(hù)表示層JSP頁(yè)面,顯示在用戶(hù)面前。
、 配置文件定義
web.xml主要實(shí)現了對ActionServlet進(jìn)行配置,同時(shí)還必須聲明Web表示層中所使用的struts標簽庫。針對本應用Struts-config.xml配置如下。
。糵orm-beans>
。糵orm-bean name="loginForm" type="bbs.LoginForm"/>
。/form-beans>
。糶lobal-forwards>
。糵orward name="LoginSuccessed" path="/bbsMain.jsp"/>
。糵orward name="LoginFailed" path="/wrong.jsp"/>
。/global-forwards>
。糰ction-mappings>
。糰ction path="/login" type="bbs.LoginAction" name="loginForm" scope="session" input="/bbsLogin.jsp" />
。/action-mappings>
3 結束語(yǔ)
從某種意思上講,Struts技術(shù)只實(shí)現了Web層的應用框架,但它是一個(gè)具有良好擴展性和不斷完善的框架,結合J2EE核心設計模式,可構建出相當穩定的基于MVC應用框架,利用這樣應用框架不但能縮短開(kāi)發(fā)時(shí)間,還能夠實(shí)現框架和代碼的重用,是未來(lái)web應用開(kāi)發(fā)的主流技術(shù)。
【淺析使用struts框架開(kāi)發(fā)web應用的優(yōu)勢】相關(guān)文章:
Web Service的開(kāi)發(fā)與應用基礎07-12
Web Workers加速移動(dòng)Web應用07-01
Java開(kāi)發(fā)web的幾種開(kāi)發(fā)模式12-13
Web開(kāi)發(fā)的教程圖解06-05
WEB教程標準應用標簽10-19
web網(wǎng)頁(yè)開(kāi)發(fā)筆小知識06-22
MBA專(zhuān)業(yè)碩士?jì)?yōu)勢淺析201801-22
Struts中文問(wèn)題怎么解決09-09
淺析下凹式綠地設計優(yōu)勢01-23