方育紅
摘要:Spring是一款非常流行的開源開發(fā)框架,利用該框架的IoC和AOP機(jī)制可以實(shí)現(xiàn)多層的javaEE應(yīng)用程序開發(fā)。Spring是一款全方位的整合框架,能夠?qū)崿F(xiàn)多個(gè)子框架的組合,這些子框架之間彼此獨(dú)立,當(dāng)使用其他框架方案替代現(xiàn)有框架時(shí),不會(huì)影響系統(tǒng)其他的框架實(shí)現(xiàn)部分,極大地降低了系統(tǒng)修改的工作量。
關(guān)鍵詞:Hibernate技術(shù),Spring框架,SSH2 技術(shù)
一 緒論
互聯(lián)網(wǎng)技術(shù)發(fā)展到現(xiàn)在已經(jīng)相當(dāng)成熟,互聯(lián)網(wǎng)已經(jīng)成為一個(gè)全世界最大最全的信息中心,越來越多的人在利用互聯(lián)網(wǎng)來完成他們的工作,同時(shí)也有越來越多的人利用互聯(lián)網(wǎng)來解放他們的生活,他們利用互聯(lián)網(wǎng)來完成幾乎所有所有現(xiàn)實(shí)生活中的事物。
目前Internet上最流行的應(yīng)用大多是基于網(wǎng)頁方式。最初的web應(yīng)用比較簡(jiǎn)單,用戶請(qǐng)求的是一個(gè)靜態(tài)頁面。但隨著web技術(shù)的發(fā)展和電子商務(wù)時(shí)代的到來,人們不再滿足于建立各種靜態(tài)的發(fā)布信息的網(wǎng)站,更多的時(shí)候需要能與用戶交互,并能提供后臺(tái)數(shù)據(jù)庫(kù)管理和控制等服務(wù)的動(dòng)態(tài)網(wǎng)站。
到了現(xiàn)在,SSH這一輕量級(jí)的框架尤其受人歡迎。
SSH2 在JavaEE項(xiàng)目中表示了3種框架,即Struts2 + Spring +Hibernate。 Struts對(duì)Model,View和Controller都提供了對(duì)應(yīng)的組件。Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架,它由Rod Johnson創(chuàng)建。它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。 Hibernate是一個(gè)開放源代碼的對(duì)象關(guān)系映射框架,它對(duì)JDBC進(jìn)行了非常輕量級(jí)的對(duì)象封裝,可以應(yīng)用在任何使用JDBC的場(chǎng)合,可以在Servlet/JSP的Web應(yīng)用中使用,也可以在應(yīng)用EJB的JavaEE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。
在本系統(tǒng)中,所有的數(shù)據(jù)庫(kù)訪問操作類DAO都由Hibernate 封裝,然后經(jīng)過Spring 將DAO類的對(duì)象注入到相應(yīng)的邏輯處理類service中,然后將service 的對(duì)象注入到Action 中。而Action 則由Struts 2控制。這樣SSH2框架就被運(yùn)用到項(xiàng)目中了。
二 文獻(xiàn)研究
Struts2簡(jiǎn)介
· 從某種程度上來講,Struts2沒有繼承Struts 1的血統(tǒng),而是繼承WebWork的血統(tǒng)。或者說,WebWork衍生出了Struts2,而不是Struts 1衍生了Struts2。因?yàn)镾truts2是WebWork的升級(jí),而不是一個(gè)全新的框架,因此穩(wěn)定性、性能等各方面都有很好的保證:而且吸收了Struts 1和WebWork兩者的優(yōu)勢(shì)。
· Apache Struts2是一個(gè)優(yōu)雅的,可擴(kuò)展的JAVA EE web框架??蚣茉O(shè)計(jì)的目標(biāo)貫穿整個(gè)開發(fā)周期,從開發(fā)到發(fā)布,包括維護(hù)的整個(gè)過程。
· Apache Struts 2即是之前大家所熟知的WebWork 2。在經(jīng)歷了幾年的各自發(fā)展后,WebWork和Struts社區(qū)決定合二為一,也即是Struts 2。
· Struts2從客戶端瀏覽器發(fā)出請(qǐng)求到獲得響應(yīng)整個(gè)處理過程的描述如下圖所示:
· 1.HTTP請(qǐng)求;
· 2.經(jīng)過過濾器鏈;
· 3.FilterDispatcher處理請(qǐng)求;
· 4.選擇合適的Action;
· 5.調(diào)用Action,調(diào)用業(yè)務(wù)對(duì)象;
· 6.返回相應(yīng)Result;
· 7.返回請(qǐng)求資源。
· Spring簡(jiǎn)介
· Spring是一款非常流行的開源開發(fā)框架,利用該框架的IoC和AOP機(jī)制可以實(shí)現(xiàn)多層的javaEE應(yīng)用程序開發(fā)。Spring是一款全方位的整合框架,能夠?qū)崿F(xiàn)多個(gè)子框架的組合,這些子框架之間彼此獨(dú)立,當(dāng)使用其他框架方案替代現(xiàn)有框架時(shí),不會(huì)影響系統(tǒng)其他的框架實(shí)現(xiàn)部分,極大地降低了系統(tǒng)修改的工作量。
· Spring的核心是一個(gè)實(shí)現(xiàn)了IoC(Inversion of Control)模式的輕量級(jí)容器。該框架主要目標(biāo)并非為軟件帶來更多的功能,而是為系統(tǒng)搭建一個(gè)靈活、可擴(kuò)展的平臺(tái),降低企業(yè)應(yīng)用開發(fā)的復(fù)雜度。使用Spring框架開發(fā),基于普通javabean就可以實(shí)現(xiàn)以前只能有EJB完成的事情。
Hibernate簡(jiǎn)介
· Hibernate的核心接口一共有6個(gè),分別為:Session、SessionFactory、Transaction、Query、Criteria和Configuration。這6個(gè)核心接口在任何開發(fā)中都會(huì)用到。通過這些接口,不僅可以對(duì)持久化對(duì)象進(jìn)行存取,還能夠進(jìn)行事務(wù)控制。下面對(duì)這6個(gè)核心接口分別加以介紹。
· Session接口:負(fù)責(zé)執(zhí)行被持久化對(duì)象的CRUD操作(CRUD的任務(wù)是完成與數(shù)據(jù)庫(kù)的交流,包含了很多常見的SQL語句。)。但需要注意的是Session對(duì)象是非線程安全的。同時(shí),Hibernate的session不同于JSP應(yīng)用中的HttpSession。這里當(dāng)使用session這個(gè)術(shù)語時(shí),其實(shí)指的是Hibernate中的session,而以后會(huì)將HttpSession對(duì)象稱為用戶session。
· SessionFactory接口:負(fù)責(zé)初始化Hibernate。它充當(dāng)數(shù)據(jù)存儲(chǔ)源的代理,并負(fù)責(zé)創(chuàng)建Session對(duì)象。這里用到了工廠模式。需要注意的是SessionFactory并不是輕量級(jí)的,因?yàn)橐话闱闆r下,一個(gè)項(xiàng)目通常只需要一個(gè)SessionFactory就夠,當(dāng)需要操作多個(gè)數(shù)據(jù)庫(kù)時(shí),可以為每個(gè)數(shù)據(jù)庫(kù)指定一個(gè)SessionFactory。
· Configuration類:負(fù)責(zé)配置并啟動(dòng)Hibernate,創(chuàng)建SessionFactory對(duì)象。在Hibernate的啟動(dòng)的過程中,Configuration類的實(shí)例首先定位映射文檔位置、讀取配置,然后創(chuàng)建SessionFactory對(duì)象。
三 總結(jié)
SSH 在JavaEE項(xiàng)目中表示了3種框架,即 Spring + Struts2 +Hibernate。 Struts對(duì)Model,View和Controller都提供了對(duì)應(yīng)的組件。Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架,它由Rod Johnson創(chuàng)建。它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。 Hibernate是一個(gè)開放源代碼的對(duì)象關(guān)系映射框架,它對(duì)JDBC進(jìn)行了非常輕量級(jí)的對(duì)象封裝,可以應(yīng)用在任何使用JDBC的場(chǎng)合,可以在Servlet/JSP的Web應(yīng)用中使用,也可以在應(yīng)用EJB的JavaEE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。
四 參考文獻(xiàn)
[1] 劉志海,通用試題庫(kù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn). 信息化建設(shè),計(jì)算機(jī)與信息技術(shù):95-98
[2] 劉中兵,開發(fā)者突擊:Java Web主流框架整合開發(fā){J2EE+Struts+Hibernate+Spring}. 電子工業(yè)出版社,2010
[3](美)巴特利特 ?周哲玉 等譯. CSS入門經(jīng)典[J].人民郵電出版社.2007.3