郭 標(biāo) 張林靜 胡 強(qiáng)
(安徽警官職業(yè)學(xué)院,安徽 合肥 230031)
傳統(tǒng)的實(shí)驗(yàn)實(shí)訓(xùn)模式因受到時(shí)空的局限性而缺乏靈活性[1]。傳統(tǒng)的課程教學(xué)方式無法對(duì)實(shí)驗(yàn)實(shí)訓(xùn)項(xiàng)目的發(fā)布、任務(wù)安排、跟蹤和實(shí)驗(yàn)報(bào)告的整個(gè)過程做有效的管理;缺少實(shí)驗(yàn)實(shí)訓(xùn)項(xiàng)目庫的管理;未能準(zhǔn)確有效的對(duì)學(xué)生實(shí)驗(yàn)實(shí)訓(xùn)任務(wù)各環(huán)節(jié)做監(jiān)督;師生之間的信息交流渠道較窄;實(shí)驗(yàn)報(bào)告的歸檔、批復(fù)與管理力度較低。
實(shí)驗(yàn)實(shí)訓(xùn)管理平臺(tái)是基于2014年度省質(zhì)量工程一般項(xiàng)目(2014jyxm563)和2015年度省自然科學(xué)研究項(xiàng)目《項(xiàng)目實(shí)訓(xùn)過程監(jiān)控系統(tǒng)》(12219zrkx2015B01)而開發(fā)研究的系統(tǒng)。
它提供更方便更快捷的項(xiàng)目過程的監(jiān)控,打破了時(shí)空的局限性,改變了傳統(tǒng)的教育方式,使教學(xué)控制有了更大的靈活性;同時(shí)也為我們的學(xué)生在獲取與項(xiàng)目有關(guān)資源和素材帶來了方便。實(shí)現(xiàn)了項(xiàng)目管理與發(fā)布、項(xiàng)目任務(wù)安排、項(xiàng)目進(jìn)度跟蹤、自動(dòng)生成進(jìn)度報(bào)告、項(xiàng)目驗(yàn)收和成績(jī)管理等一系列功能。
該系統(tǒng)針對(duì)課程教學(xué)采用“項(xiàng)目導(dǎo)入、任務(wù)驅(qū)動(dòng)”的教學(xué)方法[2],彌補(bǔ)了項(xiàng)目驅(qū)動(dòng)教學(xué)中對(duì)項(xiàng)目“完整的工作過程”監(jiān)控和管理的不足[3]。這套系統(tǒng)體現(xiàn)出學(xué)生是項(xiàng)目的主體,能充分調(diào)動(dòng)學(xué)生的主觀能動(dòng)性,并記錄著學(xué)生在項(xiàng)目中成長(zhǎng)的歷程。整個(gè)系統(tǒng)以項(xiàng)目過程監(jiān)控為核心,監(jiān)控項(xiàng)目整個(gè)執(zhí)行過程。當(dāng)發(fā)布項(xiàng)目時(shí),項(xiàng)目負(fù)責(zé)人可以編制項(xiàng)目任務(wù),在項(xiàng)目開展過程中每個(gè)項(xiàng)目成員隨時(shí)提交項(xiàng)目任務(wù)的進(jìn)展步驟,項(xiàng)目完成后提交項(xiàng)目成果和總結(jié)報(bào)告,最終根據(jù)項(xiàng)目過程自動(dòng)生成項(xiàng)目完整報(bào)告。指導(dǎo)教師在整個(gè)項(xiàng)目進(jìn)行過程中起著引導(dǎo)、監(jiān)督作用,具體負(fù)責(zé)項(xiàng)目立項(xiàng)、項(xiàng)目庫管理、項(xiàng)目發(fā)布、過程監(jiān)控和項(xiàng)目成果點(diǎn)評(píng)等工作。
實(shí)驗(yàn)實(shí)訓(xùn)平臺(tái)采用SpringMVC+Mybatis技術(shù)[4]完成整個(gè)系統(tǒng)的開發(fā)。Spring[5]是一個(gè)輕量的控制反轉(zhuǎn)和面向切面的容框架。它通過控制反轉(zhuǎn)(IOC)促進(jìn)松耦合,使得對(duì)象被動(dòng)地傳遞所依賴對(duì)象;通過分離業(yè)務(wù)層和邏輯層達(dá)到同系統(tǒng)服務(wù)進(jìn)行內(nèi)聚性的開發(fā)。MVC的全稱是模型(model)-視圖(view)-控制器(controller)。利用SpringMVC技術(shù)能夠?qū)⑦壿媽?、?shù)據(jù)層和界面顯示層的分離,使得前臺(tái)界面與后臺(tái)業(yè)務(wù)服務(wù)分離,在用戶交互方式更換或更新時(shí)不需要重新編寫業(yè)務(wù)層。Mybatis是一個(gè)支持普通SQL查詢、存儲(chǔ)過程和高級(jí)映射的優(yōu)秀持久層框架,只需使用簡(jiǎn)單的XML或注解用于配置和原始映射,就能將接口和Java的POJOs映射成數(shù)據(jù)庫中的記錄,為訪問數(shù)據(jù)庫提供了更大的便利。
MVC 模型[7]根據(jù)功能來分層,分別是 View,Mapper,Service,Controller,Model層。 View 是顯示數(shù)據(jù)與前臺(tái)頁面層;Mapper是對(duì)象持久化映射層,Service是業(yè)務(wù)邏輯的處理層,實(shí)現(xiàn)業(yè)務(wù)需求調(diào)用Mapper層;Controller層是控制整個(gè)應(yīng)用程序的前后臺(tái)傳遞,處理輸入、處理表單等交互動(dòng)作,負(fù)責(zé)數(shù)據(jù)在業(yè)務(wù)邏輯和展示界面之間的調(diào)用;Model是數(shù)據(jù)模型層,完成數(shù)據(jù)表中字段重定義,模型對(duì)象負(fù)責(zé)在數(shù)據(jù)庫中存取數(shù)據(jù)。如下圖1所示:
圖1 自下而上的數(shù)據(jù)層次圖
SpringMVC核心是前端控制器(DispatcherServlet),它是各層次間調(diào)度管理器,它能根據(jù)請(qǐng)求映射規(guī)則分發(fā)給相應(yīng)的頁面控制器(動(dòng)作/處理器)進(jìn)行處理。各層次間數(shù)據(jù)流走向描述如下:JSP網(wǎng)頁(View層)中action請(qǐng)求調(diào)用Controller層中對(duì)應(yīng)的方法;Controller層調(diào)用Service層方法和Model層中的數(shù)據(jù)模型來獲取數(shù)據(jù)對(duì)象,并將數(shù)據(jù)對(duì)象返回到JSP頁面;Service層數(shù)據(jù)借助Mapper層與數(shù)據(jù)庫數(shù)據(jù)表關(guān)聯(lián),從而使數(shù)據(jù)持久化;Mapper層結(jié)合對(duì)應(yīng)XML文件的SQL語句來完成數(shù)據(jù)表操作,獲得的數(shù)據(jù)放在Model層對(duì)應(yīng)數(shù)據(jù)對(duì)象中。Model層描述的數(shù)據(jù)對(duì)象和JSP頁面(View層)再通過IOC(控制反轉(zhuǎn))技術(shù)融合,從而使得數(shù)據(jù)返回前臺(tái)頁面。如下圖2所示:
圖2 MVC層次之間數(shù)據(jù)傳遞關(guān)系
它是應(yīng)用程序中處理數(shù)據(jù)顯示的部分,通常視圖是依據(jù)Model層模型數(shù)據(jù)創(chuàng)建的??蛻舳讼騑eb應(yīng)用服務(wù)器發(fā)出Request請(qǐng)求,后臺(tái)Controller層響應(yīng)請(qǐng)求,調(diào)用程序處理后得到Response結(jié)果返回給客戶端。Request與Response之間的不斷交互構(gòu)成了客戶端與服務(wù)器的數(shù)據(jù)傳遞過程[6]。
它的作用是接受從客戶端request數(shù)據(jù)請(qǐng)求,并依據(jù)業(yè)務(wù)需求處理數(shù)據(jù),待數(shù)據(jù)處理完畢后,再將Model數(shù)據(jù)對(duì)象和View視圖相融合,生成Response結(jié)果,回傳給客戶端。
它的作用是數(shù)據(jù)業(yè)務(wù)處理,負(fù)責(zé)數(shù)據(jù)的增刪改查等操作的調(diào)度。
它的作用是對(duì)象持久化,根據(jù)映射與數(shù)據(jù)庫中的記錄相對(duì)應(yīng),從而持久保存數(shù)據(jù)。
它是建立在內(nèi)存中各層次交流的數(shù)據(jù)模型,往往與數(shù)據(jù)表字段相對(duì)應(yīng),即數(shù)據(jù)表記錄與內(nèi)存中數(shù)據(jù)對(duì)象一一對(duì)應(yīng),通過Get/Set方法來訪問數(shù)據(jù)。
在實(shí)驗(yàn)實(shí)訓(xùn)管理平臺(tái)中需要實(shí)時(shí)更新數(shù)據(jù)庫。例如批閱進(jìn)展的子模塊中,系統(tǒng)管理員需要實(shí)時(shí)更新教師對(duì)學(xué)生實(shí)訓(xùn)項(xiàng)目的監(jiān)控情況。存儲(chǔ)過程[7]是存儲(chǔ)在數(shù)據(jù)庫中一組為了完成特定功能的SQL語句集,它只需一次編譯后永久調(diào)用。其重復(fù)使用性,減少數(shù)據(jù)庫開發(fā)人員的工作量,提高開發(fā)效率。為了防止Sql注入式攻擊[8]和保障數(shù)據(jù)安全性,采用帶參數(shù)的存儲(chǔ)過程[9],并在controller層調(diào)用該存儲(chǔ)過程。具體過程如下:
Step1:創(chuàng)建臨時(shí)表(examinecount表)
Step2:創(chuàng)建帶參數(shù)的存儲(chǔ)過程updateExaminecount
Step3:在java中controller層調(diào)用帶參數(shù)的存儲(chǔ)過程。
Java Web技術(shù)的不斷發(fā)展,正確處理客戶端與服務(wù)器間、服務(wù)器內(nèi)部的數(shù)據(jù)傳遞對(duì)整個(gè)數(shù)據(jù)流走向的效率有著重要影響,掌握數(shù)據(jù)流的走向便于提高軟件的開發(fā)效率,減少后期的維護(hù)成本。帶參數(shù)數(shù)據(jù)存儲(chǔ)過程完成了實(shí)時(shí)更新數(shù)據(jù)功能,不僅提高數(shù)據(jù)庫的可維護(hù)性,而且提高了數(shù)據(jù)庫安全性。
[1]劉斯津.工程實(shí)驗(yàn)實(shí)訓(xùn)中心網(wǎng)絡(luò)平臺(tái)的構(gòu)建研究[J].長(zhǎng)春師范大學(xué)學(xué)報(bào),2015,(34):104-106.
[2]曹文,瞿金山,張春燕,等.人機(jī)交互型電子技術(shù)實(shí)驗(yàn)實(shí)訓(xùn)平臺(tái)研究[J].江蘇科技信息,2014,(12):11-12.
[3]姚云芳.中職電子專業(yè)項(xiàng)目教學(xué)“實(shí)驗(yàn)實(shí)訓(xùn)平臺(tái)”構(gòu)建與實(shí)踐研究——以《電子基本電路安裝與測(cè)試》課為例[J].學(xué)周刊,2014,(8):55-57.
[4]楊立春.基于 Struts+Spring+Hibernate 框架的應(yīng)用與研究[J].福建電腦,2007,(6):52-53
[5]葉鋒.Python最新Web編程框架Flask研究[J].電腦編程技巧與維護(hù),2015,(15):27-28.
[6]楊懌,陳卓妮.Java Web應(yīng)用底層數(shù)據(jù)傳遞模式的分析與研究[J].湖北師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2014,(1):27-29.
[7]王洪,朱銳.數(shù)據(jù)庫存儲(chǔ)過程設(shè)計(jì)及應(yīng)用[J].電子信息對(duì)抗技術(shù),2009,(24):59-63.
[8]常紅梅.基于存儲(chǔ)過程的數(shù)據(jù)庫安全性實(shí)踐初論[J].網(wǎng)絡(luò)安全,2015,(4):112-114.
[9]叢大眾.Orcel數(shù)據(jù)庫中存儲(chǔ)過程開發(fā)研究[J].電子制作,2015,(1):70-71.