楊豐瑞+杜奎 +姜賴贏
摘要:針對當前高校院級學生信息管理系統(tǒng)不能滿足其科研團隊對學生科學、高效的信息化管理需求,依托Gradle構建工具整合當前最新主流框架EasyUI、Struts、Spring和Hibernate,運用經(jīng)典MVC分層架構設計模式開發(fā)出了適合高??蒲袌F隊的學生信息管理系統(tǒng)。該系統(tǒng)下轄3個權限子模塊:超級管理員模塊、教師模塊和學生模塊。該系統(tǒng)在阿里云服務器平臺和Windows服務器平臺驗證通過,目前已服務于重慶郵電大學通信新技術應用研究中心。
關鍵詞:EasyUI;Struts;Hibernate;Spring;RabbitMQ
中圖分類號:TP319
文獻標識碼:A
文章編號:16727800(2017)004009403
0引言
高??蒲袌F隊是我國科研創(chuàng)新的主力軍,也是勇攀科研高峰的先鋒隊[1]。一個科研團隊的科研創(chuàng)新能力不僅與團隊成員的學術水平息息相關,更與高效管理密不可分,在當前信息技術迅猛發(fā)展的今天,團隊的科學高效管理離不開信息技術支撐[1]。但是經(jīng)查證,在高校中只有少數(shù)國家級重點實驗室才會有面向本團隊研究生的信息管理系統(tǒng),絕大多數(shù)高校對團隊內(nèi)部研究生的信息管理均是依托于研究生院的學生信息管理系統(tǒng),這種院級學生信息管理系統(tǒng)以學校視角側重于成績、學籍與學位的管理,然而面向科研團隊的學生信息管理側重于促進科研團隊的科研效率,其關注:導師發(fā)布公告、查看學生考勤與周報、導師推送學習任務、學生信息報表打印和助管、助研資格快速審查等核心需求。 針對這一缺陷,本文整合當前最新主流框架EasyUI1.4.5、Struts2.5、Spring4.2和Hibernate5.1,運用經(jīng)典的MVC分層架構設計模式開發(fā)出了適合高??蒲袌F隊的學生信息管理系統(tǒng)。
1關鍵技術
1.1EasyUI
EasyUI是一組基于jQuery的UI插件集合體,EasyUI可以幫助Web開發(fā)人員更輕松地打造出功能豐富并且美觀的UI界面[2];另外開發(fā)人員不需要編寫復雜的Javascript腳本,也不需要對css樣式有深入的了解,他們只需要了解一些簡單的html標簽即可。EasyUI使用簡單卻很強大,相較于Bootstrap、extjs等框架,其控件更加豐富,與瀏覽器的兼容性也更勝一籌,尤其是在企業(yè)級OA系統(tǒng)業(yè)務中,EasyUI優(yōu)勢更加明顯。
1.2Struts
Struts是Apache軟件基金會(ASF)贊助的一個開源項目,它是JavaWeb應用中MVC分層架構的一個經(jīng)典框架[3]。表單實例自動封裝和攔截器是最為開發(fā)人員津津樂道的兩個特性。 在MVC分層架構中,對于大型Web應用,控制層通常由Action構成,模型層由JavaBean組件或者EJB組件實現(xiàn);但對于小中型Web應用控制層和域模型層的角色均可由Action扮演。
1.3Hibernate
Hibernate是JBoss旗下的一款優(yōu)秀的ORM數(shù)據(jù)持久層框架,它能夠將面向對象的域模型層對象映射到關系型數(shù)據(jù)庫中,這使得開發(fā)人員可以隨心所欲地使用面向對象思維實現(xiàn)數(shù)據(jù)庫增刪改查(CRUD)操作。Hibernate不僅封裝了豐富的數(shù)據(jù)操作方法,還提供了完善的事務管理機制[4]。
1.4Spring
Spring開源框架是由Rod Johnson 在其著作Expert OneOnOne J2EE Development and Design中闡述的部分理念和原型衍生而來。Spring框架的主要優(yōu)勢之一就是其分層架構,為 J2EE 應用程序的開發(fā)提供框架集成環(huán)境[5]。Spring的核心是依賴注入(DI)和面向切面編程(AOP)。
1.5ESSH框架整合
本系統(tǒng)是以MVC封層架構設計模式(模型層、視圖層和控制層)展開,分層架構邏輯如圖1所示。模型層、視圖層和控制層的功能正是依托于EasyUI、Struts、Spring和Hibernate框架。
1.5.1模型層 模型層其內(nèi)包含:域模型層、數(shù)據(jù)訪問層和業(yè)務邏輯層。利用Hibernate持久層框架通過配置hbm.xml將域模型層JavaBean對象映射到數(shù)據(jù)庫對應的表中,數(shù)據(jù)訪問層關聯(lián)Hibernate的SessionFactory實例從而使用Session中的數(shù)據(jù)操作方法。 有一點要特別注意:為了保護數(shù)據(jù)原子一致性,對于業(yè)務邏輯層中涉及更新數(shù)據(jù)表的方法要將其置于事務管理器中。1.5.2視圖層 Struts的自定義Action負責接收用戶請求并跳轉到登錄、注冊、找回密碼、面向學生系統(tǒng)、面向教師系統(tǒng)和面向管理員系統(tǒng)等頁面。1.5.3控制層 本系統(tǒng)并沒有涉及太多Action與Action之間的請求關系,所以在控制層中編寫的自定義Action并不負責頁面的跳轉而是調(diào)用業(yè)務邏輯層中的方法??刂茖印I(yè)務邏輯層與數(shù)據(jù)訪問層之間的調(diào)用關系如圖2所示。
2系統(tǒng)設計與實現(xiàn)
2.1系統(tǒng)功能設計
本信息管理系統(tǒng)有3個子模塊:超級管理員模塊、教師模塊和研究生模塊,每個子模塊對應不同的權限,每一級權限對應不同的服務。系統(tǒng)整體功能設計如圖3所示。
2.2數(shù)據(jù)庫設計
數(shù)據(jù)庫是信息管理系統(tǒng)的核心,良好的數(shù)據(jù)庫設計不僅可以改善數(shù)據(jù)存取效率,還會減少維護成本[6]。本系統(tǒng)采用MySQL關系數(shù)據(jù)庫系統(tǒng),它具有體積小、速度快、靈活性高、免費等優(yōu)點[7]。通過分析信息管理系統(tǒng)的對象,設計了7張數(shù)據(jù)表:學生信息表、教師信息表、管理員信息表、學生考勤信息表、公告信息表、學生請假信息表和周報信息表。 所有數(shù)據(jù)表模型使用ProcessON構建,如圖4所示。
2.3功能模塊具體設計
管理員模塊、教師模塊和學生模塊除個別功能外基本一致。限于篇幅,本文僅僅圍繞學生模塊展開,管理員模塊和教師模塊不再贅述。2.3.1登錄與注冊模塊 用戶提交注冊表單后,得益于Struts的域模型驅動傳值模式,注冊表單數(shù)據(jù)將會自動封裝到RegisterAction中的Student實例中,但是此時并不會將數(shù)據(jù)寫入數(shù)據(jù)庫除非用戶登錄注冊郵箱進行賬戶激活。激活完成后將自動為用戶跳轉至登錄頁面;如果用戶登錄失敗,那么系統(tǒng)會將提示信息顯示在頁面中。 尤其要注意的是,用戶在提交注冊按鈕時,由于后臺有發(fā)送郵件的業(yè)務,這會耗費一定的時間,假如下游業(yè)務逐漸增多,那么用戶等待的時間會越來越長,從而造成較差的用戶體驗。為了解決這個問題,引入消息中間件技術來實現(xiàn)后端業(yè)務邏輯的異步執(zhí)行,將郵件發(fā)送拆分成一個獨立的RESTFul模塊,其注冊邏輯如圖5所示。 對上述串行和異步這兩種技術方案進行12次用戶注冊測試,其平均用時如圖6所示??梢钥闯?,引入消息中間件RabbitMQ確實大大減少了用戶注冊的等待時間,而且注冊時間不會隨著下游業(yè)務的增多而增多。
2.3.2面向學生系統(tǒng)模塊 該模塊主要涉及登陸時長統(tǒng)計、修改個人信息、修改登錄密碼、上傳周報、下載個人資料(excel和pdf格式)、查看公告和導師推送功能。其中個人信息與密碼修改、周報上傳都是依托于表單元素提交,在后臺用自定義的Action處理后再更新對應數(shù)據(jù)表,導師推送是每一周導師派發(fā)給學生的學習任務,利用WebSocket技術實現(xiàn)該需求。在學生模塊中,由于團隊人數(shù)較多(56人),而每學期的助管和助研名額各只有一個,以往均是由學生抓鬮產(chǎn)生最終名單。針對這一實際業(yè)務需求,設計了一個針對助研和助管資格的限量秒殺功能。本文著重從3個方面考量: (1)如何緩解應用服務器和數(shù)據(jù)庫服務器的壓力。用戶在秒殺開始前會不斷刷新頁面以保證不會錯過秒殺活動,這些請求將會訪問應用服務器和數(shù)據(jù)庫服務器,毫無疑問,如此高頻率的訪問將給應用服務器和數(shù)據(jù)庫服務器帶來巨大壓力。本文應對方案:秒殺頁面靜態(tài)化,然后將靜態(tài)化的頁面放在Nginx服務器或者Apache服務器中。 (2)如何應對秒殺器以保證秒殺公平性。驗證碼或者積分策略(用戶必須擁有足夠的積分才能參與秒殺活動,常見的積分獲取方式:在線時間達到某一值)。 (3)如何應對突然增加的服務器帶寬。一個秒殺頁面200KB大小,假設100并發(fā)量,則服務器帶寬應為:200KB*100=20MB。這一點對于大多數(shù)團隊而言并不算難題,多數(shù)團隊都是使用校內(nèi)的百兆教育網(wǎng)。 將核心業(yè)務模塊一分為二:用戶請求模塊和秒殺業(yè)務處理模塊,用戶請求模塊將用戶請求寫入消息中間件中的消息隊列,隊列容量2,當隊列容量滿載時,用戶請求模塊〖LL〗不再處理之后的用戶請求轉而為這些用戶跳轉至“秒殺結束”頁面;接下來,秒殺業(yè)務處理模塊從消息隊列中讀取消息,然后更新數(shù)據(jù)庫中的用戶信息表。系統(tǒng)的核心設計思想就是使用消息中間件進行流量削峰,得益于消息中間件,此時到達數(shù)據(jù)庫服務器的請求只有2個。但是,用戶在秒殺成功前肯定會不斷刷新商品詳情頁面,以獲取是否還有剩余商品,假如這一部分的請求由MySql負責處理,也即這種高頻請求每次都會去訪問數(shù)據(jù)層,為了進一步改善用戶體驗,在業(yè)務層引入基于內(nèi)存的Redis來抗壓(Redis在單機模式下可以實現(xiàn)讀取數(shù)據(jù)10W/S次)。系統(tǒng)總體架構如圖7所示。
3結語
本文著眼于當前高??蒲袌F隊對學生信息管理過程中存在的不足,將EasyUI框架與經(jīng)典的SSH框架搭配,整合開發(fā)出一套適合高校科研團隊針對教師與研究生信息管理的B/S系統(tǒng)。本系統(tǒng)所使用的ESSH框架均是目前最新版本,也為廣大Java Web開發(fā)愛好者提供了一個良好的整合開發(fā)案例。目前,該系統(tǒng)已經(jīng)服務于重慶郵電大學通信新技術應用研究中心,并得到實驗室?guī)熒囊恢潞迷u,同時將不斷改進與完善該信息管理系統(tǒng)。
參考文獻:[1]高昂,衛(wèi)文學.基于Hibernate 與劇加把框架的數(shù)據(jù)持久化應用研究[J].計算機應用,2005,25(12):28172820.
[2]李嬋.基于J2EE的熱電廠生產(chǎn)班組管理系統(tǒng)的開發(fā)[D].西安:西安石油大學,2011.
[3]周光前.基于B/S模式小型酒店住宿預訂系統(tǒng)設計與實現(xiàn)[D].南京:東南大學,2015.
[4]林秀芬.基于SSH的招投標管理系統(tǒng)的設計與實現(xiàn)[D].成都:電子科技大學,2014.
[5]劉波.基于J2EE和設計模式的企業(yè)交易平臺的研究[D].武漢:華中科技大學,2006.
[6]沈軍峰.基J2EE的高校招標采購管理信息系統(tǒng)設計與實現(xiàn)[D].南京:東南大學,2013.
[7]高凡,陳學卿,梁強.基于互聯(lián)網(wǎng)的高校國資管理系統(tǒng)的設計[J].計算機技術與發(fā)展,2015,25(10):174178.
(責任編輯:孫娟)