李宏志 胡娜娜
(滁州學(xué)院 信息學(xué)院,安徽 滁州 239000)
基于BUI和SSH框架的學(xué)工系統(tǒng)的分析與設(shè)計①
李宏志 胡娜娜
(滁州學(xué)院 信息學(xué)院,安徽 滁州 239000)
針對某高校學(xué)工管理系統(tǒng)具體需求,通過對學(xué)工管理系統(tǒng)的特點和業(yè)務(wù)功能進(jìn)行了分析,提出了基于BUI和SSH分層企業(yè)級應(yīng)用系統(tǒng)架構(gòu)方案,并應(yīng)用該架構(gòu)方案對學(xué)工管理系統(tǒng)進(jìn)行了分析和設(shè)計,并給出了關(guān)鍵功能的設(shè)計.基于SSH整合框架的多層應(yīng)用系統(tǒng)架構(gòu)能有效的提高系統(tǒng)的穩(wěn)定性、擴(kuò)展性和可維護(hù)性,通過對系統(tǒng)的測試表明應(yīng)用該設(shè)計方案能完全達(dá)到相關(guān)的指標(biāo)要求.
BUI框架,學(xué)工管理系統(tǒng),SSH框架,架構(gòu)設(shè)計
某地方應(yīng)用型本科院校是集教學(xué)科研、技術(shù)培訓(xùn)、項目開發(fā)以及企業(yè)技術(shù)支持為一體的高等應(yīng)用型本科院校[1].隨著高等教育的發(fā)展,學(xué)校辦學(xué)規(guī)模的不斷擴(kuò)大,最初的辦公管理系統(tǒng)存在管理復(fù)雜,業(yè)務(wù)效率低下等弊端難以應(yīng)對學(xué)校各項事業(yè)的發(fā)展.隨著計算機(jī)技術(shù)的普及和對辦公自動化要求的不斷提高,對學(xué)校內(nèi)部的日常辦公、信息管理、數(shù)據(jù)共享、移動辦公、動態(tài)分析等功能提出了更高的要求.
針對該系統(tǒng)的實際需求,考慮到系統(tǒng)的擴(kuò)展性和可維護(hù)性,借鑒其他類似系統(tǒng)的研發(fā)經(jīng)驗,使用輕量級的SSH框架作為系統(tǒng)的總體設(shè)計框架,解決復(fù)雜業(yè)務(wù)模型的分層解耦的問題.由于普通Web頁面存在表現(xiàn)力不足,缺乏成熟的頁面組件,開發(fā)難度大等諸多問題,系統(tǒng)選用BUI框架作為前端的界面框架,BUI框架是一款由阿里巴巴集團(tuán)技術(shù)團(tuán)隊研發(fā)并開源的Web前端框架,該框架具有視覺表現(xiàn)力強、使用難度低、組件豐富、瀏覽器兼容性好、易于維護(hù)等特點[2].
根據(jù)對學(xué)生管理工作的業(yè)務(wù)流程的調(diào)研以及對涉及到的相關(guān)技術(shù)的分析, 本文闡述了一個基于BUI和SSH架構(gòu)的學(xué)工管理系統(tǒng)的設(shè)計與實現(xiàn),研究了BUI框架與SSH結(jié)合之后的系統(tǒng)的分層架構(gòu)和各模塊之間的數(shù)據(jù)通信和交互.
1.1 系統(tǒng)的架構(gòu)設(shè)計
圖1 系統(tǒng)的分層架構(gòu)設(shè)計
本系統(tǒng)采用B/S模式,系統(tǒng)服務(wù)端采用SSH分層架構(gòu)設(shè)計,前端的頁面采用BUI框架設(shè)計用于實現(xiàn)用戶交互[3].如圖1所示按照MVC的設(shè)計模式將系統(tǒng)劃分為五層:視圖層、控制器層、業(yè)務(wù)邏輯層、數(shù)據(jù)接口層、數(shù)據(jù)持久化層.系統(tǒng)的視圖層主要由BUI框架實現(xiàn),包括系統(tǒng)界面的渲染和頁面組件的生成以及與服務(wù)端的數(shù)據(jù)交互.控制器層由Struts2框架實現(xiàn),通過Struts.xml文件配置用于處理用戶請求的Action,控制器負(fù)責(zé)接收來自視圖層的用戶請求,根據(jù)用戶請求選擇調(diào)用業(yè)務(wù)邏輯層的邏輯組件,業(yè)務(wù)邏輯組件負(fù)責(zé)處理相關(guān)的業(yè)務(wù)數(shù)據(jù),并將數(shù)據(jù)返回給對應(yīng)的視圖層.Spring框架負(fù)責(zé)管理系統(tǒng)業(yè)務(wù)邏輯組件,業(yè)務(wù)邏輯組件以JavaBean的形式配置在Spring容器中,除此之外Spring還負(fù)責(zé)提供事物管理,緩沖池等功能以保證系統(tǒng)數(shù)據(jù)的完整性.數(shù)據(jù)持久層由Hibernate實現(xiàn),作為系統(tǒng)的ORM框架負(fù)責(zé)實現(xiàn)Java對象與關(guān)系數(shù)據(jù)庫之間的映射,對象屬性與數(shù)據(jù)表的列屬性之間的對應(yīng)關(guān)系配置在 *.orm.xml文件中.采用分層結(jié)構(gòu)能夠有效的降低系統(tǒng)各模塊的之間的耦合度,采用組件式的開發(fā)方式將業(yè)務(wù)邏輯代碼劃分成各自獨立的組件,托管于Spring容器中,這種分層的架構(gòu)設(shè)計使得源代碼易于理解,保證系統(tǒng)的維護(hù)性和擴(kuò)展性.
1.2 BUI框架與服務(wù)端的數(shù)據(jù)通信
系統(tǒng)前后臺的數(shù)據(jù)通信是BUI框架與SSH整合的一個關(guān)鍵問題,處于視圖層中的BUI框架利用其自身的Ajax特性可直接通過異步通信的方式來獲取服務(wù)端的數(shù)據(jù)處理用戶的請求.
BUI框架支持使用JSON格式進(jìn)行前后端的數(shù)據(jù)通信,早期的Ajax使用XML格式作為數(shù)據(jù)通信的基本格式,隨著JSON的廣泛應(yīng)用其技術(shù)優(yōu)點逐漸凸顯[5].JSON具有傳輸數(shù)據(jù)量小,數(shù)據(jù)格式便于解析等優(yōu)點,因此本系統(tǒng)采用JSON作為前后臺數(shù)據(jù)通信的基本格式.
圖2 前后端數(shù)據(jù)交互流程圖
使用JSON格式進(jìn)行前后端通信的基本流程如下:如圖2所示,前端Ajax將用戶的數(shù)據(jù)請求指向控制層的Action方法中,系統(tǒng)運行時會自動將用戶請求轉(zhuǎn)發(fā)到對應(yīng)的操作方法中.在Action中調(diào)用邏輯處理類得到的執(zhí)行結(jié)果之后需要將結(jié)果轉(zhuǎn)換為JSON格式,BUI框架獲取來自服務(wù)端的數(shù)據(jù)后,解析JSON格式數(shù)據(jù),并將解析后的數(shù)據(jù)顯示到用戶界面.
前臺利用Ajax請求后臺JSON格式數(shù)據(jù)并顯示到頁面的表格中的主要代碼如.
BUI.use('common/main',function(){//獲取json
MYM.getJSON('XXX/hello.action',function(data){
grid = new Grid.SimpleGrid({
render : '#grid', //顯示Grid到此處
width : 950, //設(shè)置寬度
columns : [
{ title:'學(xué)生編號',dataIndex:'id',width:80}, //設(shè)置數(shù)據(jù)集的對應(yīng)關(guān)系
{ title:'學(xué)生姓名',dataIndex:'name',width:100},
{ title:'入學(xué)時間',
dataIndex:'day',
width:100,
renderer:Grid.Format.dateRenderer},
{title:'學(xué)生家庭住址',dataIndex:'address',width:300}]}).
grid.render();
grid.showData(data);}).}).
2.1 系統(tǒng)功能設(shè)計
圖3 學(xué)工管理系統(tǒng)功能模塊圖
高校學(xué)工管理系統(tǒng)包括:學(xué)生信息管理、獎助學(xué)金管理、貧困生管理、勤工助學(xué)管理、畢業(yè)離校管理等基本管理模塊.要求涵蓋完整的學(xué)生工作管理部門業(yè)務(wù),協(xié)助高校規(guī)范學(xué)生工作管理部門的工作流程,實現(xiàn)在線業(yè)務(wù)處理,為學(xué)生處老師、學(xué)生、各院系老師和輔導(dǎo)員等提供統(tǒng)一的網(wǎng)上辦公服務(wù)平臺,系統(tǒng)的總體功能模塊設(shè)計如圖3所示.
系統(tǒng)的角色權(quán)限主要分為兩類:學(xué)工處管理人員和在校大學(xué)生.學(xué)工處管理人員主要職責(zé)包括兩部分:第一部分,在線發(fā)布如發(fā)布功如發(fā)布獎學(xué)金申報,勤工助學(xué)崗位、畢業(yè)離校流程等與學(xué)生工作相關(guān)的信息;第二部分在于相關(guān)業(yè)務(wù)流程的審核審批,如審批學(xué)生的勤工助學(xué)崗位申請、學(xué)生的畢業(yè)離校流程、獎助學(xué)金申請以及學(xué)生基本信息的變更等.學(xué)生角色的權(quán)限主要包括學(xué)生基本信息的錄入和修改,相關(guān)學(xué)工項目的申請與查看,如勤工助學(xué)崗位的在線申請,獎助學(xué)金的申請等.系統(tǒng)用例圖如圖4,圖5所示.
圖4 學(xué)工處工作人員用例圖
2.2 數(shù)據(jù)庫分析與設(shè)計
數(shù)據(jù)庫設(shè)計直接影響系統(tǒng)的設(shè)計與開發(fā),因此數(shù)據(jù)庫設(shè)計是系統(tǒng)設(shè)計的重點之一.選用Mysql作為系統(tǒng)的基礎(chǔ)數(shù)據(jù)庫,借助Powerdesigner完成數(shù)據(jù)庫的實體模型的設(shè)計.
數(shù)據(jù)庫模型的設(shè)計思路主要應(yīng)用了軟件模型模塊化設(shè)計的思想[6].通過對系統(tǒng)所涉及的管理對象進(jìn)行抽象建立數(shù)據(jù)庫的概念模型,分離出不同的數(shù)據(jù)表,通過數(shù)據(jù)表組織和管理系統(tǒng)中的信息.以學(xué)工處工作人員為對象組成的實體關(guān)系如圖6所示.以勤工助學(xué)崗位信息為例進(jìn)行說明.勤工助學(xué)崗位表包括編號、崗位名稱、發(fā)布日期、崗位所屬院系、崗位申請截止日期、申請條件、主要工作內(nèi)容、招聘人數(shù)、薪酬以及崗位當(dāng)前所處的狀態(tài).本文設(shè)計了表1作為系統(tǒng)的勤工助學(xué)崗位表.
圖5 學(xué)生用例圖
圖6 系統(tǒng)E-R圖示例
其他的表諸如學(xué)生基本信息表、獎助學(xué)金信息表、貧困生基本信息表等與表1類似,這里就不再贅述了.
2.3 關(guān)鍵功能設(shè)計
在學(xué)工管理系統(tǒng)中,由于涉及到用戶角色較多,不同角色用戶涉及的管理模塊眾多,因此對于用戶的登錄權(quán)限的控制,系統(tǒng)在設(shè)計時使用Struts2的攔截器機(jī)制來控制不同用戶的操作權(quán)限.用戶在客戶端發(fā)出登錄請求時,系統(tǒng)在執(zhí)行Action的execute方法之前,Struts2會首先執(zhí)行struts.xml文件中引用的攔截器,在執(zhí)行完所有引用的攔截器的intercept()方法之后才真正開始執(zhí)行Action定義的execute方法.
框架中利用Struts2的攔截器進(jìn)行權(quán)限控制的主要代碼如下.
public class LoginInterceptor implements interceptor{
public String intercept(ActionInvocation invocat) throws Exception{
HttpSession session=request.getSession();
String privilege=session.getAttribute(“Privilege”) //用戶權(quán)限字段
String return_view =“”;
if(privilege == AUTHOR){
…. //相關(guān)操作權(quán)限設(shè)置
return_view = “authorview”;}
if(privilege == STU){
…..//相關(guān)權(quán)限設(shè)置
return_view = “studentview”;}
invocate.invoke();
return return_view;}}.
在Struts2中攔截器作為一個基本插件配置到對應(yīng)的Action中,在struts.xml文件中基本的配置方法如下例所示:
……………………………………………….
………………………………………………. //其他與Action相關(guān)的配置
.
表1 勤工助學(xué)崗位信息表
3.1 視圖層的實現(xiàn)
系統(tǒng)的視圖層采用JSP+BUI框架來實現(xiàn),為了使用BUI框架編碼開發(fā),將BUI框架的相關(guān)發(fā)布包:dpl-min.css、bui-min.css、main.css、bui-min.js、config-min.js等.在BUI框架下,窗口、表單、表格和菜單都是直接可以復(fù)用的組件,在開發(fā)的時候只需直接使用這些組件,就可以創(chuàng)建出富有表現(xiàn)力的用戶界面,相關(guān)文件的引入代碼如下所示:
BUI.use('common/main',function(){
var config = [{
id:'menu',
menu:[{
text:'首頁內(nèi)容',
items:[…………….//菜單的定義]}];
.
3.2 控制層的實現(xiàn)
編寫控制層類LoginAction.java,StudentHelpAction.java和scholarshipAction.java等.這些控制類用于接收來自視圖層的HTTP請求,處理請求中傳送過來的數(shù)據(jù),并調(diào)用相關(guān)的業(yè)務(wù)邏輯組件完成對實體類的增刪改查,并將處理的結(jié)果返回給視圖層.在Struts.xml文件中配置Action,由于BUI框架與控制器的交互的數(shù)據(jù)格式選用JSON,在配置Action的返回類型時應(yīng)將result的type設(shè)置為JSON,使其返回給視圖層的是JSON格式的字符串.
3.3 業(yè)務(wù)邏輯層的實現(xiàn)
系統(tǒng)在業(yè)務(wù)邏輯層使用的是面向接口的編程方式,而非是直接調(diào)用某個具體的實現(xiàn)類,首先編寫業(yè)務(wù)邏輯相關(guān)的接口,然后再編寫對應(yīng)的實體類來實現(xiàn)業(yè)務(wù)邏輯組件,通過接口調(diào)用的方式來實現(xiàn)業(yè)務(wù)邏輯層的解耦[7].在系統(tǒng)的業(yè)務(wù)邏輯層使用Spring框架來管理業(yè)務(wù)邏輯實體類.因業(yè)務(wù)邏輯在各個模塊中實現(xiàn)思路基本是一致的,所以本文就已系統(tǒng)的勤工助學(xué)管理模塊為例來介紹.編寫業(yè)務(wù)邏輯層接口StudentHelpService.java,在接口中定義關(guān)于實體類的增刪改查4種操作,然后定義StudentHelpServiceImple.java 來實現(xiàn)接口中定義的方法,最后將StudentHelpServiceImple類托管于Spring框架中,通過Spring工廠來實現(xiàn)業(yè)務(wù)邏輯組件的調(diào)用.
3.4 數(shù)據(jù)持久層的實現(xiàn)
根據(jù)系統(tǒng)的數(shù)據(jù)模型編寫對應(yīng)的實體類Student.java、StudentHelp.java、Schoolarship.java等及實體關(guān)系映射文件Student.orm.xml、StudentHelp.orm.xml和Schoolarship.orm.xml.具體的數(shù)據(jù)庫連接和釋放等操作有Hibernate 框架和數(shù)據(jù)庫連接池來實現(xiàn).具體來說對于學(xué)生信息實體Student類,首先定義操作Student類的接口StudentDao,而具體的操作由StudentDaoImple來實現(xiàn).
4.1 測試環(huán)境的配置
測試環(huán)境的配置按照下面基本步驟進(jìn)行:(1) 基礎(chǔ)軟件的安裝:JDK 和MyEclipse10.2、Tomcat7.5以及MySql5.6;(2) 將打包好的項目文件StuWorkOA.war拷貝到Tomcat 服務(wù)器下面的Webapps目錄下面;(3) 啟動Tomcat服務(wù)器,訪問系統(tǒng)的登錄頁面,完成注冊及登錄之后進(jìn)入系統(tǒng)的主操作界面.
4.2 系統(tǒng)的功能測試
以用戶的信息管理模塊為例進(jìn)行測試,采用等價類劃分法對模塊進(jìn)行測試,由于測試項較多只列出典型的測試選項.如表2所示.
表2 系統(tǒng)用戶管理模塊測試表
經(jīng)過不斷測試,系統(tǒng)的用戶管理模塊工作正常,對于不同的用戶輸入響應(yīng)結(jié)果與預(yù)期的結(jié)果保持一致.
本文首先對學(xué)工管理系統(tǒng)的特點進(jìn)行了分析與研究,提出了基于BUI前端框架、Struts2、Spring、Hibernate整合框架的設(shè)計方案,設(shè)計和實現(xiàn)了一套完整的學(xué)工管理系統(tǒng).經(jīng)實踐證明,該架構(gòu)方案能夠很好的實現(xiàn)各功能模塊的解耦與分離,使系統(tǒng)具有很好的穩(wěn)定性和擴(kuò)展性,基本達(dá)到了系統(tǒng)的預(yù)期的設(shè)計目標(biāo).由于系統(tǒng)的基礎(chǔ)設(shè)計方案的可擴(kuò)展性和靈活性較好,因此對于后續(xù)的開發(fā)者而言能夠根據(jù)不同院校和機(jī)構(gòu)的需求定制和修改系統(tǒng).
[1] 邱麗麗,陸源. 基于ExtJS和SSH2架構(gòu)的網(wǎng)上報銷系統(tǒng)設(shè)計與實現(xiàn)[J]. 計算機(jī)應(yīng)用與軟件,2016,(9):76-79.
[2] 李雷孝,劉曉軍,劉利民,等. 基于SSH整合框架的科研項目管理系統(tǒng)的設(shè)計與實現(xiàn)[J]. 內(nèi)蒙古農(nóng)業(yè)大學(xué)學(xué)報:自然科學(xué)版,2012,(1):210-214.
[3] 劉靜,刑藏菊,龔凡蕾. 基于SSH的高校MBA管理系統(tǒng)設(shè)計與實現(xiàn)[J]. 計算機(jī)應(yīng)用與軟件,2011,(11):261-263.
[4] 董萍. 基于SSH框架的學(xué)工管理系統(tǒng)的設(shè)計與實現(xiàn)[J]. 周口師范學(xué)院學(xué)報,2015,(2):111-115.
[5] 陳遙,李珊,趙英男. 基于SSH+DWR的Web開發(fā)框架研究與應(yīng)用[J]. 南京信息工程大學(xué)學(xué)報:自然科學(xué)版,2010,(5):455-460.
[6] 張鵬偉,陳景霞,張文平,等.基于ExtJS和SSH的Web應(yīng)用架構(gòu)的研究與實現(xiàn)[J]. 陜西科技大學(xué)學(xué)報:自然科學(xué)版,2010,(6):111-115+123.
[7] 張建軍,劉虎,倪芳英. 基于SSH與Highcharts整合架構(gòu)的Web應(yīng)用研究[J]. 計算機(jī)技術(shù)與發(fā)展,2013,(9):245-247.
DesignandImplementationofStudentManagementSystembasedonBUIandSSHFramework
LI Hong-zhi HU Na-na
(School of Computer and Information Engineering, Chuzhou University, Chuzhou 239000, China)
Through the analysis of the university student management system requirements, and the characteristics and functions of the student management system is analyzed.Analysis and put forward the BUI and SSH layered enterprise application system architecture. Based on the architecture can design and imply a student management system easily.The new architecturecan effectively improve the system scalabilityand maintainability. Finally ,the system was tested, and the results show that the system performance can reach the index requirements.
BUI framework,student management system, SSH framework, architecture design
2017-04-18
安徽省網(wǎng)絡(luò)工程專業(yè)省級綜合改革試點項目(2012zy073)資助
李宏志,E-mail:1071260932@qq.com.
TP315
A
1672-6634(2017)03-0093-07