周改云,張國平,馬 麗
(平頂山學院 軟件學院,河南 平頂山 467000)
隨著網絡信息交流的發展,在人們的日常生活、工作中文檔占據著重要位置。人們比較熟悉的文檔共享平臺有百度文庫、豆丁以及新浪的愛問資料共享等。百度文庫搜索功能強大,豆丁網兼容性較好,而新浪的愛問資料共享歸類性良好。也有很多好的文檔資源分享網站比如谷歌、DocStoc等。谷歌文檔可在線新建、編輯、存儲和分享文檔,相當于簡化的Office;而DocStoc除了社會性文檔分享功能外,支持多種形式文檔的在線閱讀。但許多大學校園的文檔資源缺乏統一管理,存在交互性、共享性差等問題,若能利用WEB技術,建立一個交互、開放、通用的文檔共享平臺,加快校園文檔資源的交流與共享具有重要的現實意義。
SSH為Sruts+Sring+Hiernate的一個集成框架,分為表示層、業務邏輯層、數據持久層和域模塊層四層,是目前使用較多的一種Web應用程序開源框架。
1.1.1 Struts框架
Struts是一種基于MVC經典設計模式、比較成熟的WEB開發應用框架[1]。Struts把 Servlet、JSP、JavaBean 等整合到一個統一的框架中,將Model、View和Controller分別映射到WEB應用中的組件,其體系結構體現了MVC設計模式的概念[2]。
1.1.2 Spring框架
Spring框架以IoC(控制反轉)和AOP(面向方面編程)為基礎,通過基本的JavaBean完成以前只能由EJB完成的工作[3]。Spring提供服務組件處理業務邏輯,通過配置Spring的applicationContext,xml將組件聯系起來[4]。Spring 框架松耦合,開發者可根據需要確定各層次上具體選用的框架[5]。
1.1.3 Hibernate框架
Hibernate是一個開放源代碼的對象關系映射框架,通過映射文件,完成對象關系映射;輕量級對象封裝JDBC,業務層采用面向對象方式編程,開發人員可隨心所欲操縱數據庫無需考慮數據保存形式[6],實現業務數據的持久化。
Ajax 是 DOM、XHTML、CSS、XML、XSTL、Java Script 和XMLHttpRequest等多種技術的整合[7],其異步訪問服務器,無刷新便可更新網頁[8],較好解決了瀏覽器反復加載頁面等待數據傳輸問題,客戶端延遲降低,提高了Web應用程序執行效率[9]。
文檔共享式資源平臺通過FlashPaper2軟件進行轉碼處理,取文檔文件的每一頁作為一幀組成Flash文件 (或PDF文件),讓其以流媒體Flash動畫形式按原來文件的排版格式呈現在前臺。
文檔共享式資源平臺分管理員、會員和游客3類角色。管理員登錄后可管理數據庫、管理會員、管理公告、管理文檔、管理評論、管理積分、管理個人信息等;會員登錄后,可在線瀏覽、上傳、下載、搜索、收藏文檔發以及查看積分與修改個人信息等;而游客登錄后只能在線搜索、瀏覽文檔和注冊為會員。
文檔資源共享平臺采用B/S三層模式,將系統按功能劃分成會員管理、管理員管理、文檔管理、評論管理、公告管理、數據庫管理等功能簡單的小模塊,各模塊間通過接口傳遞消息。底層的實現對上層透明,即本平臺設計為顯示層(View,也叫表示層)、業務處理層(Action)與數據訪問層(DAO)三層。顯示層發送request請求并封裝請求參數發送至業務處理層,由對應的Action類處理,然后通過DAO層訪問數據庫,獲取相應的數據信息,最后由List返回至Action層,根據顯示要求,再由List發送到顯示層顯示。
文檔共享資源平臺采用面向對象的設計思想,為減少各模塊間的關聯,做到“高內聚,低耦合”,該平臺的設計重點位各模塊對外接口類以及各接口間的關系。
2.2.1 用戶模塊接口和類設計
用戶模塊主要對外提供登錄注銷、注冊用戶、管理用戶、修改密碼和查找用戶5個接口,其中查找用戶分為查找全部、按用戶名查找、按Id查找等接口,如圖1所示。平臺中管理員、會員和游客3類角色均和用戶模塊關聯。

圖1 用戶模塊接口Fig.1 User module interface
1)管理員
①通過調用用戶管理接口對用戶進行管理,包括增加用戶,刪除用戶、修改用戶操作;
②通過調用查找用戶接口,針對個別用戶進行搜索,然后進行管理操作。
2)會員、游客
①會員則通過調用修改密碼接口修改自己的密碼;
②通過登錄注銷接口來實現對系統的登錄和退出;
③游客則通過調用注冊接口實現注冊請求。
通過以上對功能的分析,該模塊的類圖設計見圖2。

圖2 用戶模塊類Fig.2 User module class diagram
User類:用戶實體類,用于封裝用戶名、密碼等user的基本信息,以及獲取這些屬性的基本方法。
UserDao類:用戶數據庫訪問對象,封裝用戶數據庫增、刪、改、查等基本訪問操作。
Dao接口:數據訪問接口,聲明訪問用戶數據庫基本訪問操作以及分頁方法。
DaoSupport類:Dao中聲明方法的具體實現,對數據庫訪問的又一層封裝。
UserServiceImple類:對外業務接口,通過其對User類進行isExist()、修改密碼、注冊用戶、刪除用戶、搜索用戶等對外訪問業務操作。
由DaoSupport類繼承Dao接口,并實現其中聲明的方法,再由UserDao繼承DaoSupport類,這樣UserDao就有了Dao接口聲明的方法,但不用實現其中的方法,具體的實現已經在DaoSupport中完成。在UserDao中引用一個User對象,就可以對數據庫進行操作,然后在UserServiceImpl中加入UserDao的引用就可以實現對外提供各種操作接口。
2.2.2 文檔模塊接口
文檔模塊是文檔共享資源平臺的核心模塊之一,主要提供文檔分類、文檔瀏覽、文檔搜索、文檔管理(包括文檔的增、刪、改、查)、審核文檔、文檔上傳、文檔下載和文檔下載排行6個接口,其中文檔搜索又可分為按用戶名、時間、擴展名、標題等子接口,文檔的審核包括文檔的查閱和轉碼。其結構圖見如圖3。管理員、會員和游客三類角色均和文檔模塊關聯。

圖3 文檔模塊接口Fig.3 Document module interface
1)管理員
①調用文檔管理接口管理文檔;
②調用文檔審核接口審核文檔,若符合網站規定則允許文檔轉碼,否則就刪除文檔;
③調用文檔分類接口歸類文檔,可分別調用一、二級歸類接口管理一、二級目錄;
④調用瀏覽文檔接口在線瀏覽文檔。
2)會員
①調用瀏覽文檔接口瀏覽文檔;
②調用上傳文檔接口上傳文檔;
③調用下載文檔接口下載文檔;
④調用搜索文檔接口搜索文檔,并可按時間、標題、用戶名、擴展名等不同條件搜索文檔。
游客只能瀏覽和搜索文檔。通過各角色功能調用關系分析,該模塊類圖設計見圖4。

圖4 文檔模塊類Fig.4 Document module class
Document類:文檔實體類,用于封裝文檔標題、id、文檔類型、發布用戶、擴展名、上傳時間、url、關鍵字等文檔基本信息,以及基本信息訪問方法。
DocumentDao類:文檔數據庫訪問對象,封裝文檔數據庫增、刪、改、查等基本訪問操作。
Dao接口:數據訪問接口,聲明訪問文檔數據庫基本訪問操作以及分頁方法。
DaoSupport類:Dao中聲明方法的具體實現,對數據庫訪問的又一層封裝。
DocServiceImple類:對外業務接口,通過其對Document類提供上傳、下載、搜索等對外訪問業務操作。
UserDao類:用戶數據庫訪問對象,封裝用戶數據庫增、刪、改、查等基本訪問操作。
DocType類:文檔類型實體類,用于封裝文檔名、文檔編號、文檔類別、上級類別等文檔類型基本信息。
DocTypeDao類:文檔類型數據庫訪問對象,封裝其數據庫增、刪、改、查等基本訪問操作。
由DaoSupport類繼承Dao接口,并實現其中聲明的方法,再由DocumentDao和DocTypeDao繼承DaoSupport類,這樣DocumentDao和DocTypeDao就有了Dao接口聲明的方法,但不用實現其中的方法,具體的實現已經在DaoSupport中完成。然后在DocServiceImpl中加入DocumentDao和DocTypeDao的引用就可以實現對外提供文檔的操作和文檔歸類的操作接口。
評論、公告、文檔審核等模塊的類和接口設計與用戶模塊類似,只是將對外業務接口類提供的操作換成某模塊提供的對應的對外業務操作即可,在此不再描述。
數據庫結構設計在平臺中占據十分重要的地位,直接影響到應用平臺的效率及實現效果。本節將介紹文檔共享平臺數據庫設計。
2.3.1 數據分析
文檔共享平臺主要涉及到管理員、會員、游客3類用戶,其操作的對象主要是文檔、評論、系統公告、文檔類別等,故該平臺可抽象出會員、管理員、文檔、評論、公告等實體。各實體之間關系如下。
1)一個管理員可以管理多個文檔,一個文檔也可以由多個管理員管理,其關系為多對多;
2)一個會員可創建多個文件夾,一個文件夾只能由一個會員創建,其關系為一對多;
3)管理員可發布多個系統公告,一個系統公告只能由一個管理員發布,其關系為一對多;
4)一個會員可評論多個文檔,一個評論只能由一個會員發表,其關系為一對多;
5)一個會員可上傳多個文檔,一個文檔只能由一個會員上傳,其關系為一對多;
6)一篇文檔只屬于一種文檔類型,而一種文檔類型可以包括多篇文檔,其關系為多對一。
據各個實體之間的關系,文檔共享平臺實體E-R圖如圖5所示。

圖5 文檔共享平臺實體E-R圖Fig.5 Document sharing platform entity E-R diagram
2.3.2 數據庫設計
文檔共享平臺數據庫包含文檔信息表、用戶信息表、管理員信息表、評論信息表、文檔文件夾表、文檔拓展屬性表、文檔類型表、文檔類型表、下載文檔表、系統公告表、用戶積分表、用戶文件夾表等共十二張表,分別用來存儲文檔、會員、管理員、會員評論文檔、文檔及文件夾和用戶間的對應關系、文檔拓展屬性、文檔類型、用戶及其下載文檔對應關系、公告信息、用戶及其各類積分對應關系、上傳收藏分類和積分分類、用戶創建的文件夾等信息。部分表詳細設計如下。
1)文檔信息表
文檔信息表存儲文檔,包括文檔編號,文檔標題,文檔類別,文檔下載所需積分、關鍵字、文檔類型編號、用戶狀態、上傳用戶編號等。其詳細設計見表1。

表1 文檔信息表Tab.1 Document information table
2)文檔拓展屬性表存放屬性編號、文檔編號、屬性名、屬性值等信息。其詳細設計見表2。

表2 文檔拓展屬性表Tab.2 Document property sheet
3)文檔類型表存放文檔類型信息,包括類型編號、類型名、是否為根目錄、父節點的編號4個字段。其詳細設計見表3。

表3 文檔類型表Tab.3 Document type table
4)文檔文件夾表存放文檔、文件夾、和用戶之間的對應關系,包括編號、文件夾編號、文檔編號、用戶編號4個字段。其詳細設計見表4。
5)數據庫字典表用于存放上傳收藏分類和積分分類信息。包含編號、名稱和標記3個字段。其詳細設計見表5。

表4 文檔文件夾表Tab.4 Documents folder table

表5 數據庫字典表(data_dic)Tab.5 Database dictionary tables
文檔資源共享平臺系統采用SSH框架,不僅分離了視圖、控制器與模型,還分離了業務邏輯層與持久層。因此不論表示層如何變動,模型層只需做較少改動,且數據庫的變化也影響不到表示層,系統的可復用性提高。各層間松耦合,團隊成員可并行工作,極大提高了開發效率。借助該平臺,用戶可實現對文檔、公告、評論、積分、用戶等的管理功能,以及文檔瀏覽、搜索、上傳、下載、評論等功能,實現校園文檔的交流與共享。該平臺有效地解決了高校普通存在的文檔信息孤島問題,為高校教學資源的共享和管理提供了良好的平臺。
[1]張國平,王文虎,馬麗.基于Struts和Hibernate的煤礦管理系統的設計[J].計算機技術與發展,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的異地社會保障信息系統框架模型[J].計算機技術與發展,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]張國平,馬麗.Spring集成Acegi安全框架在J2EE中的應用[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性能管理系統的設計與實現[J].計算機應用,2013,33(2):571-574.GONG Shangfu,GONG Qin,FENG 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的學生資助評價系統的開發[J].計算機技術與自動化,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整合架構的Web應用研究[J].計算機技術與發展,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技術的數據響應優化[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的富客戶端技術及應用[J].計算機科學,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].計算機與現代化,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.