喬逢春,張 立,張文杰
(北京林業大學 理學院,北京 100083)
一種Java EE多層架構下的大學物理實驗系統
喬逢春,張 立,張文杰
(北京林業大學 理學院,北京100083)
物理實驗可以有效地培養學生的動手能力、實踐能力和創新精神,因此物理實驗在大學物理教學中具有重要的地位。基于MVC設計思想,通過Maven管理項目,以Struts2、Hibernate、Spring和Ajax為基本框架來構建整個系統。目的在于克服傳統測評方式的弊端,提升物理實驗教學管理的自動化程度。實踐表明,系統具有良好的穩定性和可擴展性,較好地滿足了物理實驗教學改革的需求,具有一定的應用價值。
物理實驗;SSH2;Ajax;jQuery;UML建模
大學物理實驗課是理工科各專業的公共基礎課程,是本科生接受系統實驗方法和實驗技能訓練的開端,有助于全方位培養學生的物理思想方法、動手能力、實踐能力、創新精神等基本科學素質[1],因此物理實驗教學在高等教育中占據著重要地位。
近年來,傳統的教學方式逐漸被網絡化的教學方式所替代,各種網絡學習平臺的推出,極大地減輕了老師和學生的負擔。通過分析本系統的需求和可行性,以及比較當前互聯網科技中幾種應用比較廣泛的網站開發技術,系統采用MVC設計模式,使用Maven構建項目并管理依賴的jar包,整合Struts2、Hibernate、Spring和Ajax框架來構成Java EE多層架構體系。
1.1Maven項目管理工具
系統利用Maven構建項目,并對項目進行清理、編譯、測試、打包和部署等操作。此外,Maven還是一個依賴管理工具和項目信息管理工具,其利用本地倉庫以及配置文件pom.xml管理第三方jar包,實現倉庫在多個項目之間的共享[2-3],完美解決了傳統方式下的冗余jar包和多版本jar包所帶來的問題。
1.2SSH2框架
SSH2框架是由有三種框架集成的,它們分別是基于MVC模式的Struts2框架和基于IoC模式的Spring框架以及對象/關系映射框架Hibernate。在SSH2框架中,Spring充當了一個JavaBean容器,它使用IoC和AOP技術接管了Hibernate的DAO、事務和Struts2的action對象以及service業務層,從而能夠充分地管理事務和代理request請求。經過IoC容器的處理后,針對面向接口的編程使系統項目的MVC分層更明確[4]。
SSH2框架的基本業務流程是:在view層中,通過JSP頁面接收請Request;Struts2根據其配置文件將ActionServlet接收到的request指定給相應的Action處理;Action調用相應的service,Spring IoC容器向Action提供業務模型(Model)組件和該組件的數據訪問對象(DAO)完成業務邏輯,并提供緩沖池和事務處理等容器組件以保證數據的完整性、提升系統性能;持久層則依賴于Hibernate的對象化映射與數據庫進行交互,處理DAO請求的數據,并由JSP頁面傳送response[5-6]。
1.3Ajax框架
基于XML的異步JavaScript,簡稱Ajax。Ajax的核心就是JavaScript對象XMLHttpRequest,它通過JavaScript向服務器發送請求,并處理服務器響應[7]。
系統的JSP頁面中絕大多數請求通過jQuery類庫中的ajax()方法發送給服務器。ajax()返回其創建的XMLHttpRequest對象,通過 HTTP請求加載遠程數據。系統利用 struts2的ServletActionContext類通過非IoC方式獲得response對象,將信息從action層或service層傳遞給ajax()的回調函數。
相比傳統的表單提交方式,Ajax在提交、請求、接收時,都是異步進行的,不需要丟棄整個頁面,而是提交時在后臺新建一個請求,采用局部刷新技術,因此用戶的原始數據得以保留,用戶的當前活動不會被阻塞。
本物理實驗系統主要是為了方便廣大學生學習大學物理實驗這門課程而設計的,因此它的功能與同學們的自主學習以及教師的實驗安排息息相關。系統主要由管理員/教師端(以下簡稱管理員端)和學生端兩部分組成,其中管理員端由用戶管理、通知公告、預習題庫、預習安排、成績管理、實驗管理、課程管理、修改成績八個模塊組成,用戶管理模塊下面又是由教師管理、學生管理、班級管理這3部分組成。學生端由通知公告、我的預習、我的實驗、選修實驗、成績查詢、修改密碼6個模塊組成。系統用例圖如圖1所示。

圖1 系統用例圖Fig.1 The use case diagram of system
2.1數據庫設計
系統數據庫總共有8個數據表,包括:用戶信息表、班級信息表、課程信息表、物理實驗信息表、通知公告表、預習試卷信息表、預習題庫表和成績信息表。為更好地說明各數據表之間的關系,系統通過PowerDesigner軟件對MySQL數據庫進行逆向工程得到如圖2所示的E-R圖。

圖2 系統數據庫E-R圖Fig.2 The E-R diagram of the database
2.2通用子功能接口
有一些子功能在多個模塊中均有應用,例如分頁、模糊查詢、文本編輯等。在設計分頁功能的過程之中,系統將當前頁(currentPage)、頁數(pageCount)、每頁顯示記錄的數目(pageSize)和頁面查詢結果總數(resultCount)作為屬性封裝成page實體類,結合myPagination插件實現分頁,嵌入系統的各個功能模塊。系統涉及到的文本編輯均由xheditor文本編輯器來完成,根據需要在后臺編寫相應的action并配置struts.xml來實現圖片上傳功能。
2.3登錄
用戶通過輸入網址即可跳轉到本系統的登錄界面,該頁面沒有用戶權限區分,任何用戶都可以進行訪問,只有用戶登錄成功之后才能繼續訪問本系統。在設計登錄的過程中,系統使用了apache shiro安全技術。它為系統提供了一個直觀而全面的認證、授權、加密及會話管理的解決方案[8],其中密碼采用MD5算法進行加密。shiro配置流程如下:
1)在web.xml中配置shiro過濾器;
2)在 applicationContext.xml中添加 shiro配置:添加shiroFilter、securityManager、lifecycleBeanPostProcessor以及myRealm等Java Bean;
3)實現MyRealm:繼承AuthorizingRealm,并重寫認證授權方法。
登錄界面如圖3所示。

圖3 系統登錄界面Fig.3 The entry interface of system
2.4管理員端
1)用戶管理模塊:用戶管理模塊是整個系統的基礎,該模塊主要由教師管理、班級管理、學生管理3部分組成。所有教師、班級和學生的初始信息都是通過管理員在用戶管理模塊下面的來添加的,這3個部分之間相互關聯,添加時存在先后順序:首先應該添加教師,有了教師的基本信息后才可以添加班級信息,最后才可以添加學生。其中,在學生管理模塊之中,由于學生數量很多,不應采用單個添加的方式,系統采用excel批量導入的方式來進行添加。
2)預習題庫模塊:該模塊初始化的時候分頁顯示所有必做實驗信息。點擊實驗名稱即可查看該實驗所有題目及答案;點擊“新增預習題目”,教師可以設置題目類型,編輯題目內容和答案,點擊“提交”按鈕以新增該實驗的一道預習題目;點擊“編輯預習題目”可以對每道題目的內容和答案進行修改,也可以刪除題目。
3)課程管理模塊:在新增實驗課程的時候,系統綜合使用了jQuery的表單驗證機制和easy UI的datetimebox、validatebox等插件。其中選修實驗課程的名稱后用紅色字體 (選修)標注,點擊名稱可以查看選修該課程的學生名單。
4)成績管理模塊:該模塊初始化的時候分頁顯示所有的班級信息,點擊“生成excel”按鈕,系統使用Apache POI方式在瀏覽器客戶端生成excel文件供教師下載以查看該班級所有學生的成績;點擊學生姓名,可以彈出一個頁面以供教師編輯該生的成績,該頁面實質上是利用JavaScript的onchange事件實現的一個簡易加、除法計算器。其中總成績不可編輯,教師可以修改預習成績和實驗成績,總成績隨之變化。
2.5學生端
1)我的預習模塊:學生在實驗課程開始之前進入該模塊,只有在規定的時間范圍之內并且未提交過該實驗預習試卷的前提下,才能進入預習試卷做題。當學生第一次點擊進入預習試卷的時候,系統從題庫中隨機抽取該實驗4道不同的預習題目組成該同學的預習試卷,并將題目的id記錄到數據表的相應字段中去。在預習試卷頁面當中,系統為單選題、多選題和判斷題設置不同的html標簽,當學生點擊“保存并退出”按鈕時,系統利用jQuery的多種選擇器在前臺記錄學生的做題信息,并采用拼接字符串的方式將所有的答案整合成一個字符串,通過ajax()方法向后臺發送請求,方便學生下次繼續做題。當學生點擊“提交試卷”的時候,系統將學生的答案和題目的參考答案相比較,自動算出預習成績。圖4為該模塊的時序圖。

圖4 預習模塊時序圖Fig.4 The timing diagram of preview
2)實驗模塊:該模塊是學生在實驗室做實驗提交實驗數據的時候使用的。系統根據每個必做實驗的特點和要求,為每個必做實驗編寫相應的JSP頁面。學生只有上課時間才能進入相應的實驗頁面提交實驗數據。對于每個實驗,每個同學有兩次提交實驗數據的機會,系統根據學生提交的實驗數據自動算出實驗結果并與參考結果相比較,并給予相應的實驗成績。圖5為該模塊活動圖。

圖5 實驗模塊活動圖Fig.5 The activity diagram of experiments
大學物理實驗系統基于MVC設計思想,通過Maven管理項目,以Struts2、Hibernate、Spring和Ajax為基本框架,緊跟時代前沿,較好地滿足了物理實驗教學改革的需求,具有一定的應用價值。但是本系統仍然存在一些不足之處,例如沒有將所有的實驗頁面做成一個統一的接口。最初的設想是教師在新增實驗的時候可以自行設定物理量、物理量的有效位數以及實驗結果的評判標準等等,因為難度較大,取而代之的是根據每個實驗的特點編寫一個獨立的頁面,增加了項目的工作量,降低了系統的靈活程度。
[1]邵建新,劉云虎,張子英,等.大學物理實驗考核方式的改革與探索[J].物理通報,2010(2):46-48.
[2]董曉光,喻濤.使用Maven構建java項目[J].電子技術與軟件工程,2014(10):105.
[3]徐立新,雷相波.應用Maven管理項目 [J].電腦知識與技術,2010,6(10):2404-2405.
[4]高洪巖.基于Struts2+Hibernate+Spring使用開發指南[M].北京:化學工業出版社,2010.
[5]郭廣軍,謝東,陳利品.基于SSH整合架構的教學支持系統設計與實現[J].計算機工程與設計,2009,30(13):3111-3116.
[6]郭廣軍,朱昭君,王劍波.基于SSH架構的課程作業與成績管理系統[J].微電子學與計算機,2010,27(8):157-160.
[7]王向兵.Java EE多層架構Struts2+Spring3+Hibernate3 +Ajax的整合[D].大連:大連海事大學,2009.
[8]楊運平,吳智俊.Apache Shiro安全框架在技術轉移服務系統中的應用[J].計算機與現代化,2014(3):158-160.
A system of collegiate physics experiment based on the multilayered architecture of Java EE
QIAO Feng-chun,ZHANG Li,ZHANG Wen-jie
(College of Science,Beijing Forestry University,Beijing 100083,China)
Physics experiment can effectively develop hands-on ability,practical ability and innovative spirit of students,therefore it plays an important role in the teaching of collegiate Physics.This paper introduces a system of collegiate Physics Experiment based on MVC design ideas,project of which was managed by Maven,and the basic framework of which consists of Struts2,Hibernate,Spring and Ajax.The goal is to overcome the disadvantages of traditional testing methods and improve the automation of teaching management of physics experiment.It is certified that the system is stable and expandable,meet the needs of the teaching reform of physics experiment in a good way,and has a certain value.
physics experiments;SSH2;ajax;jQuery;UML modeling
TN919
A
1674-6236(2016)02-0038-04
2015-03-17稿件編號:201503226
喬逢春(1994—),男,山西臨汾人,助理工程師。研究方向:電子技術與應用。