孔令美
(廣東技術(shù)師范學(xué)院天河學(xué)院,廣東 廣州 510540)
作為愛(ài)學(xué)習(xí)的大學(xué)生缺的是什么?答案就是有效的課程學(xué)習(xí)資源。但是去圖書(shū)館借閱圖書(shū)或利用搜索引擎查詢資源的方式查詢效率低下,且網(wǎng)上共享的資源不一定滿足學(xué)習(xí)需求。課程資源共享平臺(tái)是一個(gè)解決缺乏有效課程資源問(wèn)題和提高課程學(xué)習(xí)效率的有效方法。因此,共享有效資源的同時(shí),又能鞏固原有的知識(shí),從而大大提高學(xué)習(xí)效率。
系統(tǒng)涉及三個(gè)角色:游客、普通用戶、審批管理員、超級(jí)管理員。每個(gè)角色在系統(tǒng)中具有不同的權(quán)限。
(1)游客的權(quán)限:搜索資源。
游客可以在平臺(tái)中搜素并下載所需的課程資源,搜索時(shí)可以多條件精確地查詢到所需的課程資源。
(2)普通用戶的權(quán)限:上傳資源管理。
普通用戶在平臺(tái)中除了能搜索下載課程資源之外,還可以對(duì)自己上傳的資源進(jìn)行增、改、查操作。
(3)審批管理員的權(quán)限:上傳資源的審批。
審批管理員在平臺(tái)中的主要職能是對(duì)已上傳的資源進(jìn)行審批。
(4)超級(jí)管理員的權(quán)限:角色管理、菜單管理、用戶管理、資源分類管理、資源管理。
超級(jí)管理員在平臺(tái)中可以對(duì)角色、菜單、用戶、資源分類、資源進(jìn)行增、刪、改、查操作;擁有所有權(quán)限。
為了系統(tǒng)開(kāi)發(fā)以及后期維護(hù)更方便和明確,采用“大垂直,小水平”的方式進(jìn)行項(xiàng)目分割。根據(jù)計(jì)劃,將項(xiàng)目分為DAO、Service、Action層。其中DAO層負(fù)責(zé)數(shù)據(jù)庫(kù)與JAVA的交互,Service層負(fù)責(zé)處理系統(tǒng)邏輯,Action負(fù)責(zé)系統(tǒng)的展示。
根據(jù)面向?qū)ο笏枷?,建立?shí)體類,實(shí)現(xiàn)實(shí)體關(guān)系,實(shí)體類貫穿整個(gè)項(xiàng)目。實(shí)體的具體定義如下:
(1) 用戶模塊
建立管理員類User,User對(duì)應(yīng)數(shù)據(jù)庫(kù)中的用戶表table_user,其中定義 User類成員屬性 userId、userName、password,分別對(duì)應(yīng)字段user_id、user_name、password。對(duì)所有屬性進(jìn)行封裝。
(2)資源模塊
建立資源類Resource,Resource對(duì)應(yīng)數(shù)據(jù)庫(kù)中的資源表table_resource,其中定義Resource類成員屬性resourceId、resourceName分別對(duì)應(yīng)數(shù)據(jù)庫(kù)中的字段resource_id、resource_name。封裝所有屬性。
(3)角色模塊
建立角色類Role,Role對(duì)應(yīng)數(shù)據(jù)庫(kù)中的角色表table_role,其中定義 Role類成員屬性 roleId、roleName、describes、parentId、parentMoudle、分別對(duì)應(yīng)數(shù)據(jù)庫(kù)中的字段role_id、role_name、describes、parent_id、parent_moudle。對(duì)所有屬性進(jìn)行封裝。
(4)菜單模塊
建立菜單類Function,F(xiàn)unction對(duì)應(yīng)數(shù)據(jù)庫(kù)中的菜單表table_function,其中定義Function類成員屬性menuId、menu-Name、menuParentId、functionLink分別對(duì)應(yīng)數(shù)據(jù)庫(kù)中的字段menu_id、menu_name、menu_parent_id、function_link。對(duì)所有屬性進(jìn)行封裝。
(5)資源分類模塊
建立格式類Format、性質(zhì)類Kind、課程類Course,分別與Resource建立單向多對(duì)一關(guān)系。建立領(lǐng)域類Subject,與Course建立雙向的一對(duì)多關(guān)系。建立子類型類SubType,與Format建立雙向的一對(duì)多關(guān)系。建立類型類Type,與SubTy-pet建立雙向的一對(duì)多關(guān)系。
利用Hibernate編寫(xiě)DAO層,實(shí)現(xiàn)JAVA與數(shù)據(jù)庫(kù)的數(shù)據(jù)交互,供Service層調(diào)用。具體實(shí)現(xiàn)如下:
為每個(gè)模塊建立DAO實(shí)現(xiàn)類,其中每個(gè)實(shí)現(xiàn)類都有對(duì)其對(duì)應(yīng)的數(shù)據(jù)表進(jìn)行增刪改查的方法。表1列出了系統(tǒng)模塊對(duì)應(yīng)的實(shí)現(xiàn)類。
表1 系統(tǒng)模塊對(duì)應(yīng)的實(shí)現(xiàn)類
利用之前編寫(xiě)的DAO層的接口,編寫(xiě)Service層,實(shí)現(xiàn)業(yè)務(wù)邏輯。Action層用于處理頁(yè)面信息,根據(jù)不同的處理結(jié)果返回不同的頁(yè)面到客戶端。設(shè)計(jì)Action層,調(diào)用Service層方法進(jìn)行邏輯處理,然后根據(jù)處理結(jié)果為客戶端返回頁(yè)面。最后對(duì)界面進(jìn)行美化。
(1)實(shí)現(xiàn)前工作
在創(chuàng)建具體的Action時(shí),應(yīng)當(dāng)先做一些準(zhǔn)備工作。在WEB-INF文件夾下創(chuàng)建decorators.xml,在該XML文件中配置默認(rèn)模板頁(yè)。
(2)普通用戶模塊
個(gè)人信息管理用到了UserAction。UserAction中edit-Password、findUser4Login、edit4User方法,分別對(duì)應(yīng)客戶端提交的密碼修改、個(gè)人信息查看、個(gè)人信息修改操作。個(gè)人資源管理用到了ResourceAction。UserAction中Upload、list-MyUpload、myUploadView()、reMyUpload()方法,分別對(duì)應(yīng)客戶端提交的我要上傳、個(gè)人上傳列表查看、個(gè)人上傳資源明細(xì)、重新操作。
(3)審批管理員模塊
上傳審查用到了ResourceAction。ResourceAction中l(wèi)istCheck、preCheck、check方法,分別對(duì)應(yīng)客戶端提交的審批列表查詢、進(jìn)入審批頁(yè)面、審批操作??梢酝ㄟ^(guò)點(diǎn)擊“審批”鏈接請(qǐng)求調(diào)用preCheck和check方法實(shí)現(xiàn)對(duì)審批資源明細(xì)的查詢和進(jìn)行審批。
(4)超級(jí)管理員模塊
① 角色管理
角色管理用到了RoleAction。RoleAction中add、edit、delete、list方法,分別對(duì)應(yīng)客戶端提交的添加、修改、刪除、輸出列表操作。
② 用戶管理
用戶管理用到了UserAction。UserAction中add、edit、delete、list方法,分別對(duì)應(yīng)客戶端提交的添加、修改、刪除、輸出列表操作。
③ 菜單管理
菜單管理用到了Menu Action。Menu Action中add、edit、delete、list方法,分別對(duì)應(yīng)客戶端提交的添加、修改、刪除、輸出列表操作
④ 資源分類的管理
資源分類管理用到了Property Condition Action、Content Condition Action、Format Condition Action中各自的add、edit、delete、list方法,分別對(duì)應(yīng)客戶端提交的添加、修改、刪除、輸出列表操作。
⑤ 資源的管理
資源分類管理用到了Resource Action中的add、edit、delete、list方法,分別對(duì)應(yīng)客戶端提交的添加、修改、刪除、輸出列表操作。
(5)資源搜索
用戶在資源搜索欄中輸入資源的關(guān)鍵字,單擊搜索按鍵或者回車,提交表單到search.action,search.action將使用action包中的Resource Action類的實(shí)例進(jìn)行處理。
本系統(tǒng)的測(cè)試為單元測(cè)試。該測(cè)試分為兩種:一種是對(duì)單純與數(shù)據(jù)庫(kù)進(jìn)行交互的功能模塊的測(cè)試,另一種是內(nèi)含業(yè)務(wù)邏輯處理的功能模塊的測(cè)試。
與數(shù)據(jù)庫(kù)進(jìn)行交互的功能模塊多達(dá)40個(gè),占系統(tǒng)功能模塊總數(shù)的90%。由于功能相似,在此將它們的測(cè)試用例進(jìn)行匯總,如表2所示。
表2 與數(shù)據(jù)庫(kù)進(jìn)行交互的功能模塊的測(cè)試用例匯總
3需刪除的實(shí)體類對(duì)象原有的數(shù)據(jù)記錄消失是4無(wú)輸入數(shù)據(jù)返回對(duì)應(yīng)的實(shí)體類列表是5數(shù)據(jù)刪除方法(delete方法)返回?cái)?shù)據(jù)列表(getXX XList方法)讀取一條數(shù)據(jù)(loadX XXByI d方法)需讀取的數(shù)據(jù)的ID返回該ID數(shù)據(jù)的實(shí)體類對(duì)象若輸入的實(shí)體類的ID存在,原有的數(shù)據(jù)記錄消失,否則刪除失敗。若數(shù)據(jù)庫(kù)有該類數(shù)據(jù),返回對(duì)應(yīng)的實(shí)體類列表,否則返回空。若輸入的ID存在,返回該ID數(shù)據(jù)的實(shí)體類對(duì)象,否則返回空。是
本文主要對(duì)課程資源共享平臺(tái)的設(shè)計(jì)思路以及具體的實(shí)現(xiàn)方案作了一個(gè)詳細(xì)的說(shuō)明。在進(jìn)行詳細(xì)設(shè)計(jì)時(shí),從一個(gè)宏觀的角度,考慮某一功能模塊設(shè)計(jì)會(huì)不會(huì)對(duì)其它的功能模塊造成不良影響。本平臺(tái)在設(shè)計(jì)時(shí)充分考慮到可擴(kuò)展性,例如平臺(tái)的菜單、用戶的角色、資源的分類均可以進(jìn)行管理。為平臺(tái)的擴(kuò)展提供了很大的空間。
[1]胡啟敏.基于Spring框架的輕量級(jí)J2 EE架構(gòu)與應(yīng)用[D].南昌:江西師范大學(xué),2010.
[2]韓冰峰.JavaEE Web應(yīng)用系統(tǒng)的結(jié)構(gòu)及性能研究[D].天津:南開(kāi)大學(xué),2009.
[3]楊磊.新手學(xué)Ja v a W e b開(kāi)發(fā)[M].北京:北京希望電子出版社,2010.
[4]于東超.基于Struts2_Spring_Hibernate三種框架的通用W e b框架的研究及應(yīng)用[D].大連:大連交通大學(xué),2008.
[5]王益維.基于Struts2門戶網(wǎng)站自動(dòng)生成系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:華中師范大學(xué),2009.