胡曉鋒
摘要:J2EE企業(yè)級開發(fā)技術(shù)的發(fā)展可以反映為MVC框架的變遷。Struts依靠其前期的成功,目前仍舊占有大量的用戶市場,Struts2.0的推出,進一步鞏固Struts的應(yīng)用地位。Hibernate框架實現(xiàn)了高效的數(shù)據(jù)持久化,極大提高了數(shù)據(jù)庫層邏輯的開發(fā)效率,并且可以與Struts相融合。Spring技術(shù)作為輕型框架,依靠IoC在J2EE應(yīng)用中占有重要地位,隨著新技術(shù)的補充和完善,Spring技術(shù)的未來值得期待。
Abstract: The development of the J2EE development technology reflects the transform of the MVC frame. Based on the former success, the Struts still hold a lot of the users. The release of Struts 2.0 has strengthened the application status. Hibernate has realized the efficient data persistence, which greatly improved the efficiency of database layer logic of development, and can blend with Struts. Spring technology as a light framework, occupies an important status in the J2EE by the help of IoC. With the development and improvement of the new technologies, the future of Spring technology is worth waiting.
關(guān)鍵詞:J2EE;MVC;Struts;Hibernate;Spring
Key words: J2EE; MVC;struts;hibernate;spring
中圖分類號:TP31 文獻標(biāo)識碼:A文章編號:1006-4311(2010)04-0030-01
1背景介紹
MVC(Model-View-Controller)程序設(shè)計理念中,把交互系統(tǒng)的組成分解成模型、視圖、控制器三部分。模型封裝了問題的核心數(shù)據(jù)、邏輯和功能的計算關(guān)系,獨立于具體的界面表達和I/O操作;視圖把表示模型數(shù)據(jù)及邏輯關(guān)系和狀態(tài)的信息以特定形式展示給用戶;控制器是處理用戶與軟件的交互操作的,其職責(zé)是控制提供模型中任何變化的傳播,確保用戶界面于模型間的對應(yīng)聯(lián)系。J2EE的發(fā)展歷程,可以濃縮為MVC架構(gòu)的發(fā)展,主流的MVC架構(gòu)中,以Struts、Hibernate和Spring最為著名。
2Struts
“先入為主”是對與Struts架構(gòu)最為真實的寫照。雖然相比其它架構(gòu)已經(jīng)擁有了略顯老舊的設(shè)計理念,但是憑借著推出之初對MVC設(shè)計的影響,Struts仍舊是目前Java Web MVC框架中不爭的王者,軟件研發(fā)企業(yè)站在產(chǎn)品開發(fā)的角度而言,Struts仍然是最穩(wěn)妥的選擇。
Struts有一組相互協(xié)作的類、Servlet以及JSP標(biāo)簽庫組成?;赟truts構(gòu)架的Web應(yīng)用程序基本上符合JSP Model2的設(shè)計標(biāo)準(zhǔn),可以說是MVC設(shè)計模式的一種變化類型。Struts有其自己的控制器,同時整合了其他的一些技術(shù)去實現(xiàn)模型層和視圖層。在模型層,Struts可以很容易的與數(shù)據(jù)訪問技術(shù)相結(jié)合,包括EJB、JDBC和Object Relation Bridge。
經(jīng)過五年左右的發(fā)展,Struts在取得巨大應(yīng)用成功的同時,也注重自身的發(fā)展,最新推出的Struts2.0中,實現(xiàn)了很多技術(shù)改造與升級。其中,Action類可以實現(xiàn)一個Action接口,也可實現(xiàn)其他接口,較以前版本的單一繼承性可擴展性更強;使用“Value Stack”技術(shù),使標(biāo)簽庫能夠在不進行視圖綁定的情況下訪問數(shù)值;Struts2支持通過攔截器堆棧為每一個Action創(chuàng)建不同的生命周期,堆棧能夠根據(jù)需要和不同的Action一起使用。諸多的改進,無疑將改進原來版本的落后設(shè)計,隨著新版本的推出,再依靠其龐大的程序員群體的支持,Struts擁有光明的未來。
3Hibernate
Hibernate是一個數(shù)據(jù)持久層框架,是一種實現(xiàn)對象和關(guān)系之間映射(ORM)的工具,使用Hibernate最大的優(yōu)點是能提高程序開發(fā)的效率,主要原因有兩點:首先,Hibernate對JDBC進行了輕量級的對象封裝,使程序員可以使用面向?qū)ο缶幊趟枷雭聿僮鲾?shù)據(jù)庫——數(shù)據(jù)庫表可以直接映射為Java的類型,同時,Hibernate框架用配置文件的形式來定義Java對象和數(shù)據(jù)表之間的映射關(guān)系,將數(shù)據(jù)表之間的關(guān)系解釋為Java對象之間的繼承及包含等關(guān)系;其次, Hibernate提供了數(shù)據(jù)庫操作的API,用于對數(shù)據(jù)庫所表示的對象執(zhí)行查詢、修改和刪除操作。程序中與對象的交互由Hibernate保存,節(jié)省了大量SQL語句,從而使數(shù)據(jù)持久層得到了極大的簡化,并且降低了程序的錯誤率。
4Spring
另外一個著名的開源框架叫做Spring,也是為解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建MVC架構(gòu)。Spring具有如下四大特性:第一,Spring是一個輕量級的框架。完整的Spring框架可以在一個大小只有1MB多的JAR文件里發(fā)布,所需的處理開銷也很小;第二,反轉(zhuǎn)控制特性,Spring通過一種稱作控制反轉(zhuǎn)(IoC)的技術(shù)促進了松耦合,應(yīng)用IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創(chuàng)建或者查找依賴對象,而IoC對比傳統(tǒng)的反射機制,性能得到了優(yōu)化;第三,面向切面編程思想,Spring允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級服務(wù)進行內(nèi)聚性的開發(fā),每個對象只關(guān)注于自身的業(yè)務(wù)邏輯;最后,容器應(yīng)用特征, Spring包含并管理應(yīng)用對象的配置和生命周期,可將其看成一種容器。
首先,Spring2.0的一個重大改進是引入了XML Schema的namespace,因而可以將Bean的配置文件做大幅度的簡化,同時,新的XML Schema引入了更多的XML語法,功能更加強大;其二,提供了Request和Session范圍的Bean,這一改進雖然對MVC的根本理念有所背離,但主要是面對AJAX Web Serviced調(diào)用改進。頁面腳本通過AJAX調(diào)用,拋開Web層框架,直接訪問業(yè)務(wù)層Bean,極大的提高了程序構(gòu)建的方便性;第三,更好的Hibernate結(jié)合,在Spring2.0中,可以使用AspectJ進行容器管理,支持對持久化對象模型進行靜態(tài)注入,當(dāng)持久化對象在容器外被創(chuàng)建的時候,會產(chǎn)生對容器的回調(diào),進行依賴關(guān)系的注入;第四,實現(xiàn)了JDBC的命名參數(shù)模版,為JDBC查詢提供了帶命名參數(shù)的占位符,在使用JDBC的時候,可以很容易的構(gòu)造出來帶占位符的動態(tài)條件查詢,不必像以往一樣拼接SQL字符串;另外,Spring2.0支持動態(tài)語言ruby,雖然目前動態(tài)語言支持看來還比較簡單,但無疑是其在應(yīng)用范圍上的一大進步。
5小結(jié)
MVC框架技術(shù)的發(fā)展成為J2EE企業(yè)級應(yīng)用技術(shù)的風(fēng)向標(biāo),目前,Struts和Spring均推出了新版本,完善了自身功能,Hibernate技術(shù)依靠其數(shù)據(jù)持久化的強大功能實現(xiàn)了與Struts和Spring的聯(lián)合應(yīng)用。
參考文獻:
[1]李小平,肖岳峰,宿元,等.基于J2EE多層架構(gòu)的Web開發(fā)框架研究[J].計算機應(yīng)用研究,2008(5).
[2]王青松.基于Hibernate實現(xiàn)MVC中的模型框架[J].遼寧大學(xué)學(xué)報(自然科學(xué)版),2007(4).
[3]田珂,謝世波,方馬.J2EE數(shù)據(jù)持久層的解決方案[J].計算機工程,2003(22).
[4]薛冰,曹作良.設(shè)計模式和數(shù)據(jù)持久層框架在Web系統(tǒng)中的應(yīng)用[J].天津理工學(xué)院學(xué)報,2004(1).