丁振凡
(華東交通大學信息工程學院,江西南昌 330013)
基于Cloud Foundry云平臺的網(wǎng)絡考試系統(tǒng)實現(xiàn)*
丁振凡
(華東交通大學信息工程學院,江西南昌 330013)
介紹了基于Cloud Foundry云平臺的網(wǎng)絡考試系統(tǒng)設計.在STS環(huán)境下通過添加“Cloud Foundry Integration”的擴展插件,開發(fā)者可通過虛擬機實現(xiàn)對Cloud Foundry云平臺應用的可視化部署與管理.應用借助云服務可訪問云上MySQL數(shù)據(jù)庫.重點圍繞考試系統(tǒng)的組卷、試卷顯示、交卷評分處理等環(huán)節(jié),介紹了用Spring MVC框架設計相應的控制器、模型及視圖顯示的編程處理方法.系統(tǒng)采用Json串實現(xiàn)試卷信息在頁面之間傳遞處理.
Cloud Foundry;云數(shù)據(jù)庫訪問;考試系統(tǒng);MVC開發(fā)模式
云計算作為一種新型的資源共享和管理模式,成為近年來研究和應用的熱點[1].將軟件部署在云的虛擬化環(huán)境中,開發(fā)人員專注于應用設計,而不用維護基礎設施,可使軟件部署變得快速方便.Cloud Foundry是VMware發(fā)布的業(yè)內(nèi)第1個開源PaaS項目.Cloud Foundry云平臺提供了軟件開發(fā)、測試和運行維護一整套環(huán)境,確保安全性、可管理性、高可用性.該系統(tǒng)通過給STS(Springsource Tool Suite)添加“Cloud Foundry Integration Extension”,實現(xiàn)在STS開發(fā)環(huán)境下對云上應用的部署與調(diào)試.
網(wǎng)絡考試是網(wǎng)絡教學平臺中較為復雜的一項功能[2].完整的考試系統(tǒng)應支持較豐富的題型.系統(tǒng)采用Spring MVC模型進行開發(fā),系統(tǒng)功能由Spring的控制器、模型、服務業(yè)務邏輯、視圖協(xié)作完成[3].為簡單起見,筆者僅討論組卷、試卷顯示、解答評分處理的實現(xiàn),且題型僅考慮單選題和多選題.
1.1 利用STS環(huán)境云虛擬機部署應用
在STS環(huán)境,是依托云虛擬機實現(xiàn)應用的部署和管理.為了連接云服務器,第1步,在http://my.cloudfoundry.com/signup站點注冊一個帳戶;第2步,在STS環(huán)境中添加“Cloud Foundry Integration”的插件;第3步,通過STS的Server添加功能,添加對應云虛擬機的服務器,連接服務器將需要注冊的帳戶和密碼;第4步,應用運行時選擇云服務器,就可以自動將應用部署到云環(huán)境.
1.2 云上MySQL數(shù)據(jù)庫的使用配置
在Cloud Foundry云上支持MySQL服務,應用中可使用云的MySQL數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)存儲.首先,要添加Mysql服務,雙擊Server窗體的Cloud Foundry server,在其控制面板中,點擊“add service”圖標,在彈出的對話框中,選擇數(shù)據(jù)源的類型和輸入服務的名稱,點擊“Finish”按鈕即可.然后,將Services面板的數(shù)據(jù)源服務拖到Application Services面板.這樣,在應用中才能通過標識連接到該數(shù)據(jù)源.
系統(tǒng)采用Spring框架進行開發(fā),系統(tǒng)開發(fā)的技術框架如圖1所示,用Spring Security進行用戶認證設計[4].在應用配置文件中引用云上定義的數(shù)據(jù)源,要用到cloud名空間的標簽.以下配置代碼引用云上標識為“mysql”的數(shù)據(jù)源,并根據(jù)該數(shù)據(jù)源建立JdbcTemplate對象[5],將與數(shù)據(jù)源連接的jdbcTemplate定義為一個Bean:
圖1 系統(tǒng)開發(fā)環(huán)境及技術
其他Bean要訪問數(shù)據(jù)庫可通過屬性依賴引用jdbcTemplate即可.
連接云數(shù)據(jù)庫后,需要編寫相應的程序執(zhí)行SQL語句建立表格,并通過程序將數(shù)據(jù)導入到表格中.文中程序所涉及的各表的字段含義解釋如下:
(1)單選題表(danxuan)、多選題表(mxuan)結構相同,含字段有number為題號,content為試題內(nèi)容,diff為難度,knowledge為所屬知識點,answer為答案.
(2)考試參數(shù)配置表(config)含字段有knowledges為考核知識點的集合,sxamount為單選題的數(shù)量,sxscore為單選題的小題分數(shù)…….其中,knowledges為一個文本串,列出所有考核知識點,每個知識點用單引號括住,知識點之間用逗號分隔.
1.3 Cloud Foundry上Web應用的工程要求
Cloud Foundry不支持動態(tài)Web工程,需要利用Maven Web工程或者利用Spring MVC模板工程來創(chuàng)建工程.在工程的依賴管理項目中,除了添加Spring框架、Spring安全框架、AOP以及Web應用所需典型Jar包依賴項外,為支持Cloud Foundry,還需要在工程的pom.xml文件中添加工件標識為“cloudfoundry-runtime”的依賴項,并在pom.xml文件中添加Spring框架的Milestone遠程倉庫,該倉庫含有cloudfoundry運行時的jar包.
在試卷處理不同階段,需要試卷的不同信息.例如:組卷階段只要記錄大題類型、各小題編號;顯示試卷時則需要大題名稱、各小題的內(nèi)容;評卷階段只要大題的每小題分值、各小題答案.因此,應用設計中對試卷信息進行各自的封裝設計,試卷傳遞只傳遞基本信息,其他信息可根據(jù)基本信息查閱數(shù)據(jù)庫得到.
實現(xiàn)試卷在應用各功能之間傳遞有多種方法,例如用session對象、用Cookie變量.該系統(tǒng)選擇采用URL參數(shù)傳遞,其好處是不用消耗客戶方和服務方的資源.但用URL傳遞試卷對象需要將對象轉換為字符串,否則,對象不能直接作為URL參數(shù).該系統(tǒng)是用Google的Gson工具實現(xiàn)對象與Json串的變換[6].另外,還需要對變換后的內(nèi)容進行URL編碼處理.
2.1 組卷相關數(shù)據(jù)對象的封裝設計
定義以下類用來封裝記錄組好的試卷的相關信息.整個試卷由若干題型構成,每個題型由若干試題構成.系統(tǒng)假定每道大題的各小題分配相同分值.
(1)用Question類記錄下某類題型的抽題信息.包括題型編碼、每小題分值以及抽到的試題編號構成的數(shù)組.
(2)用ExamPaper類中記錄整個抽取的試卷.用ExamPaper封裝整個試卷是為了方便后面的Json包裝處理.將Json串轉換為對象時,可通過ExamPaper類指示要轉換的目標.
2.2 組卷業(yè)務邏輯程序
根據(jù)組卷參數(shù)要求,組卷程序從數(shù)據(jù)庫抽取試題組卷.在類ExamPaper中設計了2個方法.genPaper方法將根據(jù)數(shù)據(jù)庫存儲的組卷參數(shù)要求進行組卷,它會調(diào)用pickst方法實現(xiàn)具體某個題型的抽題處理.
pickst方法在知識點范圍隨機選題,使用SQL的in關鍵詞選取,這里未考慮難度要求.算法可自動適應課程的實際試題數(shù)量,數(shù)量不足時按實際數(shù)量選取.方法的參數(shù)包括數(shù)據(jù)庫表格名、選題數(shù)量、知識點范圍等,方法的返回結果為選中試題編號構成的數(shù)組.限于篇幅,該方法代碼略.
2.3 組卷MVC控制器
組卷控制器將調(diào)用組卷算法完成組卷,并設置試卷顯示視圖需要的模型參數(shù).為方便考卷的解答顯示處理,引入類DisplayPaper封裝試卷顯示所需的信息.考慮到既要傳遞組卷給后續(xù)頁面,又要顯示試卷,在模型中分別用paper和disppaper屬性記錄組卷和顯示試卷內(nèi)容.因為傳遞給視圖的paper要通過在后續(xù)頁面中用表單的URL傳遞,所以除了要進行串行化處理外,還需要進行URL編碼處理.另一種辦法是采用表單的隱含域傳遞,則可以不必進行URL編碼處理.
其中,在控制器的邏輯中還用到2個私有方法:一個是getTxName,根據(jù)題型type得到題型的文字描述,可以根據(jù)題型數(shù)量擴展;另一個是getContent,根據(jù)題型和試題編號得到試題內(nèi)容.
2.4 試卷顯示視圖(display.jsp)
視圖文件給出試卷的顯示模板,試卷顯示除了解決試卷內(nèi)容的顯示外,還需要提供用戶解答控件,如圖2所示.這里用戶解答控件的命名按“data”+大題號+“-”+小題號的拼接方式.程序中在顯示處理上使用了一些技巧,包括通過EL變量實現(xiàn)試題序號的顯示,用JSTL的forTokens標簽實現(xiàn)解答選項的輸出,使用JSTL的函數(shù)庫中substring方法提取文字串的中文數(shù)字等.
3.1 閱卷方法設計
閱卷處理可以不必引入額外類記錄試卷信息,而是在前面組卷傳遞的試卷信息的基礎上進行處理,只是各小題的答案要根據(jù)試題編號和題型從數(shù)據(jù)庫獲得.評閱某個大題時,可以將小題標準答案放入數(shù)組中,與用戶輸入解答構成的數(shù)組元素逐個比較.
在ExamPaper類增加一個givescore方法對閱卷邏輯進行封裝.givescore方法的參數(shù)有題型、標準答案、學生解答、小題分數(shù),它將對某類題型的解答進行判分.方法的返回結果為一個含2個元素的數(shù)組,分別為某個題型的學生得分和總分.
3.2 閱卷控制器的邏輯
閱卷控制器是與用戶的接口,控制器通過REST風格的服務處理用戶提交的請求.用戶通過頁面表單提交解答,并通過URL參數(shù)傳遞用Json串封裝的試卷.閱卷控制器工作包括解開Json試卷,對試卷的各大類試題循環(huán)處理,通過HttpServletRequest對象的getParameter(“控件名”)方法得到學生的解答.將解答與根據(jù)試題編號獲取的答案進行比對評分,并計算總得分.最后登記學生的考卷和解答.
3.3 學生得分顯示視圖
得分顯示視圖中用EL表達式獲取來自模型的分數(shù),經(jīng)Javascript腳本彈出對話框顯示學生得分,并通過執(zhí)行頁面重定向將頁面導向到系統(tǒng)首頁,防止學生回退[7],從而避免反復交卷試出答案.
介紹了一個采用Spring MVC設計的網(wǎng)絡考試系統(tǒng),用maven工程構建應用,數(shù)據(jù)存儲采用來自云的mysql數(shù)據(jù)庫.重點討論了組卷、解答試卷、評閱試卷等環(huán)節(jié)所涉及的試卷信息的模型設計以及視圖顯示處理方法,實際系統(tǒng)中還提供了學生查卷等功能,并提供了更為多樣的題型,限于篇幅未展開.該系統(tǒng)已部署在Cloud Foundry云環(huán)境,在Java等課程的考試中應用,希望對基于Cloud Foundry云環(huán)境的Web數(shù)據(jù)庫應用開發(fā)有所參考.
[1] 林 利,石文昌.構建云計算平臺的開源軟件綜述[J].計算機科學,2012,39(11):1-6.
[2] 丁振凡.基于Spring的網(wǎng)絡考試系統(tǒng)的服務設計[J].吉首大學大學學報:自然科學版,2013,34(1):21-25.
[3] 丁振凡.用Spring MVC實現(xiàn)數(shù)據(jù)分頁顯示處理[J].智能計算機與應用,2012,2(5):20-22.
[4] 丁振凡.基于Spring Security的Web資源訪問控制[J].宜春學院學報,2012,34(8):71-74.
[5] 丁振凡,李馨梅.基于JdbcTemplate的數(shù)據(jù)庫訪問處理[J].智能計算機與應用,2012,2(3):29-32.
[6] 丁振凡.Spring REST風格Web服務的Json消息封裝及解析研究[J].智能計算機與應用,2012,2(2):9-11.
[7] 丁振凡.Web編程實踐教程[M].北京:清華大學出版社,2011:261-262.
摘 要:討論一個具Hysteresis的電報方程.首先給出Ishlinskiǐhysteresis算子的一些性質,然后得到這個方程C1+α,α強解存在性.
關鍵詞:Ishlinskiǐhysteresis算子;電報方程;單調(diào)算子;強解
(責任編輯 向陽潔)
Implementation of Network Examination System Based on Cloud Foundry Platform
DING Zhen-fan
(School of Information Engineering,East China Jiaotong University,Nanchang 330013,China)
The design of network examination system based on Cloud Foundry platform is introduced.By adding a“Cloud Foundry Integration”extension in the STS environment,developers can visually deploy and manage the applications in Cloud Foundry platform through the virtual machine.By using cloud services,application can access the MySQL database on the cloud.Focusing on test paper generation,test paper display,and scoring process in the examination system,the author introduces programming methods about the controller,model and view based on Spring MVC framework.The system uses the Json string to transfer test paper information between web pages.
Cloud Foundry;access to Cloud database;examination system;MVC development model
(責任編輯 向陽潔)
一個具Hysteresis的電報方程
徐龍封1,薛 亮1,2
(1.安徽工業(yè)大學數(shù)理學院,安徽馬鞍山 243002;2.安徽工業(yè)職業(yè)技術學院基礎部,安徽銅陵 244000)
TP393
A
10.3969/j.issn.1007-2985.2013.05.008
1007-2985(2013)05-0031-06
2013-05-17
丁振凡(1965-),男,江西豐城人,華東交通大學信息工程學院教授,碩士生導師,主要從事云計算、語義Web、計算機輔助教學研究.
A