国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于J2EE的輕量級SSH框架應用

2017-11-09 11:25:07曹靜李梅付惠茹李沂橋嚴開
電子技術與軟件工程 2017年19期
關鍵詞:面向對象

曹靜++李梅++付惠茹++李沂橋++嚴開

摘 要針對當前Web應用程序開發(fā)面臨的問題,結合目前比較流行的開源框架Spring、Struts和Hibernate,提出了一種開發(fā)J2EE Web應用的輕量級解決方案,以幫助開發(fā)人員在短期內搭建結構清晰、可復用性好、維護方便的Web應用程序。通過分析Struts、Spring、Hibernate各個框架自身的特點,優(yōu)勢和不足,依照需求對框架進行組合搭建,以MVC分層思想實現(xiàn)Web系統(tǒng)上的不同分層,表示層用Struts實現(xiàn),用Hibernate框架將實現(xiàn)數據的持久化,業(yè)務邏輯層用Spring框架實現(xiàn),同時對SSH整合框架的整體性能進行了改進和優(yōu)化。引入框架技術,大大降低了企業(yè)的開發(fā)成本,同時提高了開發(fā)效率。

【關鍵詞】SSH J2EE 面向對象 Web開發(fā)

大型企業(yè)級Web應用系統(tǒng)的開發(fā)通常要求有一個良好的軟件架構、便于協(xié)作開發(fā)和擴展升級,而傳統(tǒng)的開發(fā)模式不能很好地滿足這些要求。本文針對當前Web應用程序開發(fā)面臨的問題,結合目前比較流行的開源框架SSH(Spring、Struts、Hibernate),提出一種開發(fā)J2EE 企業(yè)級Web應用的輕量級解決方案,并通過案例具體說明如何將這一方案應用到實際項目中。

1 框架技術

框架一般具有即插即用的可重用性、成熟的穩(wěn)定性以及良好的團隊協(xié)作性。J2EE復雜的多層結構決定了大型的J2EE項目需要運用框架和設計模式來控制軟件質量。目前,市場上出現(xiàn)了一些商業(yè)的、開源的基于J2EE的應用框架,其中主流的框架技術有:基于MVC模式的Struts框架和基于IoC模式的Spring框架以及對象/關系映射框架Hibernate等。

1.1 表示層框架Struts

Struts是一個在JSP Model2基礎上實現(xiàn)的MVC框架,主要分為模型(Model)、視圖(Viewer)和控制器(Controller)三部分,其主要的設計理念是通過控制器將表現(xiàn)邏輯和業(yè)務邏輯解耦,以提高系統(tǒng)的可維護性、可擴展性和可重用性。Struts框架的體系結構如下:

1.1.1 視圖

視圖部分主要由JSP頁面組成,其中沒有流程邏輯、業(yè)務邏輯和模型信息,只有標記。Struts自身包含了一組標記庫(TagLib),這也是Struts的精華之一,靈活運用它們可以簡化JSP頁面的代碼,提高開發(fā)效率。

1.1.2 控制器

Struts中的Controller主要是其自身提供的ActionServlet。ActionServlet接收所有來自客戶端的請求并根據配置文件(struts-config.xml)中的定義將控制轉移到適當的Action對象。

1.1.3 模型

Struts沒有定義具體Model層的實現(xiàn),Model層通常是和業(yè)務邏輯緊密相關的,有持續(xù)化的要求。目前在商業(yè)領域和開源世界,都有一些優(yōu)秀的工具可以為Model層的開發(fā)提供便利。

1.2 業(yè)務邏輯層框架Spring

Spring是一個解決了許多J2EE開發(fā)中常見問題并能夠替代EJB技術的強大的輕量級框架。這里所說的輕量級指的是Spring框架本身,而不是指Spring只能用于輕量級的應用開發(fā)。Spring的輕盈體現(xiàn)在其框架本身的基礎結構以及對其他應用工具的支持和裝配能力。與EJB這種龐然大物相比,Spring可使程序研發(fā)人員把各個技術層次之間的風險降低。

Spring框架的核心是控制翻轉IoC(Inversion of Control)/依賴注入DI(Dependence Injection)機制。IoC是指由容器中控制組件之間的關系(這里,容器是指為組件提供特定服務和技術支持的一個標準化的運行時的環(huán)境)而非傳統(tǒng)實現(xiàn)中由程序代碼直接操控,這種將控制權由程序代碼到外部容器的轉移,稱為“翻轉”。DI是對IoC更形象的解釋,即由容器在運行期間動態(tài)地將依賴關系(如構造參數、構造對象或接口)注入到組件之中。Spring采用設值注入(使用Setter方法實現(xiàn)依賴)和構造子注入(在構造方法中實現(xiàn)依賴)的機制,通過配置文件管理組建的協(xié)作對象,創(chuàng)建可以構造組件的IoC容器。這樣,不需要編寫工廠模式、單例模式或者其他構造的方法,就可以通過容器直接獲取所需的業(yè)務組件。

1.3 數據持久層框架Hibernate

O/R mapping技術是為了解決關系型數據庫和面向對象的程序設計之間不匹配的矛盾而產生的。Hibernate是目前最為流行的O/R mapping框架,它在關系型數據庫和Java對象之間做了一個自動映射,使得程序員可以以非常簡單的方式實現(xiàn)對數據庫的操作。

Hibernate通過對JDBC的封裝,向程序員屏蔽了底層的數據庫操作,使程序員專注于OO程序的開發(fā),有助于提高開發(fā)效率。程序員訪問數據庫所需要做的就是為持久化對象編制xml映射文件。

底層數據庫的改變只需要簡單地更改初始化配置文件(hibernate.cfg.xml或者hibernate.properties)即可,不會對應用程序產生影響。

Hibernate有自己的面向對象的查詢語言HQL,HQL功能強大,支持目前大部分主流的數據庫,如Oracle、DB2、MySQL、Microsoft SQL Server等,是目前應用最廣泛的O/R映射工具。Hibernate為快速開發(fā)應用程序提供了底層的支持。

2 集成SSH的新型,輕量級的J2EE架構

集成SSH框架的系統(tǒng)從職責上分為四層:表示層、業(yè)務邏輯層、數據持久層和域模塊層。其中使用Struts作為系統(tǒng)的整體基礎架構,負責MVC的分離,在Struts框架的模型部分,利用Hibernate框架對持久層提供支持,業(yè)務層用Spring支持。具體做法是:用面向對象的分析方法根據需求提出一些模型,將這些模型實現(xiàn)為基本的Java對象,然后編寫基本的DAO接口,并給出Hibernate的DAO實現(xiàn),采用Hibernate架構實現(xiàn)的DAO類來實現(xiàn)Java類與數據庫之間的轉換和訪問,最后由Spring完成業(yè)務邏輯。

系統(tǒng)的基本業(yè)務流程是: 在表示層中,首先通過JSP頁面實現(xiàn)交互界面,負責傳送請求(Request)和接收響應(Response),然后Struts根據配置文件(struts-config.xml)將ActionServlet接收到的Request委派給相應的Action處理。在業(yè)務層中,管理服務組件的Spring IoC容器負責向Action提供業(yè)務模型(Model)組件和該組件的協(xié)作對象數據處理(DAO)組件完成業(yè)務邏輯,并提供事務處理、緩沖池等容器組件以提升系統(tǒng)性能和保證數據的完整性。而在持久層中,則依賴于Hibernate的對象化映射和數據庫交互,處理DAO組件請求的數據,并返回處理結果。

采用上述開發(fā)模型,不僅實現(xiàn)了視圖、控制器與模型的徹底分離,而且還實現(xiàn)了業(yè)務邏輯層與持久層的分離。這樣無論前端如何變化,模型層只需很少的改動,并且數據庫的變化也不會對前端有所影響,大大提高了系統(tǒng)的可復用性。而且由于不同層之間耦合度小,有利于團隊成員并行工作,大大提高了開發(fā)效率。

通過查找文獻發(fā)現(xiàn)已經應用的組合框架有struts與spring組合和spring與hibernate組合。

2.1 struts與spring

優(yōu)點:當需要修改大量代碼時,只需要修改spring的配置文件即可,提高代碼的復用性和可移植性,大大節(jié)省了開大的周期。

缺點:Action將會和Spring耦合在一起。如果有多個Action類都繼承MappingDispatchActionSupport的話你將會每次都需要調用getWebApplicationContext()獲取ApplicationContext的實例。這樣如果放棄使用spring的話,所要修改的代碼量將非常大。

2.2 Spring與hibernate

優(yōu)點:Spring提供的是框架級的事務管理,在使用session.beginTransaction()或tx.commit()的時候就是使用了hibernate的API,這樣代碼就和hibernate耦合了。如果以后想用或JPA來代替hibernate做持久化工作,太多代碼需要改動,如果使用spring的事務控制,就不再需要在代碼中是用hibernate的API,同樣是用JTA或JPA來代替hibernate,只需要修改spring的配置文件就可以替換了持久層框架。

缺點:由于對持久層封裝過于完整,導致開發(fā)人員無法對SQL進行優(yōu)化,無法靈活使用JDBC的原生SQL,Hibernate封裝了JDBC,所以沒有JDBC直接訪問數據庫效率高。要使用數據庫的特定優(yōu)化機制的時候,不適合用Hibernate 。

對于框架組合的一般方式進行總結歸納,分析各自的優(yōu)缺點和適用條件,通過Spring與hibernate的組合方式,可以發(fā)現(xiàn)無法進行SQL優(yōu)化,增加數據庫訪問時間等缺點,針對這種組合存在的問題,結合具體的需求實踐,我們提出了struts,spring,iBatis和struts,spring,jdbc的組合方式,然后結合具體實現(xiàn)的系統(tǒng)驗證該組合模式的有效性。并通過后面的學習和實踐,分析和驗證其他的框架組合模式。

3 研究方案及準備采取的技術路線、擬解決的關鍵問題

3.1 研究方案

根據Struts、Spring、Hibernate各個框架的功能和分層結構,對比研究分析出每個框架的適用條件和適用屬性,并且以一個具體實現(xiàn)的系統(tǒng)展現(xiàn)每個框架的應用:

采用以下開發(fā)工具:MyEclipse,Tomcat和MySQL數據庫

客戶端:采用jQuery標簽和Struts框架為主要展示層,提供豐富的用戶交互UI功能,跨平臺的使用為用戶帶來無限便捷,并且為用戶帶來各種新穎的用戶體驗。

數據交互通信層:采用Spring框架,使用統(tǒng)一的接口,實現(xiàn)數據由前端到后端的傳輸,增強數據的時效性。

數據存儲管理層:采用MySQL數據庫和Hibernate框架,對數據進行持久化和SQL注入,通過Hibernate框架讓系統(tǒng)對數據庫的操作更簡單方便。

3.2 技術路線

對比Struts、Spring、Hibernate各自框架的優(yōu)缺點、設計原則和運行流程,分析各種組合框架的適用性。

Struts和Spring的整合,首先通過加載Spring的應用環(huán)境Application,自動獲取了Spring中設置的bean對象,將Struts中ActionServlet請求Action納入Spring容器中的方法將Struts和Spring整合起來。

Hibernate和Spring的整合主要是Spring對SessionFactory的管理。

3.3 擬解決的關鍵問題

(1)采用jQuery和Struts框架技術實現(xiàn)頁面展示部分;

(2)搭建SSH框架,使框架可以運行;

(3)采用Spring的IOC(控制反轉和依賴注入)技術實現(xiàn)容器動態(tài)地將某種依賴 關系注入到組件之中;

(4)采用Hibernate技術實現(xiàn)對數據的持久化和對對象的直接操作;

(5)根據業(yè)務需求條件的不同,采用合適的框架組合。

4 結論

為了解決傳統(tǒng)基于J2EE架構的Web應用系統(tǒng)中的一些弊端,找到適用于企業(yè)級應用軟件系統(tǒng)需求的特點和開發(fā)方法,通過分析J2EE多層分布式架構應用模型,采用輕量級的SSH組合框架,并對組合框架的性能進行改進和優(yōu)化,最大化各個框架的自身優(yōu)勢,以得到具備以下優(yōu)點的框架:

(1)重用設計,用來簡化設計的復雜性;

(2)重用代碼,用來減少編碼和測試的時間,縮短軟件開發(fā)周期,提高開發(fā)效率;

(3)提高應用系統(tǒng)的可擴展性、可維護性和可移植性;

(4)降低各層之間的藕合度。

為Web應用開發(fā)人員提供了一個能夠統(tǒng)一使用的開發(fā)模式和軟件包,開發(fā)人員不必關系底層的實現(xiàn)細節(jié),將工作重心放在應用的業(yè)務邏輯處理上。減輕了開發(fā)人員處理復雜問題的負擔,提高開發(fā)效率。其次,在應用和分析架構的基礎上,可以進行擴展和改進,以適應當前應用的需要,為以后的擴展和維護奠定了基礎。

參考文獻

[1]萬助盛,侯文永.J2EE企業(yè)計算平臺[J].計算機應用研究,2013(12):38-40.

[2]張友生.軟件體系結構[M].北京:北京清華大學出版社,2011(10).

[3]劉瑜,王立福.軟件框架開發(fā)過程研究[J].計算機工程與應用,2014.

[4]劉曉華,陳亞強.應用開發(fā)詳解[M].北京:電子工業(yè)出版社,2015.

[5]葉娜.J2EE Web應用開發(fā)中Struts框架的研究與擴展[J].西安建筑科技大學,2012.

[6]趙強,喬新亮.J2EE應用開發(fā)[M].北京:電子工業(yè)出版社,2013.

[7]張友生.軟件體系結構[M].北京:清華大學出版社,2014(10).

[8]薩師煊,王珊.數據庫系統(tǒng)概論(第三版)[M].北京:高等教育出版社,2013(12).

[9]熊偉.Java EE模式框架在中小企業(yè)Web實施應用中的研究[D].成都:成都理工大學,2015(06).

[10]孫鑫.Java Web開發(fā)詳解[M].北京:電子工業(yè)出版社,2015.

[11]寇毅,吳力文.基于MVC設計模式的Struts框架的應用方法[J].計算機應用,2013.

作者簡介

曹靜(1989-),女,貴州省貴陽市人。貴州大學計算機科學與技術學院。主要研究方向為Java Web開發(fā)。

作者單位

貴州大學 貴州省貴陽市 550025

猜你喜歡
面向對象
面向對象的計算機網絡設計軟件系統(tǒng)的開發(fā)
電子測試(2018年15期)2018-09-26 06:01:34
面向對象的數據交換協(xié)議研究與應用
基于面向對象的Office評測系統(tǒng)的分析
峰叢洼地農作物面向對象信息提取規(guī)則集
遙感信息(2015年3期)2015-12-13 07:26:54
面向對象的SoS體系結構建模方法及應用
面向對象信息提取中影像分割參數的選擇
河南科技(2014年10期)2014-02-27 14:09:03
黄平县| 公主岭市| 新晃| 白水县| 交城县| 曲周县| 读书| 广昌县| 台南市| 林州市| 嘉兴市| 肇源县| 大同县| 江都市| 福清市| 巴青县| 玉屏| 湖北省| 北海市| 华蓥市| 黄冈市| 文昌市| 连州市| 金山区| 镇江市| 辽阳市| 墨玉县| 奎屯市| 即墨市| 北京市| 庆云县| 中西区| 南安市| 海原县| 荣成市| 秦皇岛市| 辰溪县| 江门市| 钟祥市| 铅山县| 鄂托克前旗|