張 燁,王伯槐
(榆林學院 信息工程學院,陜西 榆林 719000)
學生管理工作是高校管理工作的重要組成部分,是整個學校管理的核心和基礎(chǔ)。隨著高校管理體制改革的深化及數(shù)字化校園建設(shè)進程的加快,以校園網(wǎng)為基礎(chǔ)的基于B/S結(jié)構(gòu)的學生管理系統(tǒng)廣泛地應用于高校學工工作領(lǐng)域,實現(xiàn)了學生管理信息化。但是,傳統(tǒng)的開發(fā)方法難以快速開發(fā)出功能強大、系統(tǒng)可擴展性強的基于Web的應用系統(tǒng)。如何快速、高效構(gòu)建一個高內(nèi)聚、低耦合的學生管理系統(tǒng),成為關(guān)注的技術(shù)熱點。隨著Web開發(fā)技術(shù)的日趨成熟,在Web開發(fā)領(lǐng)域出現(xiàn)了一些優(yōu)秀的框架。筆者通過深入研究輕量級開源框架Struts,Spring和Hibernate各自的特點,采用目前最流行的Struts+Spring+Hibernate組合框架作為高校學生管理系統(tǒng)的解決方案。該系統(tǒng)分為Web表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層和數(shù)據(jù)庫層,SSH框架合理的分層和恰當?shù)脑O(shè)計模式降低了模塊的耦合度,達到了代碼的合理分離,從而提高了系統(tǒng)的靈活性和可維護性。
MVC是Model-View-Controller的簡稱,即模型-視圖-控制器。是一種在Web項目開發(fā)中廣泛使用的設(shè)計模式。它強制性地把應用程序的輸入、處理和輸出分開,減弱了業(yè)務(wù)邏輯接口和數(shù)據(jù)接口之間的耦合。
Struts是在Jakarta項目下開發(fā)的開放源碼軟件,是在JSP Model2的基礎(chǔ)上實現(xiàn)的一個MVC框架。在Struts框架中,模型由實現(xiàn)業(yè)務(wù)邏輯的JavaBean或EJB組件構(gòu)成,控制器由ActionServlet和Action來實現(xiàn),視圖部分是通過JSP技術(shù)實現(xiàn)的[1]。Struts的工作原理如圖1所示。
圖1 Struts工作原理Fig.1 The work principle of Struts
Struts 的 核 心 組 件 有 Action,ActionServlet, ActionMapping,ActionForm,ActionForward及Taglib配置文件等[2]。
Spring是一個開源框架,是一個輕量級的控制反轉(zhuǎn)(IOC)和面向切面(AOP)的容器框架。Spring通過控制反轉(zhuǎn)(IoC)機制、面向切面AOP編程來降低業(yè)務(wù)組件之間的耦合度,增強系統(tǒng)擴展性[3]。Spring框架由7個模塊組成,Spring框架如圖2所示。
圖2 Spring框架圖Fig.2 The framework diagram of Spring
Spring Core提供了Spring框架的核心功能。Bean Factory是Spring核心容器的主要組件。它通過控制反轉(zhuǎn)將應用程序的配置和依賴性規(guī)范與實際的應用程序代碼分開,負責對JavaBean的配置、管理、創(chuàng)建。
Hibernate是連接Java應用程序和關(guān)系數(shù)據(jù)庫的中間件,是一個開源的對象關(guān)系映射(ORM)框架,能夠建立面向?qū)ο蟮挠蚰P秃完P(guān)系數(shù)據(jù)模型之間的映射。它對JDBC API進行了封裝,負責Java對象的持久化;在分層的軟件架構(gòu)中它位于持久化層,封裝了所有數(shù)據(jù)訪問的細節(jié),使業(yè)務(wù)邏輯層可以專注于實現(xiàn)業(yè)務(wù)邏輯;Hibernate內(nèi)部封裝了通過JDBC訪問數(shù)據(jù)庫的操作,向上層應用提供了面向?qū)ο蟮臄?shù)據(jù)訪問API,使用戶不用關(guān)心數(shù)據(jù)庫的操作問題[4]。Hibernate的核心接口分別為:Session、SessionFactory、Configuration、Transaction 和Query。
根據(jù)高校學生管理工作的實際需求,本系統(tǒng)主要功能模塊劃分如下:用戶登錄管理、學生信息管理、綜合測評管理、評獎評優(yōu)管理、違紀處分管理、學生資助管理、助學貸款管理、勤工助學管理、心理健康管理、學工隊伍管理、信息查詢與統(tǒng)計、系統(tǒng)維護等。
本文結(jié)合Struts、Spring和 Hibernate 3種框架各自的特點及Web應用分層設(shè)計思想,采用目前流行的Struts+Spring+Hibernate整合框架來開發(fā)高校學生管理系統(tǒng)。Struts,Spring和Hibemate的集成能夠揚長避短,使框架更加高效。其中Struts負責頁面顯示層的實現(xiàn),Spring負責業(yè)務(wù)邏輯層的實現(xiàn),Hibernate完成對象和關(guān)系的映射,負責數(shù)據(jù)持久層的實現(xiàn)[5]。
基于Struts+Spring+Hibernate框架的J2EE分層架構(gòu)如圖3所示。
圖3 SSH框架的體系結(jié)構(gòu)Fig.3 The architecture of SSH framework
SSH框架的整合是代碼開發(fā)的基礎(chǔ)。
Struts與Spring的整合是在Struts的Struts-config.xml配置文件中使用<plug-in>標簽配置如下代碼:
<Plug-in className= ”org.springframework.web.struts.ContextLoaderPlugIn”>
<set-Property ProPerty=”contextConfigLoeation”
value=”/WEB-INF/applicationContext.xml”/></plug-in>
Hibernate與Spring的整合需要將Hibemate原有的配置文件hibernate.cfg.xml上的配置全部轉(zhuǎn)移到Spring的applicationContext.xml上來。主要有數(shù)據(jù)庫連接的 dataSource,SessionFactoryBean以及mappingResouree都應該在Spring框架上進行配置[6]。
學生管理系統(tǒng)由多個模塊組成,這里以系統(tǒng)的個別模塊為例說明系統(tǒng)各層的具體實現(xiàn)方法。
表示層管理用戶的請求,對用戶的請求做出相應的響應,并向用戶顯示響應結(jié)果。Struts框架在表示層實現(xiàn)了MVC設(shè)計模式,將業(yè)務(wù)數(shù)據(jù)、頁面展示和動作處理進行分離,可以對用戶的請求進行處理,有控制器可以調(diào)用下層業(yè)務(wù)邏輯,可以對異常進行處理,以及對用戶的輸入進行驗證。Struts控制器組件主要負責接收用戶請求、更新模型,以及選擇合適的視圖組件返回給用戶,它在模型和視圖之間起著中間調(diào)度作用。主要包括:ActionServlet組件、RequestProcessor組件以及 Action組件,控制器是按Struts-config.xml文件中的配置來決定業(yè)務(wù)流的轉(zhuǎn)向的。可截取一段用戶登錄 Action的代碼,來展示Struts的控制器組件的實現(xiàn)。代碼清單如下所示。
Public class LoginAction extends DispatchAction{
//注入底層服務(wù)
Private IUserService userservice;
Private IUserRoleService userroleservice;
Private ILogService logService;
Spring框架在業(yè)務(wù)邏輯層可以處理應用程序的業(yè)務(wù)邏輯和業(yè)務(wù)校驗,對事務(wù)進行管理,可以管理業(yè)務(wù)層中各個對象的依賴關(guān)系,執(zhí)行相應的業(yè)務(wù)程序來實現(xiàn)業(yè)務(wù)服務(wù)。在業(yè)務(wù)邏輯層,Spring的反轉(zhuǎn)控制機制降低了整個系統(tǒng)耦合。Spring提供的HibernateTemplate大大簡化了Hibernate的開發(fā)過程。同時利用Spring來管理Struts的Action對象,避免了在程序中直接編寫組件的依賴關(guān)系建立,提高了Action的性能。
在處理業(yè)務(wù)邏輯層和持久化層之間的交互時,采用了面向接口編程的面向?qū)ο笏枷牒蚐pring的IOC機制,使業(yè)務(wù)處理對象中的Setter方法接收的是接口,這樣可以很松散的定義對象的實現(xiàn),然后注入。Spring配置文件如下所示。
<!—用戶管理業(yè)務(wù)bean--><bean id=”UmUserService”>
class= ”com.gnetis.boss.systemadmin.service.Impl.UserService”>
<property name=”userDao” ref=”UmUserDao”>
<property name=”userRoleDao” ref=”UserRoleDao”/>
<property name=”logService”>
<ref bean=”LogService”>
</property></bean>
持久層用來負責存儲從應用到數(shù)據(jù)庫的數(shù)據(jù),也負責數(shù)據(jù)的檢索、更新和刪除。Hibernate框架實現(xiàn)了對象/關(guān)系映射,在持久層為Java提供了面向?qū)ο蟮某志没瘷C制和查詢服務(wù)[7]。持久層的對象與數(shù)據(jù)庫的操作是通過DAO(Data Access Object/數(shù)據(jù)訪問對象)模式來實現(xiàn)的,即每個持久層對象都有自己的DAO。以用戶管理模塊為例說明Hibernate的實現(xiàn)過程。代碼片段如下所示。
Public class UserDao extends GenericHibernateDao implements IUserDao{
/*繼承父類所有通用方法 */
Public UserDao{}{super<BoUmUser,class>;}
//根據(jù)分頁原則查詢所有的用戶
Public Page<BoUmUser> findAllUserByPage<Page page-Info>
{String countHql};
String queryHql;
countHql=”select count<*> from BoUmUser”;
queryHql=”from BoUmUser”;
return this.listAllForPage <countHql, queryHql,pageInfo>;}
}……
高校學生管理[8]工作業(yè)務(wù)繁多,時效性強,學生管理工作施行科學化和網(wǎng)絡(luò)化,已經(jīng)成為高校學生工作管理信息化的重要途徑。本文采用Struts+Spring+Hibernate輕量級框架技術(shù)開發(fā)高校學生管理系統(tǒng),降低了模塊間的耦合度,實現(xiàn)了業(yè)務(wù)邏輯和業(yè)務(wù)數(shù)據(jù)的分離,提高了代碼的重用度。Struts負責Web表示層的設(shè)計,能很好地把業(yè)務(wù)邏輯和表示層分離,也便于業(yè)務(wù)邏輯模塊的重用。Hibernate負責數(shù)據(jù)層,把面向?qū)ο蟮脑O(shè)計開發(fā)與關(guān)系數(shù)據(jù)庫聯(lián)系起來,優(yōu)化了共享平臺的數(shù)據(jù)層設(shè)計。Spring負責業(yè)務(wù)邏輯層,加強了中間層的設(shè)計,降低了數(shù)據(jù)訪問難度。實踐證明該系統(tǒng)具有較好的可擴展性和可維護性。
[1]孫衛(wèi)琴.精通Struts:基于MVC的Java web設(shè)計與開發(fā)[M].北京:電子工業(yè)出版社,2008.
[2]趙洋,張麗,王恩東,等.基于 Struts,Hibernate和 Spring的J2EE 架構(gòu)研究[J].現(xiàn)代電子技術(shù),2009,289(2):107-110.ZHAO Yang ,ZHANG Li,WANG En-dong, et al.Research of J2EE based on Struts,Hibernate and Spring[J].Modern Electronics Technique,2009,289(2):107-110.
[3]孫衛(wèi)琴.精通 Hibernate:Java對象持久技術(shù)詳解[M].北京:電子工業(yè)出版社,2008.
[4]王君.基于Struts+Spring+Hibernate的企業(yè)級Web應用的框架研究[D].合肥:合肥工業(yè)大學,2007.
[5]劉斌,王最.Struts,Spring,Hibernate框架在 OA開發(fā)中的應用[J].計算機技術(shù)與發(fā)展,2010,20(1):151-154.LIU Bin,WANG Zui.Application of office automation based on SSH framework [J].Computer Technology and Development,2010,20(1):151-154.
[6]嚴海.基于Struts+Spring+Hibernate框架構(gòu)建WEB應用的設(shè)計與實現(xiàn)[D].西安:西安電子科技大學,2010.
[7]楊剛.基于Struts+Hibernate+Spring框架的信息管理系統(tǒng)的設(shè)計與實現(xiàn)[D].武漢:武漢理工大學,2010.
[8]王振輝.精品課程管理平臺建設(shè)方案研究[J].現(xiàn)代電子技術(shù),2010(18):77-78,86.WANG Zhen-hui.Development scheme of management platform for high-quality courses[J].Modern Electronics Technique,2010(18):77-78,86.