摘要:利用Java平臺(tái)開(kāi)發(fā)文檔共享系統(tǒng),整合教學(xué)資源,運(yùn)用Hibernate技術(shù)實(shí)現(xiàn)數(shù)據(jù)的存取,采用的成熟的SSH框架組織后臺(tái)業(yè)務(wù)處理,使用AJAX技術(shù)實(shí)現(xiàn)無(wú)刷新更新,增加用戶體驗(yàn),提高訪問(wèn)速度。支持Word、Excel、PDF以及PPT等格式的文檔瀏覽閱讀。支持用戶更好更快的上傳和下載文檔,實(shí)現(xiàn)資源共享。
關(guān)鍵詞:文檔共享;文檔轉(zhuǎn)碼;Ajax
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2013)09-2105-04
1 概述
隨著互聯(lián)網(wǎng)信息交流和資源共享的發(fā)展,文檔作為傳遞信息的載體,扮演著越來(lái)越重要的角色。許多大學(xué)存在著網(wǎng)絡(luò)信息資源平臺(tái)缺乏統(tǒng)一管理、沒(méi)有交互性和統(tǒng)一共享性、訪問(wèn)瓶頸時(shí)有發(fā)生等問(wèn)題[1],通過(guò)校園文檔共享平臺(tái),同學(xué)們能夠上傳、管理相關(guān)類型的文檔,同時(shí)也可以搜索下載自己需要的文檔,并且通過(guò)積分機(jī)制有效地限制了只下載不付出的同學(xué)的下載量。解決了下載文檔資料問(wèn)題的同時(shí),又有效地加快了信息資源交流的速度,以便同學(xué)們更好地學(xué)習(xí)。
2 技術(shù)介紹
2.1 Ajax技術(shù)
Ajax即“Asynchronous JavaScript and XML”(異步JavaScript和XML)[2],它是一種用于創(chuàng)建更好更快以及交互性更強(qiáng)的Web應(yīng)用程序的技術(shù)。JavaScript通過(guò)該技術(shù)可使用XMLHttpRequest對(duì)象來(lái)直接與服務(wù)器進(jìn)行通信,可在不重載頁(yè)面的情況與Web服務(wù)器交換數(shù)據(jù),AJAX在瀏覽器與Web服務(wù)器之間使用異步數(shù)據(jù)傳輸(HTTP請(qǐng)求),這樣就可使網(wǎng)頁(yè)從服務(wù)器請(qǐng)求少量的信息,而不是整個(gè)頁(yè)面,可使因特網(wǎng)應(yīng)用程序更小、更快、更友好[3]。其優(yōu)點(diǎn)可以歸結(jié)為:
1)不必更新全部網(wǎng)頁(yè),可更新部分頁(yè)面。
2)優(yōu)化了Browser和Server之間的溝通,減少不必要的數(shù)據(jù)傳輸、時(shí)間及降低網(wǎng)絡(luò)上數(shù)據(jù)流量。
3)平衡了前、后端的負(fù)載,原本數(shù)據(jù)大多由后端負(fù)責(zé)處理,借由AJAX讓客戶端分擔(dān)些工作,減低了后端的負(fù)載。
本系統(tǒng)對(duì)AJAX的使用主要表現(xiàn)是在前臺(tái)頁(yè)面上,如會(huì)員登錄使用AJAX技術(shù)驗(yàn)證實(shí)現(xiàn)無(wú)刷新登錄,增加用戶的體驗(yàn)。
2.2 文檔轉(zhuǎn)碼技術(shù)
由于文檔共享平臺(tái)實(shí)現(xiàn)了文檔的在線瀏覽功能,會(huì)員可以對(duì)文檔內(nèi)容進(jìn)行在線瀏覽,并且可以根據(jù)自己的喜好對(duì)字體進(jìn)行放縮、以及跳頁(yè)等功能,所以必須以Flash流媒體的形式呈現(xiàn)在前臺(tái)頁(yè)面,這時(shí)就需要對(duì)文檔進(jìn)行轉(zhuǎn)碼操作。其轉(zhuǎn)碼原理為,通過(guò)FlashPaper2對(duì)文檔格式的文件進(jìn)行轉(zhuǎn)碼,取文檔的每一頁(yè)作為一幀組成Flash文件[4],其轉(zhuǎn)碼流程如圖1所示。
3 需求分析
系統(tǒng)的使用者主要有三類人,即游客、會(huì)員和管理員。各種用戶的功能如下:
3.1 游客功能
游客在訪問(wèn)系統(tǒng)主頁(yè)后,對(duì)系統(tǒng)的使用主要包括搜索文檔、瀏覽文檔、查看網(wǎng)站基本信息和注冊(cè)會(huì)員等功能。
1)搜索文檔。游客訪問(wèn)網(wǎng)站后,可以通過(guò)關(guān)鍵詞來(lái)搜索自己需要的文檔信息。
2)瀏覽文檔。找到自己需要的文檔信息后,可以在線對(duì)文檔進(jìn)行瀏覽查看。
3)查看網(wǎng)站基本信息。訪問(wèn)主頁(yè)后,通過(guò)超連接查看網(wǎng)站提供的基本信息。
4)注冊(cè)會(huì)員。游客輸入注冊(cè)信息,通過(guò)驗(yàn)證后可以成為本系統(tǒng)的普通會(huì)員。
3.2 會(huì)員功能
會(huì)員在訪問(wèn)系統(tǒng)主頁(yè)后,對(duì)系統(tǒng)的使用主要包括上傳文檔、下載文檔、評(píng)論文檔、搜索文檔、瀏覽文檔、查看網(wǎng)站基本信息、查看和修改個(gè)人基本信息等功能。
1)搜索文檔。會(huì)員訪問(wèn)網(wǎng)站后,通過(guò)填寫(xiě)所需文檔的信息,搜索文檔。
2)瀏覽文檔。搜索到自己需要的文檔信息后,可在線對(duì)文檔進(jìn)行瀏覽查看。
3)查看網(wǎng)站基本信息。訪問(wèn)主頁(yè)后,可以查看網(wǎng)站提供的基本信息。
4)上傳文檔。會(huì)員可以上傳自己的文檔供其他會(huì)員下載,并獲得相應(yīng)的積分。
5)下載文檔。會(huì)員可以搜索別人的文檔下載,但需扣除相應(yīng)的積分。
6)個(gè)人信息管理。會(huì)員對(duì)個(gè)人信息進(jìn)行管理,包括個(gè)人信息的查看和修改等。
7)收藏文檔。會(huì)員可收藏別人的文檔,以便下一次登錄后快速找到文檔。
3.3 管理員功能
相比游客和會(huì)員用戶,管理員使用本系統(tǒng)的頻率要更高,管理員在登錄系統(tǒng)后臺(tái)管理頁(yè)面后,對(duì)系統(tǒng)的使用主要包括文檔管理文檔管理、公告管理、文檔審核、會(huì)員管理和數(shù)據(jù)庫(kù)管理等功能。
1)文檔管理。管理員可對(duì)數(shù)據(jù)庫(kù)文檔記錄進(jìn)行管理,包括文檔的搜索、刪除和修改操作。
2)公告管理。管理員可對(duì)公告進(jìn)行管理,包括對(duì)公告的添刪改操作。
3)文檔審核。對(duì)于會(huì)員上傳上來(lái)的文檔,必須進(jìn)過(guò)管理員的審核通過(guò)后才能在前臺(tái)顯示,對(duì)文檔的審核包括文檔的轉(zhuǎn)碼操作。
4)會(huì)員管理。管理員可以對(duì)系統(tǒng)會(huì)員進(jìn)行管理,包括對(duì)會(huì)員的添加、搜索、修改和刪除操作。
5)數(shù)據(jù)庫(kù)管理。為了系統(tǒng)數(shù)據(jù)的安全,管理員可以每隔一段時(shí)間對(duì)系統(tǒng)的數(shù)據(jù)庫(kù)進(jìn)行一下備份,當(dāng)系統(tǒng)數(shù)據(jù)出現(xiàn)故障后可以進(jìn)行數(shù)據(jù)還原操作。
4 系統(tǒng)主要功能設(shè)計(jì)
4.1 系統(tǒng)整體架構(gòu)設(shè)計(jì)
本系統(tǒng)嚴(yán)格遵循B/S模式的三層結(jié)構(gòu)的設(shè)計(jì)理念,設(shè)計(jì)過(guò)程中首先將系統(tǒng)劃分為相對(duì)簡(jiǎn)單的小模塊,然后各個(gè)模塊之間只能通過(guò)接口進(jìn)行傳遞消息,底層的實(shí)現(xiàn)過(guò)程對(duì)上層是透明的[5-6]。本系統(tǒng)設(shè)計(jì)為前臺(tái)顯示層(View)、業(yè)務(wù)處理層(Action)和數(shù)據(jù)訪問(wèn)層(DAO)三層,前臺(tái)通過(guò)發(fā)送請(qǐng)求request并且將請(qǐng)求參數(shù)進(jìn)行封裝發(fā)送到業(yè)務(wù)處理層,由相應(yīng)的Action類進(jìn)行處理,然后通過(guò)DAO層訪問(wèn)數(shù)據(jù)庫(kù),獲得相應(yīng)的數(shù)據(jù)信息,通過(guò)List返回到Action層,再根據(jù)顯示的需要,通過(guò)List發(fā)送到前臺(tái)顯示給用戶。
4.2 接口設(shè)計(jì)
本系統(tǒng)的核心功能是文檔模塊,它主要提供文檔分類、文檔搜索、文檔管理(包括文檔的增刪改查)、瀏覽文檔、審核文檔、文檔上傳、文檔下載和文檔下載排行六個(gè)接口,其中文檔搜索又可分為按拓展名、按標(biāo)題、按用戶名、按時(shí)間搜索等子接口,文檔的審核包括文檔的查閱和轉(zhuǎn)碼操作。
系統(tǒng)中文檔模塊的參與者包括管理員、會(huì)員和游客,其中游客對(duì)文檔只有瀏覽功能,不再詳述。下面以管理員和會(huì)員為例說(shuō)明各自調(diào)用的接口和實(shí)現(xiàn)的功能。
4.2.1 管理員
1) 調(diào)用文檔管理接口對(duì)文檔進(jìn)行管理;
2) 調(diào)用文檔的審核接口實(shí)現(xiàn)對(duì)文檔的評(píng)審,如果符合網(wǎng)站規(guī)定則允許文檔轉(zhuǎn)碼,否則就刪除文檔;
3) 調(diào)用文檔分類接口來(lái)對(duì)文檔進(jìn)行歸類,可以調(diào)用一級(jí)歸類接口對(duì)一級(jí)目錄管理,調(diào)用二級(jí)歸類接口對(duì)二級(jí)目錄管理;
4) 調(diào)用瀏覽文檔接口對(duì)文檔進(jìn)行在線瀏覽;
4.2.2 會(huì)員
1) 調(diào)用的瀏覽文檔接口實(shí)現(xiàn)對(duì)文檔的瀏覽功能;
2) 調(diào)用上傳文檔接口實(shí)現(xiàn)上傳文檔的功能;
3) 調(diào)用下載文檔接口實(shí)現(xiàn)下載文檔的功能;
4) 調(diào)用文檔搜索接口實(shí)現(xiàn)對(duì)文檔的搜索功能,并且可以根據(jù)自己的需要按不同的條件對(duì)文檔進(jìn)行搜索,如可以分別按時(shí)間、按標(biāo)題、按上傳會(huì)員姓名、按時(shí)間對(duì)文檔進(jìn)行搜索。
通過(guò)以上對(duì)功能的分析和各個(gè)角色接口的調(diào)用關(guān)系,可以創(chuàng)建出該模塊的類圖如圖2所示。
Document類:文檔實(shí)體類,用于封裝文檔的基本信息,包括文檔標(biāo)題、id、文檔類型、發(fā)布用戶、拓展名、上傳時(shí)間、url、關(guān)鍵詞等信息以及對(duì)這些信息的訪問(wèn)方法。
DocumentDao類:文檔數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象,對(duì)數(shù)據(jù)庫(kù)訪問(wèn)操作進(jìn)行封裝,包括一些訪問(wèn)數(shù)據(jù)庫(kù)的基本操作,如增加、刪除、修改、查找等。
Dao接口[7]:數(shù)據(jù)訪問(wèn)接口,聲明了訪問(wèn)數(shù)據(jù)庫(kù)的基本方法,包括增加、修改、刪除、查找以及分頁(yè)的方法。
DaoSupport類:實(shí)現(xiàn)了對(duì)Dao中聲明的方法,對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的又一層封裝。
DocServiceImple類:對(duì)外業(yè)務(wù)提供的接口,通過(guò)這個(gè)類來(lái)對(duì)文檔類進(jìn)行業(yè)務(wù)操作,對(duì)外提供文檔上傳、文檔下載、文檔搜索等對(duì)文檔操作的方法。
UserDao類:用戶數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象,對(duì)數(shù)據(jù)庫(kù)訪問(wèn)操作進(jìn)行封裝,包括一些訪問(wèn)數(shù)據(jù)庫(kù)的基本操作,如增加、刪除、修改、查找等。
DocType類:文檔類型實(shí)體類,用于封裝文檔類型的基本信息,包括文檔名、文檔編號(hào)、文檔類別上級(jí)類別等。
DocTypeDao類:文檔類型數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象,對(duì)數(shù)據(jù)庫(kù)訪問(wèn)操作進(jìn)行封裝,包括一些訪問(wèn)數(shù)據(jù)庫(kù)的基本操作,如增加、刪除、修改、查找等。
由DaoSupport類繼承Dao接口,并實(shí)現(xiàn)其中聲明的方法,再由DocumentDao和DocTypeDao繼承DaoSupport類,這樣DocumentDao和DocTypeDao就有了Dao接口聲明的方法,但不用實(shí)現(xiàn)其中的方法,具體的實(shí)現(xiàn)已經(jīng)在DaoSupport中完成。然后在DocServiceImpl中加入DocumentDao和DocTypeDao的引用就可以實(shí)現(xiàn)對(duì)外提供文檔的操作和文檔歸類的操作接口。
5 系統(tǒng)主要功能的實(shí)現(xiàn)
下面以在線瀏覽文檔、搜索文檔和上傳文檔為例,展開(kāi)系統(tǒng)主要功能的實(shí)現(xiàn)描述。
5.1在線瀏覽文檔功能
該功能是在線顯示文檔,在用戶發(fā)出瀏覽文檔請(qǐng)求后,后臺(tái)響應(yīng)的處理類documentAction會(huì)根據(jù)用戶請(qǐng)求文檔的編號(hào)找到該文檔,獲取文檔轉(zhuǎn)換后的swf文件物理地址,然后將swf文件響應(yīng)給用戶,通過(guò)調(diào)用客戶端瀏覽器的flash插件對(duì)響應(yīng)文檔進(jìn)行顯示,供用戶在線瀏覽。其效果圖如圖3所示。
用戶點(diǎn)擊想要瀏覽的文檔后,服務(wù)器端則通過(guò)用戶的request請(qǐng)求獲取文檔的編號(hào)id交給documentAction類處理,document通過(guò)lookDocument()方法調(diào)用文檔模塊documentService對(duì)象,通過(guò)調(diào)用文檔模塊提供的接口browseDocument()來(lái)實(shí)現(xiàn)對(duì)文檔的查看,documentService中則調(diào)用DocumentDao對(duì)象獲取路徑。
5.2搜索文檔模塊
該文檔搜索模塊實(shí)現(xiàn)了用戶對(duì)文檔的搜索功能,其效果如圖4所示。
用戶在搜索欄里輸入文檔信息,然后選擇相應(yīng)的搜索方式,點(diǎn)擊搜索。后臺(tái)DocumentAction類通過(guò)request對(duì)象獲取用戶輸入的文檔信息和搜索方式,判斷一下前臺(tái)傳過(guò)來(lái)的搜索方式,如果是按文檔名查詢,則通過(guò)調(diào)用DocumentDao類對(duì)象的findByName()對(duì)數(shù)據(jù)庫(kù)進(jìn)行模塊查詢,如果是按用戶查詢,則通過(guò)DocumentDao類對(duì)象的findByUser()對(duì)數(shù)據(jù)庫(kù)進(jìn)行模塊查詢,查到之后會(huì)封裝到List
5.3 上傳文檔功能實(shí)現(xiàn)
會(huì)員登錄之后,可以分享自己的文檔,即將本地的文檔上傳到服務(wù)器端供給其他會(huì)員下載。其效果圖如圖5所示。
圖5 上傳文檔效果圖
會(huì)員到達(dá)上傳頁(yè)面后,點(diǎn)擊瀏覽按鈕即可選擇本地文件進(jìn)行上傳操作,由于會(huì)員在上傳文檔后,必須對(duì)文檔詳細(xì)信息進(jìn)行補(bǔ)充,所以在此,本系統(tǒng)只設(shè)計(jì)了單一上傳。選擇好文檔后,點(diǎn)擊上傳按鈕,這時(shí)發(fā)送request請(qǐng)求到后臺(tái),系統(tǒng)就會(huì)用FileForm類對(duì)文檔信息進(jìn)行封裝傳到后臺(tái)DocumentAction對(duì)象,由uploadFile()方法來(lái)處理,上傳成功之后會(huì)跳到對(duì)文檔詳細(xì)信息進(jìn)行補(bǔ)充界面。用戶填寫(xiě)了必需的信息后,點(diǎn)擊提交文檔按鈕,這時(shí)request會(huì)交由DocumentAction的DocDetailInfo()方法來(lái)處理,通過(guò)DocumentService的上傳接口調(diào)用DocumentDao對(duì)數(shù)據(jù)庫(kù)插入一條記錄,如果插入出錯(cuò),則返回出錯(cuò)信息。
登錄后,在導(dǎo)航欄處點(diǎn)擊會(huì)員中心按鈕,此時(shí)系統(tǒng)會(huì)將request交給UserAction類的userCenter()方法進(jìn)行處理,通過(guò)UserService提供的接口,分別由UserDao、DocumentDao類對(duì)象的查詢方法對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn),獲取會(huì)員的基本信息包括會(huì)員的用戶名、積分總值、上傳過(guò)的文檔和下載過(guò)的文檔等信息,通過(guò)List對(duì)象返回到前臺(tái)進(jìn)行顯示。
6 結(jié)束語(yǔ)
基于SSH和AJAX的在線文檔共享平臺(tái)的實(shí)現(xiàn)旨在為同學(xué)們搭建一個(gè)文檔共享和交流的平臺(tái),讓學(xué)生們能夠方便快捷的找到自己需要的文檔資料。系統(tǒng)從用戶的角度上傳文檔、下載文檔、評(píng)論文檔、搜索文檔、在線瀏覽文檔等功能,從管理員的角度實(shí)現(xiàn)了管理會(huì)員信息、審核文檔、管理系統(tǒng)公告、管理文檔、管理評(píng)論、修改個(gè)人信息等功能,而從游客角度實(shí)現(xiàn)了搜索文檔、在線瀏覽文檔功能。能夠很好的滿足用戶的基本功能需求。
參考文獻(xiàn):
[1] 王曉靜,冉從林,梅龍寶.基于Web2.0校園信息資源共享平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代教育技術(shù),2009(3).
[2] 丁波,晁愛(ài)農(nóng).基于Struts2框架的AJAX開(kāi)發(fā)研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2009(16).
[3] 秦京渝.企業(yè)級(jí)開(kāi)發(fā)與框架[M].北京:電子工業(yè)出版社,2008:233-244.
[4] 劉銳.調(diào)用FlashPaper API控制FlashPaper文檔界面[J].電腦知識(shí)和技術(shù),2009(12).
[5] 楊少波,顧益軍.J2EE項(xiàng)目實(shí)訓(xùn)-Spring框架技術(shù)[M].北京:清華大學(xué)出版社,2008.
[6] 武寶珠,梁聲灼,牛德雄.基于Struts2+Spring+Hibernate架構(gòu)構(gòu)建Web應(yīng)用系統(tǒng)[J].計(jì)算機(jī)與現(xiàn)代化,2009(8).
[7] 竇東陽(yáng),趙英凱,許文稼.利用Myeclipse簡(jiǎn)化基于Hibernate的數(shù)據(jù)庫(kù)訪問(wèn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2007(4).