??? 摘 要: Struts是目前面向Web系統(tǒng)開發(fā)的一種成熟框架,。介紹了框架及設計模式" title="設計模式">設計模式的基本思想,闡述了基于MVC模式的struts框架的體系結構及主要組成組件,,并基于struts框架開發(fā)了高考網上報名系統(tǒng)" title="報名系統(tǒng)">報名系統(tǒng),。
??? 關鍵詞:軟件復用" title="復用">復用? 領域框架? Struts? Web應用? 報名系統(tǒng)
?
??? 軟件復用可以縮短軟件的開發(fā)周期,提高軟件的可靠性,降低軟件的開發(fā)成本,因此軟件復用技術被認為是解決軟件危機的有效途徑,成為軟件工程的研究熱點[1]。面向領域的復用是提高軟件復用水平的主要途徑,,工業(yè)化的軟件復用已經從通用類庫進化到了面向領域的應用框架[2],。
??? Struts是目前Web開發(fā)中比較成熟的一種框架,通過把Servlet,、JSP,、JavaBean、自定義標簽和信息資源整合到一個統(tǒng)一的框架中,,為Web開發(fā)提供了具有高可配置性的MVC開發(fā)模式,。本文從軟件體系結構的理論著手,利用現有的理論體系和技術框架指導應用軟件開發(fā)中的實際問題,,在MVC模式的指導下設計并實現了一個基于Struts框架的高考網上報名系統(tǒng),。實踐表明,采用這種方法開發(fā)應用軟件能擴大軟件代碼的復用率,提高軟件代碼的復用質量和開發(fā)效率,。
1 框架的概念
??? 軟件生產中的重用技術由來已久,,從最早使用的函數庫,到現在廣泛使用的類庫,、構件庫" title="構件庫">構件庫,,但這些都只能復用小型的組件。隨著面向對象技術的出現,,研究人員開發(fā)了一種能復用大型組件的技術——框架[2],。
1.1 框架與構件
??? 一個框架是一個可復用的設計構件,它規(guī)定了應用的體系結構,闡明了整個設計,、協作構件之間的依賴關系,、責任分配和控制流程,表現為一組抽象類及其實例之間協作的方法,,它為構件復用提供了上下文(Context)關系,因此構件庫的大規(guī)模重用也需要框架,。構件領域框架方法是構件技術、軟件體系結構研究和應用軟件開發(fā)三方面發(fā)展結合的產物,。在很多情況下,,框架通常以構件庫的形式出現,但構件庫只是框架的一個重要部分,??蚣艿年P鍵還在于框架內對象間的交互模式和控制流模式??蚣転闃嫾峁┲赜玫沫h(huán)境,,為構件處理錯誤、交換數據及激活操作提供了標準的方法,。應用框架強調的是軟件的設計重用性和系統(tǒng)的可擴充性,以縮短大型應用軟件系統(tǒng)的開發(fā)周期,,提高開發(fā)質量。與傳統(tǒng)的基于類庫的面向對象重用技術比較,,應用框架更注重于面向專業(yè)領域的軟件重用,。
1.2? 框架和設計模式
??? 框架、設計模式這兩個概念總容易被混淆,,它們雖然相似,,卻有著本質的不同。設計模式是對在某種環(huán)境中反復出現的問題以及解決該問題的方案的描述,,它比框架更抽象;框架可以用代碼表示,,也能夠直接執(zhí)行或復用,,而設計模式只有實例才能用代碼表示,;設計模式是比框架更小的元素,一個框架中往往含有一個或多個設計模式;框架總是針對某一特定應用領域,,但同一模式卻可適用于各種應用,。簡單地說,框架是軟件,,而設計模式是軟件的知識,。在軟件開發(fā)過程中把框架和模式配合起來使用,可以極大地提高軟件的重用性,。
2 面向Web應用的Struts框架
??? Struts是一種基于MVC模式的開放源代碼的應用框架,,它將應用程序分解為業(yè)務邏輯、控制邏輯和表現邏輯,降低了各邏輯層之間的耦合度,,提高了應用程序的開發(fā)速度及可維護性和可重用性,。
2.1 MVC設計模式
??? 模型-視圖-控制器MVC(Modle-View-Controller)模式是Xerox PARC在二十世紀80年代為編程語言Smalltalk-80所設計的一種軟件設計模式,至今已被廣泛使用,,并被推薦為Sun公司J2EE平臺的設計模式,。MVC模式主要由三個部分組成:模型、視圖和控制器,,其結構如圖1所示,。
?
??? 模型表示業(yè)務邏輯和業(yè)務規(guī)則等,模型能為多個視圖提供數據,,它是MVC的三個部件中處理任務最多的一個,。它可以用JavaBean和EJB等組件技術來處理數據庫的訪問。由于應用于模型的代碼只需寫一次就可以被多個視圖重用,,所以減少了代碼的重復性,。視圖是屏幕上的顯示,模型進行操作之后,,其結果就是通過視圖來顯示的,。在視圖中其實沒有真正的處理發(fā)生,只是作為一種輸出數據并允許用戶操作的方式,??刂破饔糜诠芾碛脩襞c視圖發(fā)生的交互。當用戶想對模型進行處理時,,它不能直接去執(zhí)行模型,,而是通過控制器來間接地實現??刂破髂軓囊晥D中取值,,然后將相應的值傳送給模型進行處理??刂破鹘邮沼脩舻妮斎氩⒄{用模型和視圖去完成用戶的需求,。
2.2 Struts框架
??? Struts體系結構實現了MVC設計模式的概念,它將Model,、View和Controller分別映射到Web應用中的組件,,其結構如圖2所示。
?
??? 在Struts框架中Controller功能由ActionServlet和ActionMapping對象構成,,核心是一個Servlet類型的對象ActionServlet,,它用來接收客戶端的請求。ActionServlet包括一組基于配置的ActionMapping對象,,每個ActionMapping對象實現了一個請求到一個具體的Model部分的Action處理器對象之間的映射,。Model部分由Action和ActionForm對象構成,。所有的Action處理器對象都是開發(fā)者從Struts的Action類派生的子類。Action處理器對象封裝了具體的處理邏輯,,調用業(yè)務邏輯模塊,,并且把響應提交到合適的View組件以產生響應。Struts提供的ActionForm組件對象可以通過定義屬性描述客戶端表單" title="表單">表單數據,,開發(fā)者可以從它派生子類對象,,并利用它和Struts提供的自定義標記庫相結合,可以實現對客戶端的表單數據的良好封裝和支持,,Action處理器對象可以直接對它進行讀寫,,而不再需要和request、response對象進行數據交互,。通過ActionForm組件對象實現了對View和Model之間交互的支持(View部分是通過JSP技術實現的),。Struts提供了自定義的標記庫,通過這些自定義標記庫可以非常容易地和系統(tǒng)的Model部分交互,,通過使用這些自定義標記庫創(chuàng)建的JSP表單,,可以實現對Model部分中的ActionForm的映射,完成對用戶數據的封裝,。
3 基于Struts框架的高考網上報名系統(tǒng)
??? 隨著各類考試,、招生業(yè)務過程信息化建設的不斷完善和深入,傳統(tǒng)的C/S架構的報名系統(tǒng)已經不能適應日益變化的需求,。各級報名招考系統(tǒng)都傾向于采用Web形式的系統(tǒng)應用,,在這種情況下,本文基于MVC設計模式的Struts框架開發(fā)了廣東省普通高考網上報名系統(tǒng),。該架構可簡述為:為數據基本信息表創(chuàng)建數據模型(Model),,封裝其所有屬性以及對屬性的Get和Set等方法,根據具體需求創(chuàng)建一系列Javabean的操作,,用JSP來顯示Model的內容,,用控制器Web.xml來控制對定向和資源文件的讀取。該結構使得系統(tǒng)具有良好的開發(fā)效率,、可伸縮性,、靈活性和健壯性。
??? 網上報名系統(tǒng)用現代化的網絡手段實現了報考工作,,方便了考生報名,,減少了考生數據出錯幾率,,考生可登錄網站直接輸入報名表信息,,并可隨時查詢和修改個人信息。同時,,系統(tǒng)也降低了各級考試招生部門的工作量,,提高了工作效率,,招辦可登錄網站對考生數據進行統(tǒng)一管理,對高考報名全過程實現動態(tài)實時監(jiān)控,。系統(tǒng)功能模型如圖3所示,。
?
??? (1)報名管理模塊:分為考生信息數據采集模塊和現場確認模塊??忌畔祿杉K的使用者是考生,,考生登錄網站后,修改密碼,,填寫個人簡歷和家庭關系及報考科目信息,。在報名期限內,考生可多次登錄網站查詢并修改自己的信息?,F場確認模塊是各報名點(中學)對考生所填信息進行確認,,且對考生進行現場攝像,照片會即時上傳至省招辦的數據庫,。通過報名管理模塊,,基本上保證了考生信息(包括相片)的準確入庫。
??? (2)系統(tǒng)管理模塊:主要實現各級管理員( 省級,,市級,,縣(區(qū))級)按不同權限靈活方便地管理系統(tǒng),分配相應用戶權限以及進行一些系統(tǒng)數據處理功能,,如用戶管理,、數據上報、考生信息檢查,、信息的導入/ 導出,、日志維護、報名點數據維護等,。
??? (3)數據統(tǒng)計模塊:主要實現招辦對各類考生數據的統(tǒng)計分析,,如考生人數、各科目報考人數,、報考科目組合,、考生實時報名和特殊考試類型考生等數據的統(tǒng)計分析。
??? (4)數據打印模塊:主要實現各類報表的打印,,如登記表,、準考證、考生名冊,、體檢表等,。
??? 框架能使應用程序的開發(fā)簡單,價格低廉,,但是開發(fā)框架不是一件容易的事,。它是一個需要領域和設計經驗的反復過程,。設計模式可以簡化這個過程,因為它提供了對過去經驗的抽象,。
??? MVC模式本身就是一個非常復雜的系統(tǒng),,所以在采用MVC開發(fā)Web應用時, 如果自行建立一個基于MVC 模式的框架, 需要很大的開發(fā)成本, 選擇一個現成的MVC框架會帶來事半功倍的效果,Struts框架不失為一個很好的選擇,。本文基于Struts框架,,實現了符合要求的高考網上報名系統(tǒng), 系統(tǒng)已成功地應用于廣東省2005、2006年的高考網上報名,。
參考文獻
[1] GAMMA E,HELM R,JOHNSON R, et al.Design patterns: elements of reusable object-oriented software[M].Boston:??Addison Wesley, 1995.
[2] ?李秀芳,張福增,賈世祥.軟件復用與Framework框架技術[J].科學技術與工程,,2006,6(1):80-83.
[3] ?陳傳波,唐咸峰.領域框架的設計[J].計算機工程與科學,,2002,,24(6):1-3.
[4] ?閆斐,王亞弟,,韓繼紅. 基于Struts架構的J2EE應用軟件的設計與開發(fā)[J].微計算機信息,,2006,22(30):227-229.
[5] ?官全龍,,姚國祥.基于Struts的應用架構的研究[J].計算機工程與設計,,2005,26(12):3225-3227.