龔雄興,寧 彬,袁 磊
(湖北文理學(xué)院 數(shù)學(xué)與計算機科學(xué)學(xué)院,湖北 襄陽 441053)
隨著高校軟件實訓(xùn)實踐的不斷深入,以及高校信息化建設(shè)的進一步推進,開發(fā)與設(shè)計基于Web的軟件實訓(xùn)平臺顯得尤為重要. 文中筆者探討了在Web環(huán)境下,Struts框架如何應(yīng)用于軟件實訓(xùn)系統(tǒng)的實例開發(fā).
Struts是比較成熟的MVC(Model View Controller,模型-視圖-控制器)應(yīng)用框架,提供了對開發(fā)MVC系統(tǒng)的底層支持,采用的主要技術(shù)為Servlet、JSP(Java Server Pages)和Custom tag library(客戶標簽庫)[1]. 簡單的講,Struts是基于MVC模式的開源框架,即Controller是通過ActionServlet對象實現(xiàn)的,獲得View(JSP)的請求后根據(jù)ActionMapping對象調(diào)度對應(yīng)的Model(Action對象)處理業(yè)務(wù)邏輯,并將獲得的處理結(jié)果(ActionForward對象)返回給View(JSP來響應(yīng),同時通過ActionForm對象封裝數(shù)據(jù)在Model和View之間交互使用. Struts框架的組件結(jié)構(gòu)如圖1所示.
圖1 Struts框架的組件結(jié)構(gòu)
1)模型. 模型主要是表示一個系統(tǒng)的狀態(tài)和業(yè)務(wù)邏輯. 在Struts中,Java Beans就是模型的典型代表,包括窗體Bean(Form Bean),請求Bean(Request Bean)及會話Bean(Session Bean).
2)視圖. Struts應(yīng)用中的視圖是通過JSP技術(shù)實現(xiàn)的. Struts提供自定義標記庫,通過自定義標記可以簡化創(chuàng)建用戶界面的過程,及其與Model中ActionForm的映射,完成對用戶數(shù)據(jù)的封裝、顯示功能,不涉及到系統(tǒng)的業(yè)務(wù)邏輯.
3)控制器. 控制器主要是由ActionServlet類和Action類實現(xiàn). ActionServlet類是Struts框架中的核心組件,主要負責(zé)接收HTTP(Hypertext Transport Protocol,超文本傳送協(xié)議)從客戶端發(fā)出的請求信息,并根據(jù)配置文件Struts-config.xml的配置信息,把請求經(jīng)解釋后分發(fā)給對應(yīng)的Action對象. Action類負責(zé)調(diào)用模型的方法,更新模型的狀態(tài),并幫組控制應(yīng)用程序的流程,從而實現(xiàn)核心的業(yè)務(wù)邏輯,將響應(yīng)結(jié)果送回到客戶端.
采用基于MVC模式的Struts應(yīng)用架構(gòu)進行開發(fā),適應(yīng)需求的經(jīng)常變更、業(yè)務(wù)邏輯的多樣性. 在調(diào)研時,以信息處理為基礎(chǔ),充分考慮軟件實訓(xùn)教學(xué)過程中的常規(guī)性和可變性因素,為軟件實訓(xùn)教學(xué)過程的管理提供全方位的、多層面的應(yīng)用服務(wù).
1)軟件實訓(xùn)管理信息化和工作流程規(guī)范化需求. 實訓(xùn)實踐過程的所有信息,包括實訓(xùn)計劃、案例等,均有由管理員統(tǒng)一管理,以更好地實現(xiàn)資源共享.
2)在線評閱實訓(xùn)報告需求. 在線提交與批閱軟件實訓(xùn)報告,既可節(jié)約教師、學(xué)生的時間,加快交流反饋過程,也可體現(xiàn)網(wǎng)絡(luò)化特色.
3)案例庫的建設(shè)需求. 通過擴充案例庫,并仿真演示實訓(xùn)項目的操作過程,以及不同難易程度的參考信息,讓學(xué)生可以根據(jù)個人情況進行相應(yīng)的學(xué)習(xí)進度調(diào)整.
4)互動需求. 建立在線調(diào)查和監(jiān)控,收集學(xué)生的意見,調(diào)查學(xué)生的滿意度等,用來指導(dǎo)或監(jiān)督軟件實訓(xùn)過程,用于改進其實訓(xùn)效果.
結(jié)合上述的需求分析,遵循模塊化的設(shè)計思想,采用基于Struts的Web應(yīng)用體系結(jié)構(gòu),即三層的瀏覽器/服務(wù)器 B/S(Browser/Server)體系結(jié)構(gòu). Web瀏覽器是集成所有信息服務(wù)的最終平臺,提供全動態(tài)、分布式的信息發(fā)布與處理機制,實現(xiàn)軟件實訓(xùn)信息按角色或權(quán)限進行動態(tài)發(fā)布和更新. 構(gòu)建的系統(tǒng)功能劃分如圖2所示.
該系統(tǒng)擁有三類用戶角色,分別為實訓(xùn)管理員(實訓(xùn)組長)、實訓(xùn)指導(dǎo)教師、實訓(xùn)學(xué)生. 實訓(xùn)管理員角色即指軟件實訓(xùn)教學(xué)團隊的負責(zé)人(組長);實訓(xùn)指導(dǎo)教師即指參加實訓(xùn)授課或指導(dǎo)實訓(xùn)教學(xué)過程的教師;實訓(xùn)學(xué)生則指所有參加實訓(xùn)的學(xué)生.
圖2 系統(tǒng)功能結(jié)構(gòu)
根據(jù)實訓(xùn)管理員、實訓(xùn)指導(dǎo)教師、實訓(xùn)學(xué)生三類用戶的定位,自動生成適合不同角色訪問的實訓(xùn)資源體系框架,有效地為用戶提供資源使用引導(dǎo). 當(dāng)實訓(xùn)管理員登錄后,可以設(shè)置開放的實訓(xùn)案例、授課安排和進度等信息發(fā)布與維護,以及在線統(tǒng)計實訓(xùn)效果等數(shù)據(jù);實訓(xùn)指導(dǎo)教師登錄后可以查詢授課安排和進度等信息、以及在線批改學(xué)生報告、上傳資源;實訓(xùn)學(xué)生登錄后可以根據(jù)個人情況進行預(yù)約答辯、上傳實訓(xùn)報告和查詢批閱結(jié)果和成績、下載實訓(xùn)指導(dǎo)書等資源. 該系統(tǒng)有助于實現(xiàn)軟件實訓(xùn)教學(xué)資源的科學(xué)化、統(tǒng)一化管理,搭建和展示具有一定特色的軟件實訓(xùn)門戶平臺. 對于教師和學(xué)生而言,能夠有效地應(yīng)用軟件實訓(xùn)的各類在線資源實現(xiàn)雙向互動,及時全面地掌握軟件實訓(xùn)的實踐過程和效果.
嚴格地說,現(xiàn)有的軟件實訓(xùn)系統(tǒng)是一個關(guān)于軟件實訓(xùn)教學(xué)的內(nèi)容管理系統(tǒng) CMS(Content Management System),即管理員在Web服務(wù)器端整合應(yīng)用于軟件實訓(xùn)教學(xué)過程的案例,在Web客戶端向?qū)W生顯示案例[2-3].筆者在本文中所設(shè)計的軟件實訓(xùn)系統(tǒng),主要具有以下兩個方面的特色:
1)在設(shè)計模式上,選用Struts框架具有組件模塊化、靈活性和重用性的優(yōu)點,可以清晰地區(qū)分控制、事務(wù)邏輯和界面,同時簡化了傳統(tǒng)的運用MVC設(shè)計模型來開發(fā)Web應(yīng)用程序的過程,提高了開發(fā)效率.
2)在功能設(shè)計上,與現(xiàn)有的軟件實訓(xùn)系統(tǒng)相比,主要體現(xiàn)在軟件實訓(xùn)實踐過程的交互性. 即除了實現(xiàn)軟件實訓(xùn)教學(xué)過程的一般信息化管理之外,還整合了其在線業(yè)務(wù)處理,從而加強了軟件實訓(xùn)教學(xué)的互動性和有效性,如在線評閱報告、展示學(xué)生的軟件實訓(xùn)成果等功能.
在部署軟件實訓(xùn)系統(tǒng)后,根據(jù)實際應(yīng)用的體驗和反饋,進行了相應(yīng)的優(yōu)化設(shè)計. 主要體現(xiàn)在安全性控制和中文請求響應(yīng)兩個方面.
由于軟件實訓(xùn)管理系統(tǒng)作為一個公共平臺,部署在校園局域網(wǎng)上并全天候運行,主要服務(wù)于學(xué)生、教師和管理員三類用戶. 這就需要針對不同用戶設(shè)置不同的權(quán)限,以提高系統(tǒng)的安全性. 本軟件實訓(xùn)系統(tǒng)在設(shè)計與實現(xiàn)過種中,采用由一個類負責(zé)功能權(quán)限和網(wǎng)頁訪問的安全檢查,而不是在每個JSP頁面或Action類中來實現(xiàn). 通過使用ProcessRales方法提供的頁面和功能級別的安全檢查,擴展了RequestProcess類,覆蓋其方法processRoles進行安全性檢查[4]. 其中使用HashMap存儲角色到頁面ID和功能ID的映射,在配置文件web.xml中加人安全的聲明方法來實現(xiàn)功能權(quán)限上的訪問;要實現(xiàn)頁面級的安全控制,在Tiles文件中的設(shè)置如下:
如果在頁面請求的數(shù)據(jù)中包含中文,將會顯示亂碼. 這是由ActionServlet自動從頁面HtmlForm中提取請求數(shù)據(jù)到FormBean顯示而導(dǎo)致的[5]. 采用Servlet2.3中提供的Filter特性來解決這個問題. 編寫一個完成編碼轉(zhuǎn)換功能的類,實現(xiàn)Filter接口,并且在web.Xml文件中做相應(yīng)的配置,即可讓所有頁面請求中的request數(shù)據(jù)在被接收到FormBean顯示之前轉(zhuǎn)換為GB2312編碼.
Struts是一個基于MVC的開源框架方式,靈活地應(yīng)用它,能有效提高Web應(yīng)用程序的開發(fā)效率. 這在軟件實訓(xùn)系統(tǒng)的設(shè)計、開發(fā)和維護階段得到了有效地體現(xiàn). 正由于Web信息系統(tǒng)的高效性、靈活性、可維護性,在高校軟件實訓(xùn)實踐過程中,開發(fā)和設(shè)計此類管理平臺將會成為一種趨勢.
[1] 李 峰. 基于Struts和Hibernate框架的內(nèi)容管理系統(tǒng)的設(shè)計與實現(xiàn)[D]. 太原: 太原理工大學(xué), 2010.
[2] 陳建昆. 淺談網(wǎng)站中CMS系統(tǒng)的選型[J]. 中小學(xué)電教, 2010(6): 78-79.
[3] 李 焱, 黨小超. 基于Web2.0 CMS的教學(xué)網(wǎng)站管理系統(tǒng)的設(shè)計與實現(xiàn)[J]. 電化教育研究, 2010(6): 82-84.
[4] 鄭阿奇, 俞 琰. J2EE應(yīng)用實踐教程[M]. 北京: 電子工業(yè)出版社, 2010.
[5] 甘櫪元, 柳 彬, 康 勇, 等. 基于J2EE技術(shù)Struts框架的醫(yī)院科研信息管理系統(tǒng)的開發(fā)與應(yīng)用[J]. 計算機光盤軟件與應(yīng)用, 2010(5): 31-34.