• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

      2017-11-09 11:25:07曹靜李梅付惠茹李沂橋嚴開
      電子技術與軟件工程 2017年19期
      關鍵詞:面向?qū)ο?/a>

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

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

      【關鍵詞】SSH J2EE 面向?qū)ο?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項目需要運用框架和設計模式來控制軟件質(zhì)量。目前,市場上出現(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接收所有來自客戶端的請求并根據(jù)配置文件(struts-config.xml)中的定義將控制轉(zhuǎn)移到適當?shù)腁ction對象。

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

      1.3 數(shù)據(jù)持久層框架Hibernate

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

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

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

      Hibernate有自己的面向?qū)ο蟮牟樵冋Z言HQL,HQL功能強大,支持目前大部分主流的數(shù)據(jù)庫,如Oracle、DB2、MySQL、Microsoft SQL Server等,是目前應用最廣泛的O/R映射工具。Hibernate為快速開發(fā)應用程序提供了底層的支持。

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

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

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

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

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

      2.1 struts與spring

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

      缺點:Action將會和Spring耦合在一起。如果有多個Action類都繼承MappingDispatchActionSupport的話你將會每次都需要調(diào)用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直接訪問數(shù)據(jù)庫效率高。要使用數(shù)據(jù)庫的特定優(yōu)化機制的時候,不適合用Hibernate 。

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

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

      3.1 研究方案

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

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

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

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

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

      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(控制反轉(zhuǎn)和依賴注入)技術實現(xiàn)容器動態(tài)地將某種依賴 關系注入到組件之中;

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

      (5)根據(jù)業(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]薩師煊,王珊.數(shù)據(jù)庫系統(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

      猜你喜歡
      面向?qū)ο?/a>
      面向?qū)ο蟮挠嬎銠C網(wǎng)絡設計軟件系統(tǒng)的開發(fā)
      電子測試(2018年15期)2018-09-26 06:01:34
      面向?qū)ο蟮臄?shù)據(jù)交換協(xié)議研究與應用
      基于面向?qū)ο蟮腛ffice評測系統(tǒng)的分析
      峰叢洼地農(nóng)作物面向?qū)ο笮畔⑻崛∫?guī)則集
      遙感信息(2015年3期)2015-12-13 07:26:54
      面向?qū)ο蟮腟oS體系結構建模方法及應用
      面向?qū)ο笮畔⑻崛≈杏跋穹指顓?shù)的選擇
      河南科技(2014年10期)2014-02-27 14:09:03
      阳信县| 永胜县| 会理县| 丰镇市| 杭锦后旗| 察雅县| 清新县| 北流市| 子长县| 彩票| 观塘区| 灵璧县| 邵阳市| 靖西县| 饶阳县| 个旧市| 平湖市| 宣化县| 思南县| 肥东县| 汝南县| 青铜峡市| 迁安市| 东辽县| 华安县| 敖汉旗| 辛集市| 桐梓县| 武隆县| 上高县| 海安县| 台中县| 玛沁县| 基隆市| 五河县| 松滋市| 宾川县| 原阳县| 绩溪县| 垫江县| 喀喇|