摘要:該文通過(guò)市場(chǎng)調(diào)研和需求分析,采用Struts 和Hibernate架構(gòu)設(shè)計(jì),設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于J2EE技術(shù)的教學(xué)資源庫(kù)系統(tǒng),主要包括資源上傳、Ajax異步檢測(cè)、圖片預(yù)覽、文本預(yù)覽、音視頻在線播放等功能。實(shí)現(xiàn)教學(xué)資源的充分共享,促進(jìn)資源的交流與更新,提高教學(xué)資源的利用率。
關(guān)鍵詞:J2EE;教學(xué)資源庫(kù);Ajax
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2013)01-0059-04
1 緒論
近幾年,隨著我國(guó)的教育信息化的開展,遠(yuǎn)程教育和網(wǎng)絡(luò)教育也迅速發(fā)展起來(lái)。目前開展網(wǎng)絡(luò)教育的機(jī)構(gòu)和參加遠(yuǎn)程教育的人數(shù)呈現(xiàn)逐年上升的趨勢(shì),網(wǎng)絡(luò)教育正成為全球性教育培訓(xùn)的潮流[1-2]。高效、優(yōu)質(zhì)的網(wǎng)絡(luò)教學(xué)資源是開展網(wǎng)絡(luò)教育的基礎(chǔ),因此,設(shè)計(jì)與開發(fā)現(xiàn)代化的教育資源庫(kù)是現(xiàn)代化教育發(fā)展的需要。而且在信息化時(shí)代,知識(shí)更新的速度加快,作為教育者,有責(zé)任和義務(wù)向?qū)W生提供反應(yīng)時(shí)代發(fā)展的最新知識(shí),而傳統(tǒng)教材體系與結(jié)構(gòu)的相對(duì)穩(wěn)定性,限制了這一愿望的實(shí)現(xiàn)。因此,人們?nèi)找嬷匾曔M(jìn)行網(wǎng)絡(luò)教學(xué)資源的開發(fā),來(lái)彌補(bǔ)傳統(tǒng)教材存在的種種缺陷和不足。
2 關(guān)鍵技術(shù)介紹
2.1 MVC模式
為了達(dá)到軟件設(shè)計(jì)的“高內(nèi)聚,低耦合”的目標(biāo),Web開發(fā)應(yīng)用都采用易擴(kuò)展、易資源分配的模式,應(yīng)用最廣泛的就是MVC分層架構(gòu)設(shè)計(jì)模式,其中Model層用以實(shí)現(xiàn)系統(tǒng)中的業(yè)務(wù)邏輯,通常用JavaBean或EJB來(lái)實(shí)現(xiàn);View層用以與用戶的交互,通常用JSP來(lái)實(shí)現(xiàn);Controller層是Model與View之間溝通的橋梁,它可以分派用戶的請(qǐng)求并選擇恰當(dāng)?shù)囊晥D以用于顯示,同時(shí)它也可以解釋用戶的輸入并將它們映射為模型層可執(zhí)行的操作[3-4]。MVC模式原理如圖1所示。
2.2 AJAX技術(shù)
Ajax是Asynchronous JavaScript and XML(以及 DHTML 等)的縮寫。Ajax 由HTML、JavaScript 技術(shù)、DHTML 和DOM組成,可以將笨拙的Web 界面轉(zhuǎn)化成交互性的 Ajax 應(yīng)用程序。
Ajax是用來(lái)描述一組技術(shù)的,它使瀏覽器可以為用戶提供更為自然地瀏覽體驗(yàn)。在Ajax之前,Web站點(diǎn)強(qiáng)制用戶進(jìn)入提交—等待—重新顯示的范例,用戶的動(dòng)作總是與服務(wù)器的“思考時(shí)間”同步。Ajax提供與服務(wù)器異步通信的能力,從而使用戶從請(qǐng)求響應(yīng)的循環(huán)中解脫出來(lái)[5]。借助于Ajax,可以在用戶單擊按鈕時(shí),使用JavaScript和CSS來(lái)相應(yīng)地更新UI,而不是刷新整個(gè)頁(yè)面。更重要的是,用戶甚至不知道瀏覽器正在與服務(wù)器通信,Web站點(diǎn)看起來(lái)是即時(shí)響應(yīng)。
3 需求分析
需求分析工作是軟件生存期中重要的一步,也是決定性的一步。這一步是否成功,直接關(guān)系到開發(fā)出來(lái)的軟件產(chǎn)品能否得到用戶認(rèn)可以及用戶能否真正運(yùn)用產(chǎn)品解決業(yè)務(wù)或管理問(wèn)題。在這個(gè)階段中應(yīng)當(dāng)充分了解用戶的各種情況,包括用戶的工作流程。
本系統(tǒng)主要用于實(shí)現(xiàn)資源的共享。前臺(tái)頁(yè)面給普通用戶(例如教師)提供信息,可以對(duì)資源進(jìn)行搜索、查看和下載,而后臺(tái)則需要系統(tǒng)管理員進(jìn)行具體操作,普通管理員和超級(jí)管理員分別有自己的管理權(quán)限。
具體功能說(shuō)明如下:
1)用戶管理模塊:主要包括普通用戶管理、普通管理員管理、超級(jí)管理員管理。通過(guò)對(duì)本系統(tǒng)的三類用戶進(jìn)行權(quán)限的設(shè)定與管理,可以使不同類型的分組具有不同的模塊管理權(quán)限。超級(jí)系統(tǒng)管理員負(fù)責(zé)系統(tǒng)的日常維護(hù)工作,可以查看、添加、刪除、修改其他任意用戶;上傳、下載、修改、刪除資源;添加、刪除、修改和查看學(xué)科;可以對(duì)公告進(jìn)行添加、查看、和刪除操;備份和恢復(fù)數(shù)據(jù)庫(kù);可以對(duì)普通用戶留言進(jìn)行查看和刪除操作。而一般管理員只能管理普通用戶,不能對(duì)學(xué)科和數(shù)據(jù)庫(kù)進(jìn)行任何操作,另外增加了個(gè)人信息管理。普通用戶可以在前臺(tái)資源分類和學(xué)科分類中瀏覽和下載各種資源;可以查看公告;可以查看和修改個(gè)人信息,如個(gè)人密碼等;可以給系統(tǒng)留言。
2)資源管理模塊:主要分為文本資源、圖形資源、音頻資源、視頻資源、動(dòng)畫資源、課件資源六個(gè)部分。超級(jí)管理員和普通管理員都可以針對(duì)不同的資源進(jìn)行上傳、下載、修改、刪除和查看等操作。各種資源上傳的時(shí)候都必須按照要求的格式和大小進(jìn)行操作。
3)學(xué)科管理模塊:由超級(jí)管理員負(fù)責(zé)對(duì)學(xué)科進(jìn)行添加,修改和刪除操作。普通管理員和普通用戶則沒(méi)有學(xué)科管理權(quán)限。
4)公告管理模塊:管理員和超級(jí)管理員都可以發(fā)布公告。具體可以針對(duì)公告進(jìn)行添加、刪除、修改和瀏覽等操作。
5)留言管理模塊:主要針對(duì)前臺(tái)用戶留言的管理模塊。針對(duì)用戶留言,普通管理員和超級(jí)管理員都可以進(jìn)行查看和刪除操作。
6)數(shù)據(jù)庫(kù)管理模塊:為了防止意外災(zāi)難如斷電等對(duì)系統(tǒng)造成嚴(yán)重危害的事件的發(fā)生,超級(jí)管理員可以事先對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份操作,之后可以進(jìn)行還原操作。普通管理員則沒(méi)有管理權(quán)限。
7)系統(tǒng)說(shuō)明模塊:管理員可以查看系統(tǒng)的功能說(shuō)明和使用說(shuō)明。
4 系統(tǒng)設(shè)計(jì)
4.1 系統(tǒng)設(shè)計(jì)目標(biāo)
本文旨在利用當(dāng)前社會(huì)上開源的Struts框架和Hibernate數(shù)據(jù)持久化技術(shù)相整合的框架實(shí)現(xiàn)應(yīng)用系統(tǒng)的設(shè)計(jì)與開發(fā)。為了實(shí)現(xiàn)系統(tǒng)結(jié)構(gòu)的清晰明了,并且完成快速開發(fā),本系統(tǒng)的設(shè)計(jì)采用目前流行的MVC三層架構(gòu)模式,在開發(fā)過(guò)程中使用Struts和Hibernate來(lái)處理頁(yè)面邏輯和對(duì)象的持久化工作。本系統(tǒng)是基于B/S體系結(jié)構(gòu)的,用戶能夠簡(jiǎn)單地通過(guò)瀏覽器對(duì)信息進(jìn)行編輯、更新并查詢,使信息管理更為便捷和實(shí)時(shí)。
本系統(tǒng)以Windows XP為Web平臺(tái),JSP+Struts+Hibernate為實(shí)現(xiàn)技術(shù),建立基于MySQL數(shù)據(jù)庫(kù)系統(tǒng)的核心動(dòng)態(tài)頁(yè)面,實(shí)現(xiàn)教學(xué)資源庫(kù)系統(tǒng)的各項(xiàng)功能。
4.2 系統(tǒng)架構(gòu)設(shè)計(jì)
本系統(tǒng)的架構(gòu)劃分為四個(gè)層次:表示層、業(yè)務(wù)邏輯層、持久層和數(shù)據(jù)庫(kù)層?;谶@種體系結(jié)構(gòu)的設(shè)計(jì)采用Struts作為系統(tǒng)的開發(fā)框架,然后將Hibernate數(shù)據(jù)持久技術(shù)集成到Struts框架中作為了數(shù)據(jù)持久層。
1)表示層
表示層是四層設(shè)計(jì)結(jié)構(gòu)中的第一層,主要提供用戶的操作界面。采用Struts框架技術(shù)實(shí)現(xiàn),通過(guò)調(diào)用action與業(yè)務(wù)邏輯層交互。表示層主要完成兩個(gè)功能:接受用戶的輸入和呈現(xiàn)用戶信息。
2)業(yè)務(wù)邏輯層
業(yè)務(wù)邏輯層是應(yīng)用的核心所在,它的主要功能是實(shí)現(xiàn)用戶交互和數(shù)據(jù)顯示。采用Java Bean向Hibernate的持久層請(qǐng)求處理核心服務(wù),并顯示處理結(jié)果。
3)持久層
持久層是在業(yè)務(wù)邏輯層與數(shù)據(jù)層之間增加的一層,實(shí)現(xiàn)對(duì)象與關(guān)系數(shù)據(jù)庫(kù)之間的映射。數(shù)據(jù)庫(kù)持久層提供數(shù)據(jù)的保存、更新、刪除和查詢等操作。利用這個(gè)映射機(jī)制,對(duì)象與關(guān)系數(shù)據(jù)庫(kù)之間的轉(zhuǎn)換就可以透明地進(jìn)行,而不用去關(guān)心數(shù)據(jù)庫(kù)連接、并發(fā)性、事務(wù)等問(wèn)題。業(yè)務(wù)邏輯層直接獲取或存儲(chǔ)的是清晰的對(duì)象,中間的轉(zhuǎn)換過(guò)程交給映射框架來(lái)處理。
4)數(shù)據(jù)庫(kù)層
數(shù)據(jù)庫(kù)層主要完成業(yè)務(wù)數(shù)據(jù)的存儲(chǔ)和管理功能。為了更好地管理這些數(shù)據(jù),需要將數(shù)據(jù)實(shí)體轉(zhuǎn)換為對(duì)象進(jìn)行封裝。Hibernate負(fù)責(zé)持久層與數(shù)據(jù)庫(kù)的通信,利用實(shí)體到數(shù)據(jù)庫(kù)的映射,對(duì)持久對(duì)象進(jìn)行操作,并將緩存中的結(jié)果同步到數(shù)據(jù)庫(kù)。
系統(tǒng)開發(fā)架構(gòu)圖如圖2所示。
5 系統(tǒng)實(shí)現(xiàn)
5.1 用戶管理模塊
用戶管理主要包括超級(jí)管理員管理,普通管理員管理和普通用戶管理。通過(guò)對(duì)本系統(tǒng)的三類用戶進(jìn)行權(quán)限的設(shè)定與管理,可以使不同類型的分組具有不同的操作權(quán)限。登錄管理模塊是系統(tǒng)的非常重要的一部分,不同角色的用戶登錄到不同的功能頁(yè)面才能保證權(quán)限的分工。下面以權(quán)限分配為例,介紹具體實(shí)現(xiàn)過(guò)程。
系統(tǒng)的管理有超級(jí)管理員和普通管理員兩種角色,在管理員登錄系統(tǒng)的時(shí)候選擇各自的角色進(jìn)入系統(tǒng),進(jìn)行不同的權(quán)限操作。權(quán)限分配過(guò)程中管理員進(jìn)入后臺(tái)登錄界面,輸入用戶名和密碼,在下拉列表里選擇角色,點(diǎn)擊登錄按鈕進(jìn)入系統(tǒng)。此時(shí)adminlogin.do動(dòng)作提交給ActionServlet,根據(jù)struts-config.xml中的相應(yīng)配置找到Action處理類AdminAction接收表單數(shù)據(jù),調(diào)用ManagerDAO類進(jìn)行用戶名和密碼驗(yàn)證,驗(yàn)證通過(guò)則繼續(xù)判斷角色,驗(yàn)證成功進(jìn)入主頁(yè)面,驗(yàn)證失敗提示錯(cuò)誤信息,重新登錄。
5.2 資源管理模塊
資源管理包括文本資源管理、圖形資源管理、音頻資源管理、視頻資源管理、動(dòng)畫資源管理、課件資源管理六個(gè)部分。管理員和超級(jí)管理員都可以對(duì)各種資源進(jìn)行上傳、下載、刪除和搜索等操作,涉及的功能主要有資源名稱異步檢測(cè),上傳功能,文本預(yù)覽功能,圖片預(yù)覽功能,音視頻在線播放等。
1)資源名稱異步檢測(cè)
由于上傳的文件很多,為避免文件名重復(fù)引起的嚴(yán)重后果,需要對(duì)資源名稱進(jìn)行檢測(cè)。為了不刷新整個(gè)頁(yè)面而達(dá)到目的,需要使用異步驗(yàn)證技術(shù),目前異步檢測(cè)機(jī)制主要有DWR、Jquery和Ajax三種[6],本系統(tǒng)采用Ajax異步檢測(cè)機(jī)制來(lái)實(shí)現(xiàn)對(duì)上傳資源文件名稱的異步校驗(yàn)。以文本資源名稱檢測(cè)為例,首先管理員輸入資源名稱,當(dāng)鼠標(biāo)失去焦點(diǎn)時(shí)就可以自動(dòng)調(diào)用CheckText()方法觸發(fā)Ajax異步檢測(cè)機(jī)制。CheckText()方法調(diào)用TextDAO類對(duì)數(shù)據(jù)表Tbtext中的文本資源名稱進(jìn)行遍歷,檢測(cè)數(shù)據(jù)庫(kù)中是否含有與當(dāng)前輸入的名稱重復(fù)的,如果有返回False,沒(méi)有則返回True。之后JavaScript中xmlHttp.responseText方法檢索到返回值,根據(jù)結(jié)果給出名稱可用或者重名錯(cuò)誤的信息提示。從而達(dá)到無(wú)需提交表單即可實(shí)現(xiàn)與服務(wù)器異步交互的效果。資源名稱異步檢測(cè)效果圖如圖3所示。
2)上傳功能
本系統(tǒng)資源都需要管理員上傳到服務(wù)器,達(dá)到資源共享的目的。上傳時(shí)候要有類型和大小等方面的限制,不同類型的資源要放到的服務(wù)器不同的位置,以便達(dá)到合理分類,查找方便的目的[7-8]。本系統(tǒng)采用Struts集成的upload類實(shí)現(xiàn)上傳機(jī)制。管理員進(jìn)入文本資源列表頁(yè)面,點(diǎn)擊上傳文本按鈕進(jìn)行上傳操作,這時(shí)struts-config配置文件根據(jù)提交的Admin/textDisAction.do動(dòng)作轉(zhuǎn)到textUpLoad.jsp文本上傳頁(yè)面。管理員輸入資源名稱,當(dāng)鼠標(biāo)失去焦點(diǎn)時(shí)候,系統(tǒng)調(diào)用Ajax異步驗(yàn)證機(jī)制進(jìn)行檢測(cè),如果名稱可用給出成功提示,繼續(xù)操作;如果失敗提示重名錯(cuò)誤,重新輸入;如果沒(méi)有輸入,則提示名稱不能為空。然后管理員選擇文件路徑,如果不輸提示選擇路徑,之后填寫內(nèi)容簡(jiǎn)介和所屬學(xué)科,最后點(diǎn)擊上傳按鈕提交表單,進(jìn)行上傳。
提交表單后ActionServlet根據(jù)path路徑到struts- config.xml中尋找相匹配的路徑。接著,執(zhí)行Action中的execute()方法,獲取傳遞的表單信息。然后調(diào)用DAO中的upLoadTextFile方法驗(yàn)證文件的格式、大小等信息,驗(yàn)證通過(guò)則根據(jù)ActionForward的返回路徑轉(zhuǎn)到成功頁(yè)面,失敗則跳轉(zhuǎn)到失敗頁(yè)面。
5.3 學(xué)科管理模塊
學(xué)科管理包括瀏覽學(xué),添加學(xué)科,修改學(xué)科和刪除學(xué)科。由超級(jí)管理來(lái)統(tǒng)一管理和進(jìn)行相關(guān)操作,普通管理員則沒(méi)有操作權(quán)限。添加新的學(xué)科后系統(tǒng)前臺(tái)菜單會(huì)自動(dòng)更新,新上傳的屬于該學(xué)科的資源也會(huì)及時(shí)更新,便于用戶及時(shí)地下載學(xué)習(xí)。下面以瀏覽學(xué)科信息為例說(shuō)明其實(shí)現(xiàn)過(guò)程。
管理員在學(xué)科管理菜單中點(diǎn)擊學(xué)科管理,則跳轉(zhuǎn)到學(xué)科信息列表頁(yè)面。點(diǎn)擊瀏覽學(xué)科菜單,Struts的核心ActionServlet根據(jù)path路徑到struts-config.xml中尋找相匹配的路徑。接著,執(zhí)行Action中的execute()方法,獲取所傳遞的一組數(shù)據(jù)值,將其保存在數(shù)組中。最后,調(diào)用Dao中的subjectBrowse()方法查找數(shù)據(jù)庫(kù)中subject表中的學(xué)科信息。execute()方法會(huì)返回一個(gè)ActionForward對(duì)象,ActionServlet按照ActionForward對(duì)象指定的頁(yè)面來(lái)進(jìn)行頁(yè)面跳轉(zhuǎn)。實(shí)現(xiàn)界面如圖4所示。
6 結(jié)束語(yǔ)
基于J2EE的教學(xué)資源庫(kù)系統(tǒng)可以實(shí)現(xiàn)更大范圍的信息和教育資源的共享,老師可以運(yùn)用多種形式的教學(xué)方式,提供圖形或者音視頻等多媒體教學(xué)資源來(lái)提高教學(xué)效果,而學(xué)生可以利用網(wǎng)絡(luò)這個(gè)平臺(tái)通過(guò)相互之間協(xié)作交流實(shí)現(xiàn)自主學(xué)習(xí)。
參考文獻(xiàn):
[1] 田穎.王余勤.向磊.教學(xué)資源庫(kù)的設(shè)計(jì)與實(shí)現(xiàn)[J].中國(guó)校外教育理論,2008(19):23-31.
[2] 呂少華.淺談高校網(wǎng)絡(luò)教學(xué)資源庫(kù)建設(shè)內(nèi)容及規(guī)范[J].中國(guó)教育信息化,2009(12):12-15.
[3] 劉斌.精通Java Web整合開發(fā)[M].北京:電子工業(yè)出版社,2008:73-97.
[4] 陳松.J2EE電子商務(wù)系統(tǒng)開發(fā)從入門到精通[M]. 北京:清華大學(xué)出版社,2007:1-3.
[5] Thomas A.Powell.Ajax完全手冊(cè)[M]. 北京:電子工業(yè)出版社,2009.313-318.
[6] 楚釗.基于Web2.0的學(xué)校資源庫(kù)設(shè)計(jì)與應(yīng)用[D].金華:浙江師范大學(xué),2008.
[7] 林志慶.在線文檔庫(kù)的分析與實(shí)現(xiàn)[D].福建:福州大學(xué),2010.
[8] 陳玉蕓.高校教學(xué)資源庫(kù)建設(shè)的探府[J].大眾科技,2008(7):183-184.