楊 楊
(鄭州華信學(xué)院信息工程系,河南鄭州451100)
基于SSH的科技競賽報(bào)名系統(tǒng)研究
楊 楊
(鄭州華信學(xué)院信息工程系,河南鄭州451100)
基于MVC設(shè)計(jì)模式,采用SSH框架技術(shù)的集成,實(shí)現(xiàn)項(xiàng)目開發(fā)“高內(nèi)聚,低耦合”的思想,減輕科技競賽報(bào)名系統(tǒng)開發(fā)人員重新建立解決復(fù)雜問題方案的負(fù)擔(dān)和精力,提高系統(tǒng)的重用性、適用性以及可維護(hù)性.
設(shè)計(jì)模式;框架;集成
基于SSH的科技競賽報(bào)名系統(tǒng)采用了J2EE的MVC設(shè)計(jì)模式,在系統(tǒng)設(shè)計(jì)中主要研究了Struts、Hibernate、Spring這三種技術(shù)在系統(tǒng)中的應(yīng)用,摒棄傳統(tǒng)的系統(tǒng)開發(fā)思想,一方面實(shí)現(xiàn)模型層(Model),視圖層(View)和控制層Controller)相互獨(dú)立以及“高內(nèi)聚、低耦合”,另一方面實(shí)現(xiàn)表示層的異步訪問控制機(jī)制,從而提高系統(tǒng)的重用性、適用性以及可維護(hù)性,同時(shí)降低開發(fā)和維護(hù)用戶接口的技術(shù)含量.
Struts、Spring和Hibernate三種技術(shù)融合而成的框架是當(dāng)前企業(yè)采用率較高的框架技術(shù)之一,它是J2EE領(lǐng)域的領(lǐng)頭軍,逐步成為企業(yè)標(biāo)準(zhǔn).
Struts框架是MVC設(shè)計(jì)模式一個(gè)優(yōu)秀的組件.它定義了通用的Controller(控制器),通過配置文件隔離了Model模型和View視圖,從而將整個(gè)系統(tǒng)分為三大模塊,這三大模塊相互獨(dú)立,各模塊開發(fā)人員獨(dú)立完成自己模塊的工作,因此,系統(tǒng)的開發(fā)時(shí)間大大縮短,效率顯著提高.
Spring大大簡化了企業(yè)級應(yīng)用程序開發(fā),它的大小與開銷都只占據(jù)了很小一部分容量,因此,在企業(yè)應(yīng)用系統(tǒng)中嵌入Spring框架是非常輕而易舉的,它主要作為依賴注入容器和AOP實(shí)現(xiàn)存在,同時(shí)提供了聲明式事物、對DAO層支持等簡化開發(fā)功能.此外,Spring框架大大的簡化了企業(yè)級應(yīng)用系統(tǒng)的開發(fā),成為J2EE開發(fā)的“一站式”解決方案.
Hibernate是一個(gè)持久化框架,它的出現(xiàn),同樣給J2EE的開發(fā)帶來了春天,它使得程序員對數(shù)據(jù)庫的操作也像利用面向?qū)ο笏枷刖帉懗绦蛞粯樱梢噪S心所欲的操縱數(shù)據(jù)庫,并且簡化將對象數(shù)據(jù)保存到數(shù)據(jù)庫中或者從數(shù)據(jù)庫中讀取數(shù)據(jù)并封裝到對象的工作.通過簡單配置和編碼即可替代JDBC繁瑣的代碼.
2.1 系統(tǒng)設(shè)計(jì)
科技競賽報(bào)名系統(tǒng)框架整合流程為:客戶端發(fā)送的http請求到達(dá)過濾器,ActionMapper接收相應(yīng)請求并將其發(fā)送至與之對應(yīng)的Action,通過Hibernate處理數(shù)據(jù)庫操縱,最終系統(tǒng)將Spring依賴注入到業(yè)務(wù)邏輯層,使整個(gè)系統(tǒng)框架結(jié)構(gòu)變得簡單,易于操作.此項(xiàng)目結(jié)構(gòu)如圖1所示.

圖1 項(xiàng)目結(jié)構(gòu)
2.2 系統(tǒng)實(shí)現(xiàn)
2.2.1 添加Struts支持
以用戶注冊功能為例,在index.jsp頁面單擊“用戶注冊”超鏈接,轉(zhuǎn)到agreement.jsp頁面,在agreement.jsp頁面單擊“我同意”按鈕,轉(zhuǎn)到info.jsp頁面,單擊“不同意”按鈕回到index.jsp.

圖2 struts機(jī)制
在用戶注冊頁面填寫注冊信息,并提交給Action,由Action進(jìn)行頁面處理.Struts運(yùn)行機(jī)制如圖2所示.
配置struts-config.xml文件,創(chuàng)建Action繼承DispatchAcion:
public class UserAction extends DispatchAction{private UserBiz userBiz=newUserBizImpl();public Action-Forward toAdd(...){return mapping.findForwward(“user”);} public ActionForward doAdd(...){
UserFormmyForm=(UserForm)form;User item=my-Form.getItem();if(this.userBiz.isExists(item.getUserName())){ request.setAttribute("msg","");return mapping.findForward("user");}else{this.userBiz.add(item);}} }
2.2.2 Hibernet關(guān)聯(lián)
給項(xiàng)目添加Hibernate支持,生成Hibernate配置文件、生成映射文件,最后導(dǎo)入BaseHibernateDAO文件,系統(tǒng)中所有DAO的Hibernate實(shí)現(xiàn)類都將繼承自這個(gè)類.
(1)配置hibernate.cfg.xml,設(shè)置數(shù)據(jù)庫連接信息.
(2)生成實(shí)體類和相應(yīng)的映射文件.
(3)配置關(guān)聯(lián),如many-to-one關(guān)聯(lián)等.
(4)創(chuàng)建DAO層.
(5)創(chuàng)建實(shí)現(xiàn)類,繼承自BaseHibenateDAO.
public class GoodsDAOHibimpl extends BaseHibernateDAO implements GoodsDAO{public void add(Goods item){super.add(item);
}public void del(Serializable key){super.del(key, Goods.class);}public Goods get(Serializable key){Goods item=(Goods)super.get(key,Goods.class);return item;}}
2.2.3 Spring依賴注入
使用Spring的Action代理,直接把Biz對象注入到Struts Action中.注入次序如圖3所示.

圖3 Sring注入
對Hibernate進(jìn)行集成,將SessionFactory注入到Base-HibernateDAO,在Biz層采用Spring聲明式事務(wù)的方式添加事物支持.如圖4.

圖4 Sring與Hibernate集成
給Biz層方法添加事務(wù)支持.
此科技競賽報(bào)名系統(tǒng)的設(shè)計(jì)通過Spring框架的依賴注入,將原本復(fù)雜的框架結(jié)構(gòu)變得簡單,清晰.利用Hibernate對數(shù)據(jù)庫的操作,大大簡化了持久層的訪問,同時(shí)輕松集成Strus框架,真正實(shí)現(xiàn)了面向?qū)ο蟆⒚嫦蚪涌诔绦蛟O(shè)計(jì).通過此系統(tǒng)的開發(fā),使學(xué)生真正融入到實(shí)際項(xiàng)目中去,實(shí)現(xiàn)學(xué)校與社會的零距離,同時(shí),此系統(tǒng)的開發(fā)與實(shí)現(xiàn)大大提高了高校科技創(chuàng)新活動(dòng)的效率,對高校實(shí)踐教學(xué)有著重要的實(shí)際指導(dǎo)意義.
〔1〕劉中兵.開發(fā)者突擊:Java Web主流框架整合開發(fā)J2EE+Struts+Hibernate+Spring[M].北京:電子工業(yè)出版社,2008.
〔2〕高洪巖.基于Struts2+Hibernate+Spring實(shí)用開發(fā)指南[M].北京:化學(xué)工業(yè)出版社,2010.282.
〔3〕王鈺淞.基于SSH框架的統(tǒng)一認(rèn)證平臺研究與實(shí)現(xiàn)[J].科技資訊,2010(4):4—5.
〔4〕張贊.基于SSH的J2EE架構(gòu)在考務(wù)管理中的應(yīng)用[J].農(nóng)業(yè)網(wǎng)絡(luò)信息,2009(2):121—122,133.
TP311.5
A
1673-260X(2013)08-0017-02
河南省民辦教育協(xié)會項(xiàng)目資助(hmx20120053)