劉旭東,李沛茜,陳 純
(1.煙臺職業(yè)學(xué)院科研處,山東煙臺264670;2.浙江大學(xué)計算機科學(xué)與技術(shù)學(xué)院,浙江杭州310027)
隨著Internet網(wǎng)絡(luò)的日趨普及,動畫、視音頻將成為媒體資源的主角,與傳統(tǒng)的文字、圖像結(jié)合在一起成為網(wǎng)絡(luò)上傳輸?shù)拿襟w信息.這種情況下媒體信息的傳輸變得越來越重要,流式技術(shù)及其邊下載邊播放的特性深受教育、娛樂等行業(yè)的喜愛.以流式技術(shù)為基礎(chǔ),開發(fā)研究能夠?qū)崿F(xiàn)用戶節(jié)目點播、頻道收看、多媒體資源存儲、共享等功能的多媒體資源點播系統(tǒng)及其管理平臺也就顯得尤為重要.寬帶電影網(wǎng)站,作為挑戰(zhàn)傳統(tǒng)電影播放形式,己經(jīng)廣為接受,并逐漸成為了大眾娛樂應(yīng)用在Internet上的基本模式.另一方面,隨著Internet技術(shù)的發(fā)展,基于MVC(Model-View-Controller)模型的Struts框架越來越受到Web系統(tǒng)開發(fā)者的歡迎.Struts是建立在當(dāng)前動態(tài)網(wǎng)站設(shè)計領(lǐng)域中JSP、Servlet、XML等相關(guān)開發(fā)技術(shù)基礎(chǔ)之上的一種主流開發(fā)架構(gòu),具有組件模塊化、靈活性和重用性的優(yōu)點,同時極大地簡化了Web應(yīng)用程序的開發(fā).它合理地將用戶表示邏輯、業(yè)務(wù)邏輯和控制邏輯分離,使得開發(fā)過程變得簡潔清晰,并提高了軟件的可維護性和可重用性[1].通過分析浙江大學(xué)校內(nèi)視頻點播系統(tǒng),提出一種基于struts框架的在線寬帶影院系統(tǒng),充分利用面向?qū)ο笤O(shè)計、代碼重用以及Java語言“編寫一次、到處運行”的優(yōu)點,并采用模塊化處理思想,提高系統(tǒng)開發(fā)效率.
Struts是Apache基金會Jakarta項目組的一個Open Source項目,它采用MVC模式,能夠很好地幫助Java開發(fā)者利用J2EE開發(fā)Web應(yīng)用[2].和其他的Java架構(gòu)一樣,Struts也是面向?qū)ο笤O(shè)計,將MVC模式“分離顯示邏輯和業(yè)務(wù)邏輯”的能力發(fā)揮得淋漓盡致.Structs框架的核心是一個彈性的控制層,基于如Java Servlets,JavaBeans,ResourceBundles與XML等標(biāo)準(zhǔn)技術(shù),以及Jakarta Commons的一些類庫.Struts有一組相互協(xié)作的類(組件)、Serlvet以及jsp taglib組成.基于Struts構(gòu)架的Web應(yīng)用程序基本上符合JSP Model2的設(shè)計標(biāo)準(zhǔn),可以說是一個傳統(tǒng)MVC設(shè)計模式的一種變化類型.
Struts的工作原理如圖1所示.
圖1 Struts工作原理圖
控制器:在Struts中,控制器由ActionServlet類來實現(xiàn).ActionServlet是一個通用的控制組件,提供了處理所有發(fā)送Struts的H TTP請求的入口點.根據(jù)配置文件struts-config.xml的配置信息,把請求轉(zhuǎn)發(fā)給適當(dāng)?shù)腁ction對象.如果Action對象不存在,ActionServlet會先創(chuàng)建這個對象.
視圖:主要采用JSP作為視圖的實現(xiàn),它提供了豐富的JSP標(biāo)簽庫支持應(yīng)用程序的開發(fā),而且引入了ActionForm組件(實質(zhì)為JavaBean)作為用戶表單的封裝來完成數(shù)據(jù)的傳輸.
模型:在Struts中,主要有3種Bean,分別是:ActionForm、Action、JavaBean或者EJB.ActionF-orm用來封裝來自client的用戶請求信息,Action獲取ActionForm中的數(shù)據(jù),再調(diào)用EJB或者JavaBean進行處理.
在線寬帶影院系統(tǒng)包括兩個部分:一個是前臺管理程序,它負(fù)責(zé)將系統(tǒng)管理的所有節(jié)目生成節(jié)目單提供給用戶,并為已注冊用戶提供節(jié)目查詢、點播、下載等功能;另一個是后臺管理程序,商家在此管理影視的相關(guān)信息發(fā)布,處理影視節(jié)目信息,并管理在網(wǎng)站上注冊的用戶等.
根據(jù)系統(tǒng)描述,采用模塊化處理思想,將系統(tǒng)劃分成一系列功能模塊,如圖2所示.
圖2 系統(tǒng)功能模塊圖
各模塊具體完成的功能如下:
1)后臺管理
(1)管理員管理模塊:管理設(shè)置管理員權(quán)限,添加、修改、刪除管理員信息,管理員登陸系統(tǒng)等.
(2)公告管理模塊:管理系統(tǒng)公告信息,如系統(tǒng)幫助信息、各項活動信息等.
(3)節(jié)目管理模塊:負(fù)責(zé)完成節(jié)目內(nèi)容的維護工作,包括:①節(jié)目內(nèi)容的添加、修改、刪除、歸類、發(fā)布;②動態(tài)生成節(jié)目單,供用戶瀏覽;③提供用戶對節(jié)目文件的點播;④提供方便快捷的查詢方式.
(4)用戶管理模塊:這里的用戶指前臺注冊用戶,即節(jié)目的使用者.該模塊負(fù)責(zé)用戶信息的查看、修改、刪除及權(quán)限的變更.
2)前臺管理
(1)信息導(dǎo)航模塊:按影視節(jié)目類型生成影視節(jié)目導(dǎo)航,并在頁面上生成影視節(jié)目單,提供影視節(jié)目詳細(xì)信息頁面鏈接.該頁面還提供影視節(jié)目點播鏈接,并對高級權(quán)限用戶提供下載鏈接.
(2)影視查詢模塊:節(jié)目使用者不僅可以根據(jù)節(jié)目類型查找自己所需節(jié)目,還可以利用系統(tǒng)提供的搜索功能對節(jié)目進行快速定位.
(3)信息展示模塊:最新節(jié)目羅列、點播排行羅列、查看公告和下載排行羅列.
(4)注冊登陸模塊:提供新用戶注冊;提供用戶登錄入口,驗證用戶合法性;提供個人信息修改;離開系統(tǒng),取消系統(tǒng)對用戶的跟蹤.
(5)在線視聽模塊:對注冊用戶提供視頻點播,在線觀看服務(wù).
(6)下載模塊:對高級會員提供影視節(jié)目的下載功能.
本系統(tǒng)使用SQL Server 2000作為后臺數(shù)據(jù)庫,主要工作是對數(shù)據(jù)(尤其是視音頻信息數(shù)據(jù))進行訪問操作,為用戶快速查找、使用、管理視音頻節(jié)目提供方便.根據(jù)系統(tǒng)各個功能模塊的需要,經(jīng)過設(shè)計得到以下幾個數(shù)據(jù)庫表:用戶信息表UserInfo_table(用戶編號,用戶名稱,密碼等),用于記錄用戶信息.管理員信息表ManagerInfo_table(管理員編號,管理員名稱,密碼等),用于記錄管理員信息.影視信息表MovieInfo_table(影視編號,影視名稱,影視圖片等),用于記錄影視信息.公告信息表BulletinInf_table(公告編號,公告標(biāo)題,公告內(nèi)容,更新人員,更新時間),用于記錄發(fā)布的公告信息.下載記錄表Download(下載編號,影視編號,下載次數(shù),最后下載時間),用于記錄影視下載信息.影視類型表Movietype(類型編號,類型名稱,備注),用于記錄影視類型信息.點播記錄表Order(點播編號,影視編號,點播次數(shù),最后點播時間),用于記錄點播信息.
根據(jù)Struts的設(shè)計思想,再結(jié)合前面的系統(tǒng)功能模塊設(shè)計,利用面向?qū)ο蟮某绦蛟O(shè)計思想,歸納出整個系統(tǒng)中需要管理的對象有管理員、用戶、影視節(jié)目、公告、點播記錄和下載記錄等[3].經(jīng)分析得出各個管理對象所對應(yīng)的Struts組件,包括:ActionS-ervlet、ActionForm、Action、FormBean等,如表1所示.
表1 系統(tǒng)各模塊對應(yīng)的Struts組件
系統(tǒng)采用Web服務(wù)器為Tomcat5.0,流媒體服務(wù)器為RealServer,數(shù)據(jù)庫為SQL Server 2000,Java版本為JDK1.5的運行環(huán)境,使用Dream-Weaver8.0和JSP技術(shù)進行網(wǎng)絡(luò)應(yīng)用程序的開發(fā),利用JDBC技術(shù)對后臺數(shù)據(jù)庫進行訪問[4].
在在線影院系統(tǒng)中采用數(shù)據(jù)庫連接池技術(shù)提高訪問數(shù)據(jù)庫的效率[5].在數(shù)據(jù)源中事先建立了多個數(shù)據(jù)庫連接,這些連接保存在數(shù)據(jù)庫連接池中.Java程序訪問數(shù)據(jù)庫時,只需從連接池中取出空閑狀態(tài)的數(shù)據(jù)庫連接;程序訪問數(shù)據(jù)庫結(jié)束之后,再將數(shù)據(jù)庫連接放回連接池.在Tomcat_Homeconfserver.xml中加入:
…
創(chuàng)建web.xml文件[3],這是一個基于Servlet的Web應(yīng)用程序都需要的部署描述文件,在其中加入對ActionServlet和標(biāo)簽庫的描述,部分代碼如下所示:
根據(jù)以上配置,ActionServlet在Web應(yīng)用啟動時就被加載并初始化,在Web應(yīng)用中,所有“*.do”形式的URL都由ActionServlet來處理.在修改完web.xml文件后,在WEB-INF目錄下創(chuàng)建struts-config.xml的文件.在struts-config.xml中包含form-beans(定義ActionForm類)、global-forwards(配置全局轉(zhuǎn)發(fā))、action-mappings(配置ActionMapping)和messageresources幾個部分.
在配置好服務(wù)器、初始化站點、配置數(shù)據(jù)源和Struts架構(gòu)后,再進行各個功能模塊的開發(fā).以在線視聽模塊為例,這一模塊包括的內(nèi)容有:影視節(jié)目的后臺業(yè)務(wù)邏輯實現(xiàn)、節(jié)目查詢、節(jié)目點播.后臺業(yè)務(wù)邏輯實現(xiàn)采用Struts架構(gòu),如圖3所示.
MovieAction、MovieModel和MovieForm作為Struts構(gòu)件.MovietModel表示影視信息,它對應(yīng)數(shù)據(jù)庫表中的字段.MovieForm是BaseForm即ActionForm的子類,具有MovieModel的屬性并提供了對MovieModel字段的getX()和setX()方法.Action包含影視信息管理中所有操作的Action類,如查詢、增加、修改和刪除等操作,可以通過它調(diào)用數(shù)據(jù)庫操作的類.MovieInfo與數(shù)據(jù)庫表MovieInfo_table中的各個字段相對應(yīng),用于保存和傳遞數(shù)據(jù).OrderMovie代表了在線視聽中各個影視的信息,如影視名稱、導(dǎo)演、主要演員、語言和發(fā)行國家等.OrderBean封裝了在線視聽中所有的業(yè)務(wù)邏輯,包括點播編號、點播次數(shù)和最后點播時間等操作.其它模塊的實現(xiàn)與其類似.
圖3 在線視聽模塊的Struts實現(xiàn)
采用Struts以及JSP、servlet、JavaBean和JDBC等技術(shù),通過實現(xiàn)視圖、模型和控制器的分離,大大簡化了Web應(yīng)用的開發(fā)過程,提高了Web應(yīng)用的可重用性和可擴展性.以上系統(tǒng)的設(shè)計與實現(xiàn),體現(xiàn)了軟件工程的設(shè)計思想以及在Web應(yīng)用中使用Struts的方法,可以方便地擴展框架,更好地適應(yīng)用戶的實際需求.
[1] 張煒,高原.基于Struts框架的Web應(yīng)用系統(tǒng)設(shè)計與實現(xiàn)[J] .電腦知識與技術(shù),2009,16(15):3 951-3 952.
[2] 聶剛,卿秀華.基于MVC模式的Struts框架在高校開放實驗室系統(tǒng)的應(yīng)用[J] .武漢科技學(xué)院學(xué)報,2007,20(6):5-8.
[3] 孫衛(wèi)琴.精通Struts:基于MVC的Java Web設(shè)計與開發(fā)[M] .北京:電子工業(yè)出版社,2004.
[4] 孫衛(wèi)琴,李洪成.Tomcat與Java Web開發(fā)技術(shù)詳解[M] .北京:電子工業(yè)出版社,2004.
[5] 飛思科技產(chǎn)品開發(fā)中心.JSP數(shù)據(jù)庫開發(fā)應(yīng)用詳解[M] .北京:電子工業(yè)出版社,2004.