摘要:該文討論了我校科研管理系統(tǒng)的體系結(jié)構(gòu)、功能模塊以及實(shí)現(xiàn)的關(guān)鍵技術(shù),該系統(tǒng)采用三層架構(gòu)的模式,利用Struts實(shí)現(xiàn)Web表現(xiàn)層,Hibernate實(shí)現(xiàn)數(shù)據(jù)訪問和持久化層,Spring實(shí)現(xiàn)業(yè)務(wù)層和整合工作,實(shí)踐表明本系統(tǒng)極大的提高了我校科研管理的效率。
關(guān)鍵詞: 科研管理;三層架構(gòu);Struts;Spring;Hibernate
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2009)27-7684-02
Scientific Management System Based on Struts+Spring+Hibernate Frameworks
NI Jian-xin
(Journal of Wuxi Teachers' College, Wuxi 214001, China)
Abstract: In this paper, discusses the Scientific Management System's architecture, function modules, key technologies, this system uses the three-tier architecture, the realization of Web performance using Struts, Hibernate for data access and persistence layer, Spring for business layer, practice shows that this system greatly improved the efficiency of Scientific Management in our college.
Key words: scientific management; three-tier architecture; struts; spring; hibernate
隨著校園網(wǎng)應(yīng)用以及教師專業(yè)化進(jìn)程的不斷深入,各高校和科研單位都對(duì)科研工作的數(shù)量和水平提出了新的要求,科研管理部門的工作量日趨加重,原先利用檔案或簡(jiǎn)單的統(tǒng)計(jì)軟件對(duì)科研項(xiàng)目,科研成果進(jìn)行管理,統(tǒng)計(jì),分析已經(jīng)變得越來越困難,而且其信息的滯后性也不能反映出學(xué)校目前的科研現(xiàn)狀,為了提高我校科研管理工作的效率,減少科研管理的工作量,使科研管理更加規(guī)范化,現(xiàn)代化,設(shè)計(jì)一個(gè)符合我校科研管理模式的科研管理系統(tǒng)就顯得十分重要,本文從系統(tǒng)結(jié)構(gòu),相關(guān)模塊及主要實(shí)現(xiàn)技術(shù)三個(gè)方面詳細(xì)描述了其實(shí)現(xiàn)過程。
1 系統(tǒng)結(jié)構(gòu)
本系統(tǒng)采用三層架構(gòu)的模式分為表現(xiàn)層、業(yè)務(wù)層和持久化層,利用Struts實(shí)現(xiàn)Web表現(xiàn)層,Hibernate實(shí)現(xiàn)數(shù)據(jù)訪問和持久化層,Spring實(shí)現(xiàn)業(yè)務(wù)層和整合工作,用MYSQL作為數(shù)據(jù)庫(kù)服務(wù)器,JSP服務(wù)器采用Tomcat, 在設(shè)計(jì)模式中,分層是一個(gè)非常重要的設(shè)計(jì)模式,可以剪斷層與層之間的耦合關(guān)系,在每層中只解決相關(guān)問題,利于發(fā)揮不同框架的功能,其總體結(jié)構(gòu)圖如圖1所示。
2 相關(guān)模塊及用例圖
本系統(tǒng)主要包括登錄模塊和科研信息的管理兩個(gè)功能模塊,其中科研信息的管理又可以細(xì)分為新增,修改,查詢,刪除,分頁,統(tǒng)計(jì)等,其實(shí)現(xiàn)的用例圖如圖2所示。
3 系統(tǒng)主要實(shí)現(xiàn)技術(shù)及相關(guān)代碼
3.1 Web表現(xiàn)層的實(shí)現(xiàn)
本系統(tǒng)利用Struts強(qiáng)大的標(biāo)簽庫(kù)和自動(dòng)校驗(yàn)功能,來實(shí)現(xiàn)數(shù)據(jù)的前端顯示,并把Action類的實(shí)例化交給Spring的IoC容器來完成,并采用一個(gè)模塊一個(gè)配置文件的手段,由login.xml、manage.xml和struts.xml負(fù)責(zé)登錄模塊、科研管理模塊以及全局配置。在登錄模塊中自定義了一個(gè)Action類LoginAction.java進(jìn)行登錄校驗(yàn),以Model-Driven方式來實(shí)現(xiàn),使用一個(gè)User值來傳遞數(shù)據(jù),登錄成功進(jìn)入系統(tǒng),失敗則顯示錯(cuò)誤信息,其配置文件代碼如下:
在科研管理模塊中,為了代碼簡(jiǎn)單清晰,僅僅使用一個(gè)Action類ManageAction來實(shí)現(xiàn)新增,修改,查詢,刪除,分頁,以Property-Driven屬性驅(qū)動(dòng)模式來實(shí)現(xiàn),所有表單域都作為ManageAction的屬性,沒有值對(duì)象參與,通過Spring的Ioc容器將相關(guān)屬性注入,在一個(gè)類中實(shí)現(xiàn)了query(),save(),delete()等相關(guān)方法,為了讓用戶在使用時(shí)感覺更加人性化,在save()方法的配置文件中還定義了兩個(gè)過濾器
在struts.xml中通過
3.2 數(shù)據(jù)層的實(shí)現(xiàn)
本系統(tǒng)后臺(tái)數(shù)據(jù)庫(kù)采用Mysql來實(shí)現(xiàn),在Mysql中創(chuàng)建科研管理系統(tǒng)相關(guān)的數(shù)據(jù)表management,其表結(jié)構(gòu)主要字段如表1。
表創(chuàng)建完畢后,需要通過配置數(shù)據(jù)源將Hibernate和Spring整合在一起,這里直接使用MyEclipse中的DatasourceSessionFactory向?qū)硗瓿蛇@個(gè)工作,并生成Mapping文件和持久化類。
整個(gè)系統(tǒng)數(shù)據(jù)庫(kù)連接部分,也就是DAO類的實(shí)現(xiàn)非常簡(jiǎn)單,都是借助于父類HibernateDaoSupport來實(shí)現(xiàn),對(duì)于登錄模塊直接通過用戶名和密碼來查找驗(yàn)證,對(duì)于科研管理模塊中的新增,修改,查詢,刪除直接使用getHibenateTemplate()方法來實(shí)現(xiàn),對(duì)于數(shù)據(jù)分頁則使用Query類的setFirstResult()和setMaxResults()方法來實(shí)現(xiàn)。
其主要代碼如下:
Public List doInHibernate(Session session) throws HibernateException, SQLException{Query query=session.createQuery(sql1);
query.setFirstResult(startRow1);
query.setMaxResults(pageSize1);
return query.list();}
3.3 業(yè)務(wù)層的實(shí)現(xiàn)
本系統(tǒng)利用Spring的IoC容器整合了Web表現(xiàn)層,業(yè)務(wù)層和數(shù)據(jù)層,主要通過如下方法來實(shí)現(xiàn),將Struts中的Action類實(shí)例化,將DAO組件實(shí)例化,并將DAO組件實(shí)例注入業(yè)務(wù)邏輯組件,從而實(shí)現(xiàn)了業(yè)務(wù)邏輯組件和DAO組件的高度解耦,加載Hibernate模塊,提供數(shù)據(jù)源,為業(yè)務(wù)邏輯方法增加事務(wù)控制,借助于Spring的聲明式事務(wù)管理,并不需要添加任何代碼,所有的事務(wù)管理都放在Spring的application—Context.xml配置文件中,其中科研管理模塊Bean配置如圖3所示。
其相應(yīng)的Bean配置文件代碼如下:
從這里我們可以看出三層結(jié)構(gòu)的分布情況,層與層之間都是面向接口方式實(shí)現(xiàn),以此實(shí)現(xiàn)高度解藕。
4 結(jié)束語
本文討論了使用輕量級(jí)J2EE框架Struts+Spring+Hibernate的整合來開發(fā)J2EE應(yīng)用項(xiàng)目科研管理系統(tǒng),該架構(gòu)開發(fā)簡(jiǎn)潔、結(jié)構(gòu)清晰,并使系統(tǒng)具有良好的復(fù)用性、擴(kuò)展性和可維護(hù)性,通過添加更復(fù)雜的業(yè)務(wù)邏輯,可以滿足更多的實(shí)際需求,經(jīng)實(shí)踐表明,極大的提高了我校科研管理的效率。
參考文獻(xiàn):
[1] 劉聰.零基礎(chǔ)學(xué)Java Web開發(fā)[M].北京:機(jī)械工業(yè)出版社,2007.
[2] 李剛.Struts 2權(quán)威指南[M].北京:電子工業(yè)出版社,2007.
[3] 計(jì)磊,李里,周偉.J2EE—Eclipse struts Hibernate Spring整合應(yīng)用案例[M].北京:人民郵電出版社,2006.