0 引 言
隨著計算機技術的發展和用戶需求的膨脹,web應用系統的規模越來越大,開發的復雜程度越來越高,而Java EE框架可以使web應用開發變得簡單高效。目前Java EE框架數目繁多,每一種框架都有其特定的應用范圍,沒有一種框架能夠解決web應用中的所有問題,這些技術和框架的產生,在給我們的開發帶來方便的同時,也讓我們眼花繚亂,導致疲于學習這些框架,因此我們必須選擇合適的框架整合起來。優秀的開源框架Struts、Spring、Hibernate通常組合在一起使用,可以充分發揮各個框架的優點,達到快速高質量開發web應用系統的目的[1]。針對中小型的應用,商業版軟件相對價格過于高昂,如何充分利用開源軟件建立一個功能強大的應用也是要認真考慮的。
在教學管理中,每學期結束后,都要由學生對授課教師進行在線測評。目前所使用的教師測評功能較單一,只能對老師最后的工作做一個總的評價,不能反映到老師所講的章節和知識點,難以有強針對性的提高老師的教學質量。
如何使學生可以對教師的每一個教學要點進行測評,使教師可以查詢每一教學要點的測評結果是新教師測評系統的研究重點。這將對全面客觀的評價完整的教學環節起到重要的作用。也有助于教師調整教學方式方法,保持好的方面,改良不足之處,真正做到提高教學質量。
本文將考慮充分利用開源軟件來建立一個功能更完善的教學測評系統。
1 基于Java EE開源架構的相關技術
Java EE框架提供了在Java EE開發中常見問題的標準解決方案[2],對于一些特殊的問題,我們可以在已有框架基礎之上進行擴展和定制。Java EE框架很適合使用在復雜的web應用開發中,它能夠為開發者提供一個簡單易用的模型[3]。
在傳統Java EE架構體系中,其業務層主要是靠業務組件EJB( Enterprise JavaBeans)來現的。雖然EJB一度被認為是Java EE的核心組件,但它是典型的重量級組件,具有部署復雜等缺點.事實上,很多情況下的應用更需要一些輕量級的解決方案。開源框架技術的發展,為企業級應用的解決方案提供了更多的選擇。本文討論了一種基于Struts,Hibernate和Spring三種優秀開源框架的輕量級Java EE架構體系。
1.1 Struts框架
現在MVC設計模式廣泛應用于web層的設計中。MVC模式將web層劃分為三部分:模型、視圖、控制器。MVC實現了表示邏輯和業務邏輯的解藕,使系統結構更加清晰。web層的MVC框架有很多,如流行的開源框架Struts、Tapestry、JSF、WebWork等。Struts是一個基于J2EE平臺的MVC框架,主要是采用Servlet和JSP技術來實現的,是開發Web應用程序的開放源碼框架。Struts把Servlet、JSP、自定義標簽和信息資源(message resources)整合一個統一的框架中,開發人員利用其進行開發時不用再自己編碼實現全套MVC模式,極大地節省了時間。選用Struts作為MVC的控制器,因為它足夠成熟,用戶群廣泛。雖然它也有缺點,但完全利用別的軟件彌補,比如利用Sitemesh代替Titles等。WebWork很優秀,但起步晚,用戶群太;JSF和Tapestry是重量級的MVC架構。通過這個兩個方面的對比即可得出Struts的兩大優點,即用戶群大且輕量級。
1.2 Spring框架
相對于EJB這個重量級的解決方案來說,開源應用框架Spring為Java EE應用提供的是輕量級的解決方案,簡化了系統開發。EJB適用于那些真正需要分布業務對象的應用,但是這種需求并不常見;對于多數web應用來說,Spring是合適的選擇。
Spring由Spring Core等多個模塊組成。Core(The IOC Container)模塊是其他模塊的基礎,提供了IOC(Inversion of Control控制反轉)和DI(Dependence Injection依賴注入)特性;DAO(Data Access Object數據訪問對象)和ORM(Object/Relational Mapping對象/關系映射)模塊提供了訪問數據庫的抽象層以及對Hibernate、JDO等ORM框架的集成;Web模塊提供了對JSF等web層開發框架的集成。Spring可以將其他優秀框架整合在一起構建一個完整的體系結構,Spring最典型的用法是為web應用提供中間層的基本骨架,Spring提供的輕量級IOC容器可以無縫集成到web應用環境中,各種組件都可以使用這個容器[4]。
IOC/DI是Spring的核心。在Spring中,每個對象并不需要自己去負責得到它的依賴對象,這樣就降低了代碼的耦合程度,降低了組件之間的依賴性,使組件易于測試和替換。
1.3 Hibernate框架
Hibernate是一種開源ORM框架,可以很好的解決關系型數據庫系統和面向對象應用程序之間的阻抗不匹配問題。Hibernate為應用程序提供了Java類到數據庫表的映射,使開發人員可以使用面向對象的方式來操作數據庫。Hibernate還提供了訪問數據的方法,可以大幅減少開發時人工使用SQL和JDBC處理數據的時間[5]。對于大多數web應用,開源的Hibernate是一個好的通用的解決方案。在有的場合下,O/R映射并不合適,比如需要對大量記錄進行頻繁的批量更新,并且無法在對象映射層放置大量的緩存。
1.4 數據庫管理系統MySQL
MySQL是最受歡迎的開源SQL數據庫管理系統,它由MySQL AB開發、發布和支持,是一個關系數據庫管理系統。MySQL服務器支持關鍵任務、重負載生產系統的使用,是一個快捷的、可靠的和易于使用的數據庫服務器;可以將MySQL嵌入到一個大配置(mass-deployed)的軟件中去;有大量的MySQL軟件可以使用。
1.5 Web服務器Tomcat
Tomcat是Apache-Jakarta的子項目,是一個免費的、開放源碼的、支持JSP和Servlet技術的容器,它同時又是一個Web服務器軟件。
表1 Web服務器的相關比較
Web服務器 |
費用 |
并發用戶 |
實際上線用戶 |
Tomcat |
免費 |
1000 |
1-2萬(負載配置) |
Websphere(企業版) |
50萬 |
2萬 |
25萬以上 |
Weblogic(BEA) |
7萬 |
1萬 |
10萬以上 |
Tomcat很受廣大程序員的喜歡,因為它運行時占用的系統資源小,擴展性好,支持負載平衡與郵件服務等開發應用系統常用的功能。Tomcat是一個小型的輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP程序的首選。如表1所示,選擇Tomcat作為服務器實現了開源目標并且可以滿足中型企業用戶需求。
1.6 集成開發工具Eclipse+MyEclipse
Eclipse+MyEclipse是目前最流行的Java集成開發工具,具有快速的性能、重構性能、快速修復錯誤、調整/組織導入包、彈出窗口進行代碼自動裝配。由于功能強大,Eclipse一度成為Java IDE領域的霸主。它能夠很好地與MySQL、Tomcat進行集成。
2 整合框架的體系結構
基于全開源的目標,此處選用Spring作為基礎架構, 通過Spring IOC容器提供基礎服務,整合Struts和Hibernate,并利用MySQL數據庫、Tomcat服務器和Eclipse工具組成一個功能強大的全開源web應用開發框架。該整合框架具有通用性,可以廣泛應用于web應用系統的開發中。根據Java EE多層架構,整合框架的體系結構可以化分為五個層次,如圖1所示。
IOC容器服務
業務服務類
Hibernate整合 |
圖1 整合框架體系結構
對于web應用來說,客戶層通常是瀏覽器,依賴于web層。web層的Struts框架接收用戶請求,調用相應的處理邏輯(Action),Action通過服務接口使用業務服務類為用戶提供服務。業務邏輯層采用了Spring框架,業務服務類需要使用相關的DAO組件完成業務處理。持久層的Hibernate框架提供了對象/關系映射,可以根據DAO組件的請求訪問數據層的數據庫。
3 教學測評系統的設計
教學評估系統采用基于MVC的B /S模式,首先克服了傳統WEB 的C /S模式的缺點,客戶端無需安裝客戶端軟件,即采用標準的瀏覽器接入網絡即可。這樣,即降低了對客戶端用戶計算機水平的限制,同時管理員的維護僅限于服務器,也減輕了管理員的工作。而且實現了顯示、控制和業務邏輯相分離,提高了代碼的重用性和靈活性,便于組件式開發。
系統完成了學生可以對教師的每一個教學要點進行測評,教師可以查詢每一教學要點的測評結果,管理員對基本信息的維護等功能,包含如下功能模塊
圖2 系統功能模塊
3.1 系統的配置文件
在一個業務流程中首先要配置的是web. xml文件,文件中初始化ActionServlet類、聲明Web應用所使用的標簽庫。
< servlet >
< servlet - name > action < / servlet - name >
< servlet - class > org. apache. struts. action. ActionServlet < / servlet - class >
< init - param >
< param - name > config < /param - name >
< param - value > /WEB - INF / struts- config. xml < /param - value >
< / init - param >
⋯⋯⋯
< / servlet >
< taglib >
< taglib - uri > /WEB - INF / struts -html. tld < / taglib - uri >
< taglib - location > /WEB - INF / struts -html. tld < / taglib - location >
< / taglib >
通過ActionServlet類讀取struts - config. xml配置文件信息,定義了系統表單對應的ActionForm以及建立用戶請求和Action之間的映射。
< form - beans >
< form - bean name = " studentLogin1Form" type = " com. yourcompany. struts.
form. StudentLogin1Form" / >
< action - mapp ings >
< action path = " / studentLogin" scope = " request" validate = " false"
type = "org. apache. struts. actions. ForwardAction" parameter = " / studentLogin1. jsp" / >
3.2 視圖部分
為了統一視圖部分的頁面風格,同時避免重復開發頁面中的重復部分如:菜單、導航條和頁腳等,可以通過使用Tiles框架和StrutsAction相結合的方法,實現復合頁面。具體實現過程如下。
①建立頁面中重復的部分,以及可變的頁面。
②建立模板頁面,按照模板的定義引入各個頁面。
③建立配置文件tiles - defs. xml
< tiles - definitions >
< definition name = " baseDefs" path = " /basePage. jsp" >
<put name = " header" value = " header. jsp" / >
< put name = "menu" value = "menu. jsp" / >
< put name = " content" / >
< put name = " footer" value = " footer. jsp" / >
< /definition >
< definition name = " lp" extends = " baseDefs" >
<put name = " content" value = "ContentIndex. jsp"/ >
< /definition >
< / tiles - definitions >
④修改struts - config. xml文件
教學評估系統主要包含的視圖涉及到登錄、注冊、測評及管理員頁面,以及顯示用戶在操作過程中可能出現的錯誤頁面。如: studentLogin. jsp、managerDeal. jsp、teacherView. jsp、error. jsp等。
3.3 模型部分
模型部分主要包含了和學生、教師以及管理員業務相關的業務邏輯實現,同時建立了相關實體和實體的映射文件, 還建立了數據訪問DAO。如Student.java、Student.hbm.xml、StudentDAO.java等。
4 運行分析
為了讓教師測評系統在08-09學年第二學期的教師測評工作中正式使用,在09年5月份對該系統進行了部署和測試。實際部署中把系統的Web服務器和數據庫服務器配置到同一臺服務器內,服務器使用的是IBM xSeries系列(2*INTEL XEON 5310(四核1.6G/8M/1066MHz),12G DDR2 FBD,4*73G SAS)。經過一個月的試運行和測試,系統運行高效、穩定,完全可以投入實際應用。09年6月底,學院組織教師測評,自動化專業的平臺課程“計算機軟件技術基礎”安排在新的教師測評系統中進行測評。該課程被細化為順序表、鏈表、棧、隊列等12個教學要點進行測評,在測評結束后讓學生對新系統進行評價。自動化專業12個班級共400余名學生在同一時間段使用該系統,系統在響應速度和穩定性上都表現突出,完全滿足院級教師測評系統的性能要求。學生對系統的評價統計結果為:非常滿意32%、滿意43%、基本滿意18%、不滿意7%,不滿意的主要原因是操作量有所增加。實際表明,該系統在師生中得到普遍的認同,能夠直接促進教學質量的提高。經研究決定,要逐步推廣該系統到更多課程的測評上來,直至完全取代原教師測評系統。
5 總結
本文介紹了由Struts + Spring+ Hibernate+Tomcat+MySQL等開源技術組成的全開源體系架構,采用該架構開發的web應用系統,設計結構優良、易于擴展、維護簡單、重用性好,并且開發效率高、費用低、適合中小企業的應用。文中基于該架構設計實現了一個改良的教師測評系統,該系統有效的評價了教師在課堂教學中的每個環節,對教師教學方法方式的改進和教學質量的提高有著直接幫助。在面向大型的企業級應用時,該架構只需在數據庫系統和Web服務器上進行升級,可有效的避免重復開發工作。
參考文獻:
[1] 朱慶生,葛亮. 新一代web應用框架JSF[J]. 計算機科學, 2005, 32(7):224-227.
[2] Rod Johnson,Juergen Hoeller. J2EE Development without EJB[M].JavaEye, 譯. 北京:電子工業出版社, 2005:11-281.
[3] Rod Johnson . J2EE Development Frameworks [J].Computer, 2005, 38(1):107-110.
[4]王冠宇,趙冬生.在J2EE應用程序中整合JSF與Struts[J].微計算機信息,2006,22(2-3):262-264.
[5]王磊杰,崔軍波,韓紅宇,宇瑩華.Java EE開發指南-基于Spring/Struts/Hibernate的實現[M].第一版.人民郵電出版社,2007
作者簡介:胡立栓(1974- ),男,山東嘉祥人,講師,北京聯合大學自動化學院,研究方向為計算機應用、軟件工程。
09059