周改云,張國(guó)平,馬 麗
(平頂山學(xué)院 軟件學(xué)院,河南 平頂山 467000)
隨著網(wǎng)絡(luò)信息交流的發(fā)展,在人們的日常生活、工作中文檔占據(jù)著重要位置。人們比較熟悉的文檔共享平臺(tái)有百度文庫(kù)、豆丁以及新浪的愛(ài)問(wèn)資料共享等。百度文庫(kù)搜索功能強(qiáng)大,豆丁網(wǎng)兼容性較好,而新浪的愛(ài)問(wèn)資料共享歸類(lèi)性良好。也有很多好的文檔資源分享網(wǎng)站比如谷歌、DocStoc等。谷歌文檔可在線新建、編輯、存儲(chǔ)和分享文檔,相當(dāng)于簡(jiǎn)化的Office;而DocStoc除了社會(huì)性文檔分享功能外,支持多種形式文檔的在線閱讀。但許多大學(xué)校園的文檔資源缺乏統(tǒng)一管理,存在交互性、共享性差等問(wèn)題,若能利用WEB技術(shù),建立一個(gè)交互、開(kāi)放、通用的文檔共享平臺(tái),加快校園文檔資源的交流與共享具有重要的現(xiàn)實(shí)意義。
SSH為Sruts+Sring+Hiernate的一個(gè)集成框架,分為表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層和域模塊層四層,是目前使用較多的一種Web應(yīng)用程序開(kāi)源框架。
1.1.1 Struts框架
Struts是一種基于MVC經(jīng)典設(shè)計(jì)模式、比較成熟的WEB開(kāi)發(fā)應(yīng)用框架[1]。Struts把 Servlet、JSP、JavaBean 等整合到一個(gè)統(tǒng)一的框架中,將Model、View和Controller分別映射到WEB應(yīng)用中的組件,其體系結(jié)構(gòu)體現(xiàn)了MVC設(shè)計(jì)模式的概念[2]。
1.1.2 Spring框架
Spring框架以IoC(控制反轉(zhuǎn))和AOP(面向方面編程)為基礎(chǔ),通過(guò)基本的JavaBean完成以前只能由EJB完成的工作[3]。Spring提供服務(wù)組件處理業(yè)務(wù)邏輯,通過(guò)配置Spring的applicationContext,xml將組件聯(lián)系起來(lái)[4]。Spring 框架松耦合,開(kāi)發(fā)者可根據(jù)需要確定各層次上具體選用的框架[5]。
1.1.3 Hibernate框架
Hibernate是一個(gè)開(kāi)放源代碼的對(duì)象關(guān)系映射框架,通過(guò)映射文件,完成對(duì)象關(guān)系映射;輕量級(jí)對(duì)象封裝JDBC,業(yè)務(wù)層采用面向?qū)ο蠓绞骄幊蹋_(kāi)發(fā)人員可隨心所欲操縱數(shù)據(jù)庫(kù)無(wú)需考慮數(shù)據(jù)保存形式[6],實(shí)現(xiàn)業(yè)務(wù)數(shù)據(jù)的持久化。
Ajax 是 DOM、XHTML、CSS、XML、XSTL、Java Script 和XMLHttpRequest等多種技術(shù)的整合[7],其異步訪問(wèn)服務(wù)器,無(wú)刷新便可更新網(wǎng)頁(yè)[8],較好解決了瀏覽器反復(fù)加載頁(yè)面等待數(shù)據(jù)傳輸問(wèn)題,客戶端延遲降低,提高了Web應(yīng)用程序執(zhí)行效率[9]。
文檔共享式資源平臺(tái)通過(guò)FlashPaper2軟件進(jìn)行轉(zhuǎn)碼處理,取文檔文件的每一頁(yè)作為一幀組成Flash文件 (或PDF文件),讓其以流媒體Flash動(dòng)畫(huà)形式按原來(lái)文件的排版格式呈現(xiàn)在前臺(tái)。
文檔共享式資源平臺(tái)分管理員、會(huì)員和游客3類(lèi)角色。管理員登錄后可管理數(shù)據(jù)庫(kù)、管理會(huì)員、管理公告、管理文檔、管理評(píng)論、管理積分、管理個(gè)人信息等;會(huì)員登錄后,可在線瀏覽、上傳、下載、搜索、收藏文檔發(fā)以及查看積分與修改個(gè)人信息等;而游客登錄后只能在線搜索、瀏覽文檔和注冊(cè)為會(huì)員。
文檔資源共享平臺(tái)采用B/S三層模式,將系統(tǒng)按功能劃分成會(huì)員管理、管理員管理、文檔管理、評(píng)論管理、公告管理、數(shù)據(jù)庫(kù)管理等功能簡(jiǎn)單的小模塊,各模塊間通過(guò)接口傳遞消息。底層的實(shí)現(xiàn)對(duì)上層透明,即本平臺(tái)設(shè)計(jì)為顯示層(View,也叫表示層)、業(yè)務(wù)處理層(Action)與數(shù)據(jù)訪問(wèn)層(DAO)三層。顯示層發(fā)送request請(qǐng)求并封裝請(qǐng)求參數(shù)發(fā)送至業(yè)務(wù)處理層,由對(duì)應(yīng)的Action類(lèi)處理,然后通過(guò)DAO層訪問(wèn)數(shù)據(jù)庫(kù),獲取相應(yīng)的數(shù)據(jù)信息,最后由List返回至Action層,根據(jù)顯示要求,再由List發(fā)送到顯示層顯示。
文檔共享資源平臺(tái)采用面向?qū)ο蟮脑O(shè)計(jì)思想,為減少各模塊間的關(guān)聯(lián),做到“高內(nèi)聚,低耦合”,該平臺(tái)的設(shè)計(jì)重點(diǎn)位各模塊對(duì)外接口類(lèi)以及各接口間的關(guān)系。
2.2.1 用戶模塊接口和類(lèi)設(shè)計(jì)
用戶模塊主要對(duì)外提供登錄注銷(xiāo)、注冊(cè)用戶、管理用戶、修改密碼和查找用戶5個(gè)接口,其中查找用戶分為查找全部、按用戶名查找、按Id查找等接口,如圖1所示。平臺(tái)中管理員、會(huì)員和游客3類(lèi)角色均和用戶模塊關(guān)聯(lián)。
圖1 用戶模塊接口Fig.1 User module interface
1)管理員
①通過(guò)調(diào)用用戶管理接口對(duì)用戶進(jìn)行管理,包括增加用戶,刪除用戶、修改用戶操作;
②通過(guò)調(diào)用查找用戶接口,針對(duì)個(gè)別用戶進(jìn)行搜索,然后進(jìn)行管理操作。
2)會(huì)員、游客
①會(huì)員則通過(guò)調(diào)用修改密碼接口修改自己的密碼;
②通過(guò)登錄注銷(xiāo)接口來(lái)實(shí)現(xiàn)對(duì)系統(tǒng)的登錄和退出;
③游客則通過(guò)調(diào)用注冊(cè)接口實(shí)現(xiàn)注冊(cè)請(qǐng)求。
通過(guò)以上對(duì)功能的分析,該模塊的類(lèi)圖設(shè)計(jì)見(jiàn)圖2。
圖2 用戶模塊類(lèi)Fig.2 User module class diagram
User類(lèi):用戶實(shí)體類(lèi),用于封裝用戶名、密碼等user的基本信息,以及獲取這些屬性的基本方法。
UserDao類(lèi):用戶數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象,封裝用戶數(shù)據(jù)庫(kù)增、刪、改、查等基本訪問(wèn)操作。
Dao接口:數(shù)據(jù)訪問(wèn)接口,聲明訪問(wèn)用戶數(shù)據(jù)庫(kù)基本訪問(wèn)操作以及分頁(yè)方法。
DaoSupport類(lèi):Dao中聲明方法的具體實(shí)現(xiàn),對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的又一層封裝。
UserServiceImple類(lèi):對(duì)外業(yè)務(wù)接口,通過(guò)其對(duì)User類(lèi)進(jìn)行isExist()、修改密碼、注冊(cè)用戶、刪除用戶、搜索用戶等對(duì)外訪問(wèn)業(yè)務(wù)操作。
由DaoSupport類(lèi)繼承Dao接口,并實(shí)現(xiàn)其中聲明的方法,再由UserDao繼承DaoSupport類(lèi),這樣UserDao就有了Dao接口聲明的方法,但不用實(shí)現(xiàn)其中的方法,具體的實(shí)現(xiàn)已經(jīng)在DaoSupport中完成。在UserDao中引用一個(gè)User對(duì)象,就可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,然后在UserServiceImpl中加入U(xiǎn)serDao的引用就可以實(shí)現(xiàn)對(duì)外提供各種操作接口。
2.2.2 文檔模塊接口
文檔模塊是文檔共享資源平臺(tái)的核心模塊之一,主要提供文檔分類(lèi)、文檔瀏覽、文檔搜索、文檔管理(包括文檔的增、刪、改、查)、審核文檔、文檔上傳、文檔下載和文檔下載排行6個(gè)接口,其中文檔搜索又可分為按用戶名、時(shí)間、擴(kuò)展名、標(biāo)題等子接口,文檔的審核包括文檔的查閱和轉(zhuǎn)碼。其結(jié)構(gòu)圖見(jiàn)如圖3。管理員、會(huì)員和游客三類(lèi)角色均和文檔模塊關(guān)聯(lián)。
圖3 文檔模塊接口Fig.3 Document module interface
1)管理員
①調(diào)用文檔管理接口管理文檔;
②調(diào)用文檔審核接口審核文檔,若符合網(wǎng)站規(guī)定則允許文檔轉(zhuǎn)碼,否則就刪除文檔;
③調(diào)用文檔分類(lèi)接口歸類(lèi)文檔,可分別調(diào)用一、二級(jí)歸類(lèi)接口管理一、二級(jí)目錄;
④調(diào)用瀏覽文檔接口在線瀏覽文檔。
2)會(huì)員
①調(diào)用瀏覽文檔接口瀏覽文檔;
②調(diào)用上傳文檔接口上傳文檔;
③調(diào)用下載文檔接口下載文檔;
④調(diào)用搜索文檔接口搜索文檔,并可按時(shí)間、標(biāo)題、用戶名、擴(kuò)展名等不同條件搜索文檔。
游客只能瀏覽和搜索文檔。通過(guò)各角色功能調(diào)用關(guān)系分析,該模塊類(lèi)圖設(shè)計(jì)見(jiàn)圖4。
圖4 文檔模塊類(lèi)Fig.4 Document module class
Document類(lèi):文檔實(shí)體類(lèi),用于封裝文檔標(biāo)題、id、文檔類(lèi)型、發(fā)布用戶、擴(kuò)展名、上傳時(shí)間、url、關(guān)鍵字等文檔基本信息,以及基本信息訪問(wèn)方法。
DocumentDao類(lèi):文檔數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象,封裝文檔數(shù)據(jù)庫(kù)增、刪、改、查等基本訪問(wèn)操作。
Dao接口:數(shù)據(jù)訪問(wèn)接口,聲明訪問(wèn)文檔數(shù)據(jù)庫(kù)基本訪問(wèn)操作以及分頁(yè)方法。
DaoSupport類(lèi):Dao中聲明方法的具體實(shí)現(xiàn),對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的又一層封裝。
DocServiceImple類(lèi):對(duì)外業(yè)務(wù)接口,通過(guò)其對(duì)Document類(lèi)提供上傳、下載、搜索等對(duì)外訪問(wèn)業(yè)務(wù)操作。
UserDao類(lèi):用戶數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象,封裝用戶數(shù)據(jù)庫(kù)增、刪、改、查等基本訪問(wèn)操作。
DocType類(lèi):文檔類(lèi)型實(shí)體類(lèi),用于封裝文檔名、文檔編號(hào)、文檔類(lèi)別、上級(jí)類(lèi)別等文檔類(lèi)型基本信息。
DocTypeDao類(lèi):文檔類(lèi)型數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象,封裝其數(shù)據(jù)庫(kù)增、刪、改、查等基本訪問(wèn)操作。
由DaoSupport類(lèi)繼承Dao接口,并實(shí)現(xiàn)其中聲明的方法,再由DocumentDao和DocTypeDao繼承DaoSupport類(lèi),這樣DocumentDao和DocTypeDao就有了Dao接口聲明的方法,但不用實(shí)現(xiàn)其中的方法,具體的實(shí)現(xiàn)已經(jīng)在DaoSupport中完成。然后在DocServiceImpl中加入DocumentDao和DocTypeDao的引用就可以實(shí)現(xiàn)對(duì)外提供文檔的操作和文檔歸類(lèi)的操作接口。
評(píng)論、公告、文檔審核等模塊的類(lèi)和接口設(shè)計(jì)與用戶模塊類(lèi)似,只是將對(duì)外業(yè)務(wù)接口類(lèi)提供的操作換成某模塊提供的對(duì)應(yīng)的對(duì)外業(yè)務(wù)操作即可,在此不再描述。
數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)在平臺(tái)中占據(jù)十分重要的地位,直接影響到應(yīng)用平臺(tái)的效率及實(shí)現(xiàn)效果。本節(jié)將介紹文檔共享平臺(tái)數(shù)據(jù)庫(kù)設(shè)計(jì)。
2.3.1 數(shù)據(jù)分析
文檔共享平臺(tái)主要涉及到管理員、會(huì)員、游客3類(lèi)用戶,其操作的對(duì)象主要是文檔、評(píng)論、系統(tǒng)公告、文檔類(lèi)別等,故該平臺(tái)可抽象出會(huì)員、管理員、文檔、評(píng)論、公告等實(shí)體。各實(shí)體之間關(guān)系如下。
1)一個(gè)管理員可以管理多個(gè)文檔,一個(gè)文檔也可以由多個(gè)管理員管理,其關(guān)系為多對(duì)多;
2)一個(gè)會(huì)員可創(chuàng)建多個(gè)文件夾,一個(gè)文件夾只能由一個(gè)會(huì)員創(chuàng)建,其關(guān)系為一對(duì)多;
3)管理員可發(fā)布多個(gè)系統(tǒng)公告,一個(gè)系統(tǒng)公告只能由一個(gè)管理員發(fā)布,其關(guān)系為一對(duì)多;
4)一個(gè)會(huì)員可評(píng)論多個(gè)文檔,一個(gè)評(píng)論只能由一個(gè)會(huì)員發(fā)表,其關(guān)系為一對(duì)多;
5)一個(gè)會(huì)員可上傳多個(gè)文檔,一個(gè)文檔只能由一個(gè)會(huì)員上傳,其關(guān)系為一對(duì)多;
6)一篇文檔只屬于一種文檔類(lèi)型,而一種文檔類(lèi)型可以包括多篇文檔,其關(guān)系為多對(duì)一。
據(jù)各個(gè)實(shí)體之間的關(guān)系,文檔共享平臺(tái)實(shí)體E-R圖如圖5所示。
圖5 文檔共享平臺(tái)實(shí)體E-R圖Fig.5 Document sharing platform entity E-R diagram
2.3.2 數(shù)據(jù)庫(kù)設(shè)計(jì)
文檔共享平臺(tái)數(shù)據(jù)庫(kù)包含文檔信息表、用戶信息表、管理員信息表、評(píng)論信息表、文檔文件夾表、文檔拓展屬性表、文檔類(lèi)型表、文檔類(lèi)型表、下載文檔表、系統(tǒng)公告表、用戶積分表、用戶文件夾表等共十二張表,分別用來(lái)存儲(chǔ)文檔、會(huì)員、管理員、會(huì)員評(píng)論文檔、文檔及文件夾和用戶間的對(duì)應(yīng)關(guān)系、文檔拓展屬性、文檔類(lèi)型、用戶及其下載文檔對(duì)應(yīng)關(guān)系、公告信息、用戶及其各類(lèi)積分對(duì)應(yīng)關(guān)系、上傳收藏分類(lèi)和積分分類(lèi)、用戶創(chuàng)建的文件夾等信息。部分表詳細(xì)設(shè)計(jì)如下。
1)文檔信息表
文檔信息表存儲(chǔ)文檔,包括文檔編號(hào),文檔標(biāo)題,文檔類(lèi)別,文檔下載所需積分、關(guān)鍵字、文檔類(lèi)型編號(hào)、用戶狀態(tài)、上傳用戶編號(hào)等。其詳細(xì)設(shè)計(jì)見(jiàn)表1。
表1 文檔信息表Tab.1 Document information table
2)文檔拓展屬性表存放屬性編號(hào)、文檔編號(hào)、屬性名、屬性值等信息。其詳細(xì)設(shè)計(jì)見(jiàn)表2。
表2 文檔拓展屬性表Tab.2 Document property sheet
3)文檔類(lèi)型表存放文檔類(lèi)型信息,包括類(lèi)型編號(hào)、類(lèi)型名、是否為根目錄、父節(jié)點(diǎn)的編號(hào)4個(gè)字段。其詳細(xì)設(shè)計(jì)見(jiàn)表3。
表3 文檔類(lèi)型表Tab.3 Document type table
4)文檔文件夾表存放文檔、文件夾、和用戶之間的對(duì)應(yīng)關(guān)系,包括編號(hào)、文件夾編號(hào)、文檔編號(hào)、用戶編號(hào)4個(gè)字段。其詳細(xì)設(shè)計(jì)見(jiàn)表4。
5)數(shù)據(jù)庫(kù)字典表用于存放上傳收藏分類(lèi)和積分分類(lèi)信息。包含編號(hào)、名稱(chēng)和標(biāo)記3個(gè)字段。其詳細(xì)設(shè)計(jì)見(jiàn)表5。
表4 文檔文件夾表Tab.4 Documents folder table
表5 數(shù)據(jù)庫(kù)字典表(data_dic)Tab.5 Database dictionary tables
文檔資源共享平臺(tái)系統(tǒng)采用SSH框架,不僅分離了視圖、控制器與模型,還分離了業(yè)務(wù)邏輯層與持久層。因此不論表示層如何變動(dòng),模型層只需做較少改動(dòng),且數(shù)據(jù)庫(kù)的變化也影響不到表示層,系統(tǒng)的可復(fù)用性提高。各層間松耦合,團(tuán)隊(duì)成員可并行工作,極大提高了開(kāi)發(fā)效率。借助該平臺(tái),用戶可實(shí)現(xiàn)對(duì)文檔、公告、評(píng)論、積分、用戶等的管理功能,以及文檔瀏覽、搜索、上傳、下載、評(píng)論等功能,實(shí)現(xiàn)校園文檔的交流與共享。該平臺(tái)有效地解決了高校普通存在的文檔信息孤島問(wèn)題,為高校教學(xué)資源的共享和管理提供了良好的平臺(tái)。
[1]張國(guó)平,王文虎,馬麗.基于Struts和Hibernate的煤礦管理系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2014,24(4):243-245.ZHANGGuo-ping,WANGWen-hu,MA Li.Design of the coal mine management system based on struts and hibernate[J].Computer Technology and Development,2014,24(4):243-245.
[2]劉曉嬌,詹永照.基于J2EE的異地社會(huì)保障信息系統(tǒng)框架模型[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013,23(3):30-34.LIU Xiao-jiao,ZHAN Yong-zhao.Framework Model of Different-place Social Insurance InformationSystem Based on J2EE[J].Computer Technology and Development,2013,23(3):30-34.
[3]張國(guó)平,馬麗.Spring集成Acegi安全框架在J2EE中的應(yīng)用[J].電子設(shè)計(jì)工程,2012,20(7):29-31.ZHANG Guo-ping,MA Li.Spring acegi integrated security framework in J2EE application[J].Electronic Design Engineering,2012,20(7):29-31.
[4]龔尚福,龔琴,馮健.基于ssh框架的EPON性能管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2013,33(2):571-574.GONG Shangfu,GONG Qin,F(xiàn)ENG Jian.Design and implementation of EPON performance management system based on SSH framework[J].Journal of Computer Applications,2013,33(2):571-574.
[5]張琳,李亞麗,馬麗.基于ssh2的學(xué)生資助評(píng)價(jià)系統(tǒng)的開(kāi)發(fā)[J].計(jì)算機(jī)技術(shù)與自動(dòng)化,2014,23(1):137-140.ZHANG LIN,LI Ya-li,MA Li.Development of the student aid assessment system based on SSH2.[J].Computing Techonlogy and Automation,2014,23(1):137-140.
[6]張建軍,劉虎,倪芳英.基于SSH與Highcharts整合架構(gòu)的Web應(yīng)用研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013,23(9):245-247,251.ZHANG Jian-jun,LIU Hu,NI Fang-ying.Research and application of web architecture based on SSH and highcharts[J].Computer Technology and Development,2013,23 (9):245-247,251.
[7]譚力,楊宗源,謝瑾奎.Ajax技術(shù)的數(shù)據(jù)響應(yīng)優(yōu)化[J].計(jì)算機(jī)工程,2010,36(7):52-54.TAN Li,YANG Zong-yuan,XIE Jin-kui.Data response optimization of ajax[J].Computer Engineering,2010,36(7):52-54.
[8]陳必峰.基于Ajax的富客戶端技術(shù)及應(yīng)用[J].計(jì)算機(jī)科學(xué),2011,38(10A):419-420,431.CHEN Bi-feng.Technology and appl ication of rich client based on AJAX[J].Computer Science,2011,38(10A):419-420,431.
[9]李路路,劉一松,蔣麗.基于Ajax與J2EE的進(jìn)銷(xiāo)存管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與現(xiàn)代化,2013(4):134-137.LI Lu-lu,LIU Yi-song,JIANG Li.Design and implementation of buying-stock-selling management system based on ajax and J2EE[J].Computer and Modernization,2013(4):134-137.