《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 面向Web系統(tǒng)的Struts框架研究與應(yīng)用

面向Web系統(tǒng)的Struts框架研究與應(yīng)用

2008-07-08
作者:林 穗, 李振坤

??? 摘 要: Struts是目前面向Web系統(tǒng)開(kāi)發(fā)的一種成熟框架。介紹了框架及設(shè)計(jì)模式" title="設(shè)計(jì)模式">設(shè)計(jì)模式的基本思想,闡述了基于MVC模式的struts框架的體系結(jié)構(gòu)及主要組成組件,并基于struts框架開(kāi)發(fā)了高考網(wǎng)上報(bào)名系統(tǒng)" title="報(bào)名系統(tǒng)">報(bào)名系統(tǒng)。
??? 關(guān)鍵詞:軟件復(fù)用" title="復(fù)用">復(fù)用? 領(lǐng)域框架? Struts? Web應(yīng)用? 報(bào)名系統(tǒng)

?

??? 軟件復(fù)用可以縮短軟件的開(kāi)發(fā)周期,提高軟件的可靠性,降低軟件的開(kāi)發(fā)成本,因此軟件復(fù)用技術(shù)被認(rèn)為是解決軟件危機(jī)的有效途徑,成為軟件工程的研究熱點(diǎn)[1]。面向領(lǐng)域的復(fù)用是提高軟件復(fù)用水平的主要途徑,工業(yè)化的軟件復(fù)用已經(jīng)從通用類庫(kù)進(jìn)化到了面向領(lǐng)域的應(yīng)用框架[2]
??? Struts是目前Web開(kāi)發(fā)中比較成熟的一種框架,通過(guò)把Servlet、JSP、JavaBean、自定義標(biāo)簽和信息資源整合到一個(gè)統(tǒng)一的框架中,為Web開(kāi)發(fā)提供了具有高可配置性的MVC開(kāi)發(fā)模式。本文從軟件體系結(jié)構(gòu)的理論著手,利用現(xiàn)有的理論體系和技術(shù)框架指導(dǎo)應(yīng)用軟件開(kāi)發(fā)中的實(shí)際問(wèn)題,在MVC模式的指導(dǎo)下設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于Struts框架的高考網(wǎng)上報(bào)名系統(tǒng)。實(shí)踐表明,采用這種方法開(kāi)發(fā)應(yīng)用軟件能擴(kuò)大軟件代碼的復(fù)用率,提高軟件代碼的復(fù)用質(zhì)量和開(kāi)發(fā)效率。
1 框架的概念
??? 軟件生產(chǎn)中的重用技術(shù)由來(lái)已久,從最早使用的函數(shù)庫(kù),到現(xiàn)在廣泛使用的類庫(kù)、構(gòu)件庫(kù)" title="構(gòu)件庫(kù)">構(gòu)件庫(kù),但這些都只能復(fù)用小型的組件。隨著面向?qū)ο蠹夹g(shù)的出現(xiàn),研究人員開(kāi)發(fā)了一種能復(fù)用大型組件的技術(shù)——框架[2]
1.1 框架與構(gòu)件
??? 一個(gè)框架是一個(gè)可復(fù)用的設(shè)計(jì)構(gòu)件,它規(guī)定了應(yīng)用的體系結(jié)構(gòu),闡明了整個(gè)設(shè)計(jì)、協(xié)作構(gòu)件之間的依賴關(guān)系、責(zé)任分配和控制流程,表現(xiàn)為一組抽象類及其實(shí)例之間協(xié)作的方法,它為構(gòu)件復(fù)用提供了上下文(Context)關(guān)系,因此構(gòu)件庫(kù)的大規(guī)模重用也需要框架。構(gòu)件領(lǐng)域框架方法是構(gòu)件技術(shù)、軟件體系結(jié)構(gòu)研究和應(yīng)用軟件開(kāi)發(fā)三方面發(fā)展結(jié)合的產(chǎn)物。在很多情況下,框架通常以構(gòu)件庫(kù)的形式出現(xiàn),但構(gòu)件庫(kù)只是框架的一個(gè)重要部分。框架的關(guān)鍵還在于框架內(nèi)對(duì)象間的交互模式和控制流模式。框架為構(gòu)件提供重用的環(huán)境,為構(gòu)件處理錯(cuò)誤、交換數(shù)據(jù)及激活操作提供了標(biāo)準(zhǔn)的方法。應(yīng)用框架強(qiáng)調(diào)的是軟件的設(shè)計(jì)重用性和系統(tǒng)的可擴(kuò)充性,以縮短大型應(yīng)用軟件系統(tǒng)的開(kāi)發(fā)周期,提高開(kāi)發(fā)質(zhì)量。與傳統(tǒng)的基于類庫(kù)的面向?qū)ο笾赜眉夹g(shù)比較,應(yīng)用框架更注重于面向?qū)I(yè)領(lǐng)域的軟件重用。
1.2? 框架和設(shè)計(jì)模式
??? 框架、設(shè)計(jì)模式這兩個(gè)概念總?cè)菀妆换煜鼈冸m然相似,卻有著本質(zhì)的不同。設(shè)計(jì)模式是對(duì)在某種環(huán)境中反復(fù)出現(xiàn)的問(wèn)題以及解決該問(wèn)題的方案的描述,它比框架更抽象;框架可以用代碼表示,也能夠直接執(zhí)行或復(fù)用,而設(shè)計(jì)模式只有實(shí)例才能用代碼表示;設(shè)計(jì)模式是比框架更小的元素,一個(gè)框架中往往含有一個(gè)或多個(gè)設(shè)計(jì)模式;框架總是針對(duì)某一特定應(yīng)用領(lǐng)域,但同一模式卻可適用于各種應(yīng)用。簡(jiǎn)單地說(shuō),框架是軟件,而設(shè)計(jì)模式是軟件的知識(shí)。在軟件開(kāi)發(fā)過(guò)程中把框架和模式配合起來(lái)使用,可以極大地提高軟件的重用性。
2 面向Web應(yīng)用的Struts框架
??? Struts是一種基于MVC模式的開(kāi)放源代碼的應(yīng)用框架,它將應(yīng)用程序分解為業(yè)務(wù)邏輯、控制邏輯和表現(xiàn)邏輯,降低了各邏輯層之間的耦合度,提高了應(yīng)用程序的開(kāi)發(fā)速度及可維護(hù)性和可重用性。
2.1 MVC設(shè)計(jì)模式
??? 模型-視圖-控制器MVC(Modle-View-Controller)模式是Xerox PARC在二十世紀(jì)80年代為編程語(yǔ)言Smalltalk-80所設(shè)計(jì)的一種軟件設(shè)計(jì)模式,至今已被廣泛使用,并被推薦為Sun公司J2EE平臺(tái)的設(shè)計(jì)模式。MVC模式主要由三個(gè)部分組成:模型、視圖和控制器,其結(jié)構(gòu)如圖1所示。

?

??? 模型表示業(yè)務(wù)邏輯和業(yè)務(wù)規(guī)則等,模型能為多個(gè)視圖提供數(shù)據(jù),它是MVC的三個(gè)部件中處理任務(wù)最多的一個(gè)。它可以用JavaBean和EJB等組件技術(shù)來(lái)處理數(shù)據(jù)庫(kù)的訪問(wèn)。由于應(yīng)用于模型的代碼只需寫一次就可以被多個(gè)視圖重用,所以減少了代碼的重復(fù)性。視圖是屏幕上的顯示,模型進(jìn)行操作之后,其結(jié)果就是通過(guò)視圖來(lái)顯示的。在視圖中其實(shí)沒(méi)有真正的處理發(fā)生,只是作為一種輸出數(shù)據(jù)并允許用戶操作的方式。控制器用于管理用戶與視圖發(fā)生的交互。當(dāng)用戶想對(duì)模型進(jìn)行處理時(shí),它不能直接去執(zhí)行模型,而是通過(guò)控制器來(lái)間接地實(shí)現(xiàn)。控制器能從視圖中取值,然后將相應(yīng)的值傳送給模型進(jìn)行處理。控制器接收用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。
2.2 Struts框架
??? Struts體系結(jié)構(gòu)實(shí)現(xiàn)了MVC設(shè)計(jì)模式的概念,它將Model、View和Controller分別映射到Web應(yīng)用中的組件,其結(jié)構(gòu)如圖2所示。

?

??? 在Struts框架中Controller功能由ActionServlet和ActionMapping對(duì)象構(gòu)成,核心是一個(gè)Servlet類型的對(duì)象ActionServlet,它用來(lái)接收客戶端的請(qǐng)求。ActionServlet包括一組基于配置的ActionMapping對(duì)象,每個(gè)ActionMapping對(duì)象實(shí)現(xiàn)了一個(gè)請(qǐng)求到一個(gè)具體的Model部分的Action處理器對(duì)象之間的映射。Model部分由Action和ActionForm對(duì)象構(gòu)成。所有的Action處理器對(duì)象都是開(kāi)發(fā)者從Struts的Action類派生的子類。Action處理器對(duì)象封裝了具體的處理邏輯,調(diào)用業(yè)務(wù)邏輯模塊,并且把響應(yīng)提交到合適的View組件以產(chǎn)生響應(yīng)。Struts提供的ActionForm組件對(duì)象可以通過(guò)定義屬性描述客戶端表單" title="表單">表單數(shù)據(jù),開(kāi)發(fā)者可以從它派生子類對(duì)象,并利用它和Struts提供的自定義標(biāo)記庫(kù)相結(jié)合,可以實(shí)現(xiàn)對(duì)客戶端的表單數(shù)據(jù)的良好封裝和支持,Action處理器對(duì)象可以直接對(duì)它進(jìn)行讀寫,而不再需要和request、response對(duì)象進(jìn)行數(shù)據(jù)交互。通過(guò)ActionForm組件對(duì)象實(shí)現(xiàn)了對(duì)View和Model之間交互的支持(View部分是通過(guò)JSP技術(shù)實(shí)現(xiàn)的)。Struts提供了自定義的標(biāo)記庫(kù),通過(guò)這些自定義標(biāo)記庫(kù)可以非常容易地和系統(tǒng)的Model部分交互,通過(guò)使用這些自定義標(biāo)記庫(kù)創(chuàng)建的JSP表單,可以實(shí)現(xiàn)對(duì)Model部分中的ActionForm的映射,完成對(duì)用戶數(shù)據(jù)的封裝。
3 基于Struts框架的高考網(wǎng)上報(bào)名系統(tǒng)
??? 隨著各類考試、招生業(yè)務(wù)過(guò)程信息化建設(shè)的不斷完善和深入,傳統(tǒng)的C/S架構(gòu)的報(bào)名系統(tǒng)已經(jīng)不能適應(yīng)日益變化的需求。各級(jí)報(bào)名招考系統(tǒng)都傾向于采用Web形式的系統(tǒng)應(yīng)用,在這種情況下,本文基于MVC設(shè)計(jì)模式的Struts框架開(kāi)發(fā)了廣東省普通高考網(wǎng)上報(bào)名系統(tǒng)。該架構(gòu)可簡(jiǎn)述為:為數(shù)據(jù)基本信息表創(chuàng)建數(shù)據(jù)模型(Model),封裝其所有屬性以及對(duì)屬性的Get和Set等方法,根據(jù)具體需求創(chuàng)建一系列Javabean的操作,用JSP來(lái)顯示Model的內(nèi)容,用控制器Web.xml來(lái)控制對(duì)定向和資源文件的讀取。該結(jié)構(gòu)使得系統(tǒng)具有良好的開(kāi)發(fā)效率、可伸縮性、靈活性和健壯性。
??? 網(wǎng)上報(bào)名系統(tǒng)用現(xiàn)代化的網(wǎng)絡(luò)手段實(shí)現(xiàn)了報(bào)考工作,方便了考生報(bào)名,減少了考生數(shù)據(jù)出錯(cuò)幾率,考生可登錄網(wǎng)站直接輸入報(bào)名表信息,并可隨時(shí)查詢和修改個(gè)人信息。同時(shí),系統(tǒng)也降低了各級(jí)考試招生部門的工作量,提高了工作效率,招辦可登錄網(wǎng)站對(duì)考生數(shù)據(jù)進(jìn)行統(tǒng)一管理,對(duì)高考報(bào)名全過(guò)程實(shí)現(xiàn)動(dòng)態(tài)實(shí)時(shí)監(jiān)控。系統(tǒng)功能模型如圖3所示。

?

??? (1)報(bào)名管理模塊:分為考生信息數(shù)據(jù)采集模塊和現(xiàn)場(chǎng)確認(rèn)模塊。考生信息數(shù)據(jù)采集模塊的使用者是考生,考生登錄網(wǎng)站后,修改密碼,填寫個(gè)人簡(jiǎn)歷和家庭關(guān)系及報(bào)考科目信息。在報(bào)名期限內(nèi),考生可多次登錄網(wǎng)站查詢并修改自己的信息。現(xiàn)場(chǎng)確認(rèn)模塊是各報(bào)名點(diǎn)(中學(xué))對(duì)考生所填信息進(jìn)行確認(rèn),且對(duì)考生進(jìn)行現(xiàn)場(chǎng)攝像,照片會(huì)即時(shí)上傳至省招辦的數(shù)據(jù)庫(kù)。通過(guò)報(bào)名管理模塊,基本上保證了考生信息(包括相片)的準(zhǔn)確入庫(kù)。
??? (2)系統(tǒng)管理模塊:主要實(shí)現(xiàn)各級(jí)管理員( 省級(jí),市級(jí),縣(區(qū))級(jí))按不同權(quán)限靈活方便地管理系統(tǒng),分配相應(yīng)用戶權(quán)限以及進(jìn)行一些系統(tǒng)數(shù)據(jù)處理功能,如用戶管理、數(shù)據(jù)上報(bào)、考生信息檢查、信息的導(dǎo)入/ 導(dǎo)出、日志維護(hù)、報(bào)名點(diǎn)數(shù)據(jù)維護(hù)等。
??? (3)數(shù)據(jù)統(tǒng)計(jì)模塊:主要實(shí)現(xiàn)招辦對(duì)各類考生數(shù)據(jù)的統(tǒng)計(jì)分析,如考生人數(shù)、各科目報(bào)考人數(shù)、報(bào)考科目組合、考生實(shí)時(shí)報(bào)名和特殊考試類型考生等數(shù)據(jù)的統(tǒng)計(jì)分析。
??? (4)數(shù)據(jù)打印模塊:主要實(shí)現(xiàn)各類報(bào)表的打印,如登記表、準(zhǔn)考證、考生名冊(cè)、體檢表等。
??? 框架能使應(yīng)用程序的開(kāi)發(fā)簡(jiǎn)單,價(jià)格低廉,但是開(kāi)發(fā)框架不是一件容易的事。它是一個(gè)需要領(lǐng)域和設(shè)計(jì)經(jīng)驗(yàn)的反復(fù)過(guò)程。設(shè)計(jì)模式可以簡(jiǎn)化這個(gè)過(guò)程,因?yàn)樗峁┝藢?duì)過(guò)去經(jīng)驗(yàn)的抽象。
??? MVC模式本身就是一個(gè)非常復(fù)雜的系統(tǒng),所以在采用MVC開(kāi)發(fā)Web應(yīng)用時(shí), 如果自行建立一個(gè)基于MVC 模式的框架, 需要很大的開(kāi)發(fā)成本, 選擇一個(gè)現(xiàn)成的MVC框架會(huì)帶來(lái)事半功倍的效果,Struts框架不失為一個(gè)很好的選擇。本文基于Struts框架,實(shí)現(xiàn)了符合要求的高考網(wǎng)上報(bào)名系統(tǒng), 系統(tǒng)已成功地應(yīng)用于廣東省2005、2006年的高考網(wǎng)上報(bào)名。
參考文獻(xiàn)
[1] GAMMA E,HELM R,JOHNSON R, et al.Design patterns: elements of reusable object-oriented software[M].Boston:??Addison Wesley, 1995.
[2] ?李秀芳,張福增,賈世祥.軟件復(fù)用與Framework框架技術(shù)[J].科學(xué)技術(shù)與工程,2006,6(1):80-83.
[3] ?陳傳波,唐咸峰.領(lǐng)域框架的設(shè)計(jì)[J].計(jì)算機(jī)工程與科學(xué),2002,24(6):1-3.
[4] ?閆斐,王亞弟,韓繼紅. 基于Struts架構(gòu)的J2EE應(yīng)用軟件的設(shè)計(jì)與開(kāi)發(fā)[J].微計(jì)算機(jī)信息,2006,22(30):227-229.
[5] ?官全龍,姚國(guó)祥.基于Struts的應(yīng)用架構(gòu)的研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2005,26(12):3225-3227.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
日韩视频免费观看高清完整版| 先锋影音国产精品| 国产精品主播| 欧美性猛交视频| 欧美视频在线观看免费网址| 欧美精品九九| 欧美激情一区三区| 欧美大成色www永久网站婷| 乱中年女人伦av一区二区| 久久精品女人| 久久久欧美精品sm网站| 久久久久91| 久久女同互慰一区二区三区| 久久久久久久久综合| 久久免费精品日本久久中文字幕| 久久国产视频网站| 久久国产视频网| 久久久久综合网| 另类av导航| 免费不卡在线观看av| 麻豆精品一区二区综合av| 久久这里只有精品视频首页| 久久艳片www.17c.com| 久久亚洲电影| 麻豆精品在线观看| 欧美精品播放| 欧美三级黄美女| 国产精品欧美风情| 国产午夜一区二区三区| 国产综合色精品一区二区三区| 国内欧美视频一区二区| 在线国产日韩| 亚洲九九九在线观看| 一区二区日韩欧美| 亚洲午夜视频在线| 午夜精品久久久久久久男人的天堂| 午夜视频久久久| 久久精品一区四区| 亚洲九九九在线观看| 一区二区三区视频在线| 午夜日韩在线观看| 久久久久久久综合色一本| 免费观看成人| 欧美视频一区二区三区| 国产亚洲精品资源在线26u| 亚洲国产高清在线观看视频| 99re热这里只有精品视频| 亚洲欧美在线免费| 91久久极品少妇xxxxⅹ软件| 日韩视频精品| 欧美一区二区视频在线观看| 免费成人黄色片| 欧美三级午夜理伦三级中文幕 | 亚洲国产成人91精品| 日韩午夜av| 欧美在线播放视频| 欧美精品v日韩精品v国产精品| 亚洲精品影视| 亚洲国产日韩精品| 亚洲男人av电影| 亚洲精品在线免费| 欧美一区二区三区免费观看| 欧美成人综合在线| 国产欧美短视频| 日韩天堂在线观看| 久久精品夜色噜噜亚洲aⅴ| 亚洲一区二区三区色| 美女国内精品自产拍在线播放| 欧美特黄a级高清免费大片a级| 国产偷国产偷精品高清尤物| 亚洲伦伦在线| 亚洲福利视频专区| 亚洲欧美日韩久久精品| 欧美福利视频在线观看| 国产日韩精品一区二区三区| 亚洲久久视频| 亚洲国产精品女人久久久| 亚洲欧美视频在线观看视频| 欧美精品一区二区三区蜜臀 | 亚洲久久一区| 亚洲国产日韩在线| 欧美一级免费视频| 欧美日韩成人一区二区三区| 国产自产女人91一区在线观看| 在线视频一区二区| 亚洲麻豆av| 麻豆freexxxx性91精品| 国产婷婷色一区二区三区在线| 一区二区国产日产| 一本色道久久综合精品竹菊 | 日韩一二三区视频| 久久亚洲视频| 国产一级一区二区| 亚洲自拍16p| 亚洲欧美日韩国产中文在线| 免费视频久久| 国产综合久久久久久| 亚洲女同同性videoxma| 亚洲影院色在线观看免费| 欧美人体xx| 亚洲精品一区二区三区四区高清 | 国产精品入口麻豆原神| 一本一本久久a久久精品综合麻豆| 日韩视频免费观看| 欧美激情第9页| 亚洲国产一区二区三区在线播 | 欧美喷潮久久久xxxxx| 亚洲国产精彩中文乱码av在线播放| 欧美在线亚洲一区| 亚洲国产经典视频| 欧美一区网站| 久久国产精品毛片| 国产欧美视频一区二区三区| 亚洲午夜视频在线观看| 亚洲欧美日韩人成在线播放| 欧美色视频一区| 夜夜嗨网站十八久久| 中日韩在线视频| 欧美日韩亚洲一区| 99亚洲一区二区| 亚洲在线成人| 国产精品日韩在线观看| 亚洲免费人成在线视频观看| 亚洲欧美另类在线| 国产精品入口66mio| 午夜国产精品影院在线观看 | 欧美电影免费观看| 亚洲国产日日夜夜| 一区二区三区产品免费精品久久75| 欧美久久久久久久| 在线视频精品| 小辣椒精品导航| 国产一区二区久久久| 亚洲第一福利视频| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲电影免费观看高清完整版| 亚洲美女视频网| 欧美日韩日韩| 亚洲欧美日韩一区二区在线| 久久激情视频久久| 亚洲第一主播视频| 国产精品99久久99久久久二8| 国产精品红桃| 久久精品久久综合| 欧美人成在线| 亚洲欧美日本国产专区一区| 久久天天综合| 亚洲精品国产精品乱码不99| 亚洲在线视频网站| 国产真实乱偷精品视频免| 亚洲成色最大综合在线| 欧美激情按摩在线| 亚洲性感激情| 久久亚洲精品伦理| 亚洲三级影院| 欧美一区二区三区四区在线 | 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲综合二区| 黄色日韩网站| 一区二区三区精品久久久| 国产欧美日韩另类视频免费观看| 亚洲国产婷婷| 国产精品成人aaaaa网站| 欧美在线短视频| 欧美激情亚洲视频| 午夜一区二区三区不卡视频| 欧美成人在线影院| 亚洲免费视频成人| 欧美激情欧美狂野欧美精品| 亚洲一区国产精品| 免费成人高清视频| 亚洲在线观看视频网站| 欧美成人dvd在线视频| 亚洲一区二区三区在线看 | 亚洲精品在线三区| 香蕉久久国产| 亚洲国产精品电影| 午夜久久久久久久久久一区二区| 国内成+人亚洲| 亚洲一区3d动漫同人无遮挡| 激情久久久久久久久久久久久久久久 | 女同性一区二区三区人了人一| 一区二区日韩伦理片| 乱人伦精品视频在线观看| 亚洲手机在线| 欧美激情第4页| 欧美在线免费| 国产精品伦理| 亚洲美女在线看| 国产日韩欧美二区| 一区二区三区视频免费在线观看| 黄色成人小视频| 羞羞漫画18久久大片| 亚洲精品一区二区三区在线观看| 久久久久久免费| 亚洲一品av免费观看| 欧美日韩1区2区3区| 久久精品亚洲精品| 国产美女一区二区| 亚洲午夜视频在线|