公務(wù)員期刊網(wǎng) 精選范文 spring框架范文

spring框架精選(九篇)

前言:一篇好文章的誕生,需要你不斷地搜集資料、整理思路,本站小編為你收集了豐富的spring框架主題范文,僅供參考,歡迎閱讀并收藏。

spring框架

第1篇:spring框架范文

關(guān)鍵詞 Struts2框架;spring框架;Hibernate框架

中圖分類號:TP3 文獻(xiàn)標(biāo)識碼:A 文章編號:1671-7597(2013)20-0049-01

1 Struts2、Spring和Hibernate三大框架簡介

框架是JavaEE開發(fā)領(lǐng)域炙手可熱的一個名詞。目前技術(shù)領(lǐng)域存在很多種框架技術(shù),能夠有效的解決JavaEE應(yīng)用開發(fā)中很多通用的問題,其中Struts2、Hibernate以及Spring是目前最主流的、使用最廣泛的開源框架,每個框架專注于解決不同的問題,具有很強的代表性。其中,Struts2框架是一個MVC框架;Hibernate框架是一個ORM框架;而Spring框架是一個綜合性的框架,是一個輕量級的解決方案。這三個框架往往各司其職,在應(yīng)用中的不同層面發(fā)揮其作用。

2 Struts2框架工作原理

Struts2框架已經(jīng)盛行多年,然而Struts2與Struts1之間并不是擴展和升級的關(guān)系。Struts2是著名框架WebWork的擴展,WebWork是一個很優(yōu)秀的MVC框架,但是由于是一個新興的框架,在一段時間內(nèi)沒有被廣泛使用。后來,Struts和WebWork社區(qū)決定將二者合并,于是推出了Struts2框架。Struts2框架兼具Struts1和WebWork的優(yōu)點,從而得到了廣泛的使用。

Struts2的工作原理比較復(fù)雜:

1)客戶端向服務(wù)器端提交請求,容器初始化HttpServletRequest請求對象。

2)請求對象被一系列的Servlet過濾器過濾。Struts2中的過濾器有3種:①ActionContextCleanUp過濾器,是一個可選的過濾器,主要用來集成其他框架;②其他插件的核心過濾器,譬如:SiteMesh插件的過濾器;③FilterDispatcher過濾器,是Struts2 API中提供的過濾器,是必選的過濾器。

3)FilterDispatcher過濾器調(diào)用ActionMapper,決定該請求是否需要調(diào)用某個Action。

4)如果請求需要調(diào)用某個Action,ActionMapper將通知FilterDispatcher過濾器把請求的處理交給ActionProxy來處理。

5)ActionProxy通過Configuration Manager解析框架的配置文件struts.xml,找到需要調(diào)用的Action類。

6)ActionProxy將創(chuàng)建一個ActionInvocation實例。

7)ActionInvocation實例使用命令模式回調(diào)Action中的execute方法,Action調(diào)用業(yè)務(wù)邏輯類完成業(yè)務(wù)邏輯。在調(diào)用Action的前后,將調(diào)用該Action涉及的相關(guān)攔截器。

8)Action執(zhí)行完畢后,ActionInvocation根據(jù)struts.xml中的配置找到對應(yīng)的返回結(jié)果,返回給JSP、FreeMarker等模版文件。

3 Hibernate框架的作用及其對象狀態(tài)

Hibernate是一個ORM(Object-Relational Mapping)框架,主要作用是簡化應(yīng)用的數(shù)據(jù)持久層編程,不需要編程人員花大量的時間編寫SQL和JDBC代碼。可見,Hibernate框架位于應(yīng)用層和數(shù)據(jù)庫之間,解決數(shù)據(jù)持久層編程。Hibernate框架主要包括持久化對象(persistent Object):是Hibernate框架中非常重要的組成部分,簡稱為PO。PO用來映射數(shù)據(jù)庫中的記錄,可以通過修改PO來修改數(shù)據(jù)庫記錄;包括Hibernate屬性文件(hibernate.properties):使用Hibernate進行數(shù)據(jù)持久層編程,相關(guān)的數(shù)據(jù)庫訪問信息需要在Hibernate屬性文件中配置,譬如,數(shù)據(jù)庫驅(qū)動類、連接串、用戶名、密碼等,也可以使用名字為hibernate.cfg.xml的xml文件配置屬性;還包括Hibernate映射文件(XML Mapping):持久化對象映射數(shù)據(jù)庫中的記錄,其映射關(guān)系依靠Hibernate框架的映射文件配置,映射文件是XML文件,往往使用*.hbm.xml形式命名,其中*是持久化對象的類名。

Hibernate框架是一個完整的ORM框架,以對象為基礎(chǔ),通過操作對象,進一步操作對象關(guān)聯(lián)的數(shù)據(jù)庫記錄。持久化類與數(shù)據(jù)表對應(yīng),持久化的對象則映射數(shù)據(jù)庫記錄。持久化的對象有三種狀態(tài):瞬時狀態(tài),當(dāng)通過new操作符實例化了一個對象,而這個對象并沒有被Session對象操作,也就是該對象沒有與一個Session對象關(guān)聯(lián)時,那么這個對象就稱為瞬時狀態(tài)對象,瞬時狀態(tài)的對象與普通對象沒有區(qū)別,沒有與數(shù)據(jù)庫的記錄有映射關(guān)系;持久狀態(tài),如果一個對象與某一個Session對象關(guān)聯(lián),例如被Session對象剛加載的、剛保存的、剛更新的,那么該對象就稱為持久狀態(tài)對象。持久狀態(tài)的對象與數(shù)據(jù)庫中一條數(shù)據(jù)相對應(yīng),并擁有持久化標(biāo)識。當(dāng)持久狀態(tài)的對象有改變時,當(dāng)事務(wù)提交后,Hibernate會自動檢測到對象的變化,并持久化到數(shù)據(jù)庫中;脫管狀態(tài),當(dāng)與持久狀態(tài)對象關(guān)聯(lián)的Session關(guān)閉后,該對象就變成脫管狀態(tài)。脫管狀態(tài)的對象引用依然有效,可以繼續(xù)使用,當(dāng)脫管狀態(tài)的對象再一次與某個Session關(guān)聯(lián)后,脫管狀態(tài)對象將轉(zhuǎn)變?yōu)槌志脿顟B(tài),脫管期間進行的修改將被持久化到數(shù)據(jù)庫中。

4 Spring框架的模塊

企業(yè)級應(yīng)用開發(fā)總是涉及方方面面,Spring框架是一個輕量級的解決方案,致力于創(chuàng)建“快裝式企業(yè)應(yīng)用”。Spring框架包括一系列的特性,被組織在七個模塊中,可以把Spring框架看成一個標(biāo)準(zhǔn)的開發(fā)組件。Spring框架被設(shè)計成無侵入式的方式,即企業(yè)應(yīng)用可以根據(jù)需要選擇Spring框架中必要的組件,而忽略其他部分,以做到最小范圍依賴的Spring框架。

Spring框架包含了7個模塊,每個模塊對于解決不同的問題。Spring Core模塊:是最核心的模塊,封裝了Spring框架核心包,主要提供了Spring IoC(控制反轉(zhuǎn))容器。IoC是Spring框架的基礎(chǔ),所有其他特性都是基于IoC之上;Spring Context模塊:提供了對Spring中對象的框架式訪問方式,并包括國際化、事件傳播等特性;Spring DAO模塊:提供了JDBC的抽象層,是集成JDBC的封裝包,能夠避免JDBC繁瑣冗長代碼,同時還提供了聲明性事務(wù)管理特性;Spring ORM模塊:提供了集成常用ORM框架的封裝包,包括JDO、JPA、Hibernate、iBatis等。使用該模塊可以更為便捷的使用ORM框架,而且還可以同時使用Spring的其他特性,如聲明性事務(wù)等;Spring Web模塊:提供了Web開發(fā)的一些基礎(chǔ)特性,如上傳文件等,同時提供了與Web框架集成的封裝包,如集成Struts2框架;Spring AOP模塊:AOP(面向切面編程)是Spring中除了IoC外的另外一個核心概念,該模塊提供了符合AOP聯(lián)盟規(guī)范的AOP實現(xiàn),可以降低應(yīng)用的耦合性,提高擴展性;Spring MVC模塊:該模塊提供了一個MVC框架。Spring框架包含了一系列的特性,可以根據(jù)應(yīng)用的具體需要來選擇使用部分組件。Spring框架可以在任何類型的應(yīng)用中使用,譬如:桌面應(yīng)用、Web應(yīng)用、C/S應(yīng)用等。

參考文獻(xiàn)

[1]柯常欽,史毓達(dá).基于SSH框架的Web應(yīng)用系統(tǒng)開發(fā)研究[J].湖北第二師范學(xué)院學(xué)報,2010(08):102-105.

[2]符鈺.基于Struts2+Hibernate3+Spring3框架的Web[J].金華職業(yè)技術(shù)學(xué)院學(xué)報,2013(06):61-64.

第2篇:spring框架范文

著名的軟件大師RalphJohnson對框架(Framework)進行了如下的定義:框架是整個系統(tǒng)或系統(tǒng)的一部分的可重用設(shè)計,由一組抽象的類及其實例間的相互作用方式組成,框架一般具有即插即用的可重用性、成熟的穩(wěn)定性以及良好的團隊協(xié)作性。JavaEE復(fù)雜的多層結(jié)構(gòu)決定了大型的JavaEE項目需要運用框架和設(shè)計模式來控制軟件質(zhì)量。Struts、JPA和Spring是JavaEE開發(fā)的3種輕量級開源項目,它們的出現(xiàn)為開發(fā)人員提供了極大的便利,將開發(fā)人員從簡單而繁瑣的工作中解脫出來,從而去關(guān)注業(yè)務(wù)邏輯模塊的實現(xiàn),從而降低了開發(fā)周期。同時,也為系統(tǒng)的性能和安全性提供了保證,提高了系統(tǒng)的擴展性和可維護性。

1.1Struts

Struts作為Apache組織的子項目,是一個基于MVC(模型—視圖—控制器)設(shè)計模式的開源框架,其擺脫了傳統(tǒng)Web應(yīng)用開發(fā)模式的束縛,得到了眾多軟件企業(yè)和開發(fā)人員的認(rèn)可,成為MVC模式Web應(yīng)用的首選框架。Struts的模型(Model)分為Action和ActionForm兩個對象,由ActionForm封裝交互的數(shù)據(jù)元素,Action完成業(yè)務(wù)處理。視圖(View)由JSP以及Struts標(biāo)簽庫等組成,視圖負(fù)責(zé)前端的頁面及數(shù)據(jù)顯示。控制器(Control-ler)用于管理模型與視圖的交互,控制組件有struts-con-fig.xml和ActionServlet,控制器主要處理發(fā)送到Struts的HTTP請求,把請求分發(fā)到相應(yīng)的Action類,然后通過ActionForward進行鏈接轉(zhuǎn)向。

1.2Spring

Spring是一個以控制反轉(zhuǎn)(IOC)和面向切面(AOP)編程為核心的輕量級分層體系結(jié)構(gòu)開發(fā)框架。通過控制反轉(zhuǎn)機制,只需描述哪一個組建需要哪一項服務(wù),而無需在代碼中直接與對象或服務(wù)連接,通過IOC容器自動地將其注入。同時運用面向切面編程可以創(chuàng)建“橫切關(guān)注點”,可將它們插入到代碼中,使代碼具有良好的可重用性可擴展性。此外,Spring還提供了包括聲明式事務(wù)管理,RMI或WebServices遠(yuǎn)程訪問業(yè)務(wù)邏輯,以及可以多種方法進行的持久化數(shù)據(jù)庫的解決方案。

1.3JPA

JPA(JavaPersistenceAPI)由EJB3.0軟件專家組開發(fā),是JavaEE標(biāo)準(zhǔn)中的ORM規(guī)范,它充分吸收了現(xiàn)有Hibernate、TopLink等ORM框架的基礎(chǔ)上發(fā)展而來。JPA是一個簡單易用、伸縮性強的ORM規(guī)范。任何符合JPA標(biāo)準(zhǔn)的框架都提供相同的訪問API,這確保了利用JPA技術(shù)開發(fā)的企業(yè)級應(yīng)用可以在任何實現(xiàn)了JPA規(guī)范的ORM框架中運行,可移植性很強。目前主流的ORM框架如Hibernate也提供了對JPA的實現(xiàn)。

2系統(tǒng)設(shè)計

2.1系統(tǒng)功能模塊設(shè)計

電子商務(wù)系統(tǒng)是一套面向企業(yè)級的商品在線交易平臺,從用戶的角度看系統(tǒng)可分為前臺和后臺兩大模塊,前臺主要負(fù)責(zé)用戶的產(chǎn)品瀏覽,在線交易,產(chǎn)品評價等商務(wù)活動。后臺模塊又可根據(jù)超級管理員、普通管理員、部門員工等不同權(quán)限對網(wǎng)站的運營實施管理功能。從功能結(jié)構(gòu)上看,系統(tǒng)可包含多個功能子模塊,具體如下:產(chǎn)品管理:網(wǎng)站運營人員可通過該模塊對產(chǎn)品的詳細(xì)信息進行管理。產(chǎn)品具有產(chǎn)品類別、品牌、價格、銷量、點擊數(shù)、廠商、是否推薦標(biāo)識等屬性,產(chǎn)品類別具有向下無限級分類功能。產(chǎn)品搜索:根據(jù)用戶輸入的關(guān)鍵詞對產(chǎn)品信息進行搜索,并可通過產(chǎn)品類別、品牌、價格等屬性進行篩選。產(chǎn)品展示:前臺展示頁面提品類別和品牌的導(dǎo)航,通過導(dǎo)航可以定位到相應(yīng)類別和品牌下的產(chǎn)品列表;產(chǎn)品頁面顯示產(chǎn)品的詳細(xì)信息,并可根據(jù)產(chǎn)品價格,產(chǎn)品銷量等屬性對產(chǎn)品進行排序。購物車:購物車是在線交易系統(tǒng)的重要組成部分,類似于現(xiàn)實世界超市中的購物籃。用戶可以將喜愛的產(chǎn)品添加進購物車,而后建立訂單結(jié)算,支付方式可通過在線支付(支付寶等)和郵局匯款方式。購物車提品添加、產(chǎn)品刪除、產(chǎn)品數(shù)量修改、產(chǎn)品清空、產(chǎn)品總價格計算等功能。訂單管理:訂單管理模塊的主要功能包括訂單查詢、訂單修改、訂單刪除、訂單處理等。訂單處理流程由多個部門協(xié)同參與,市場部負(fù)責(zé)訂單確認(rèn),財務(wù)部負(fù)責(zé)訂單支付確認(rèn),產(chǎn)品部負(fù)責(zé)產(chǎn)品的配送。訂單根據(jù)處理流程應(yīng)具有多個處理狀態(tài):未處理、已確認(rèn)、已支付、已配送等。為避免同一訂單同時被多人進行處理造成的訂單異常,訂單在被處理時其狀態(tài)設(shè)為鎖定,只允許單人訪問,處理完畢后恢復(fù)解鎖。用戶管理:網(wǎng)站的用戶群體可分為前臺客戶和網(wǎng)站運營人員,故用戶管理功能可分為對前臺客戶信息的管理和網(wǎng)站運營人員的管理。對前臺客戶可管理其注冊信息、購買行為、評論回復(fù)等;對網(wǎng)站運營人員可管理其員工信息和部門信息等。其中,網(wǎng)站運營人員隸屬于不同的部門之下,每個部門行使不同的責(zé)任和權(quán)限。權(quán)限管理:權(quán)限管理針對網(wǎng)站的運營人員設(shè)定,超級管理員擁有所有權(quán)限,可創(chuàng)建并維護下屬的部門信息,為部門添加員工并分配部門相應(yīng)的操作權(quán)限。數(shù)據(jù)統(tǒng)計:對產(chǎn)品的銷量、點擊數(shù)、訪問來源、個性化用戶購買行為、瀏覽習(xí)慣等數(shù)據(jù)進行統(tǒng)計,為網(wǎng)站商業(yè)運營提供決策支持。

2.2分層架構(gòu)設(shè)計

基礎(chǔ)平臺采用JavaEE的三層結(jié)構(gòu),分為表現(xiàn)層、業(yè)務(wù)邏輯層和數(shù)據(jù)服務(wù)層(系統(tǒng)架構(gòu)如圖1所示)。其中表現(xiàn)層主要包括Jsp、Struts標(biāo)簽和JSTL/EL來完成頁面顯示和數(shù)據(jù)的呈現(xiàn)。數(shù)據(jù)服務(wù)層由MySQL提供數(shù)據(jù)存儲服務(wù)。中間層通過整合主流的開源框架Struts+Spring+JPA實現(xiàn),具體又可細(xì)分為:①Web層,負(fù)責(zé)表現(xiàn)層與業(yè)務(wù)邏輯層的交互,通過調(diào)用業(yè)務(wù)層對象處理業(yè)務(wù),并進行鏈接轉(zhuǎn)向,呈現(xiàn)數(shù)據(jù)到表現(xiàn)層;②Service層,負(fù)責(zé)業(yè)務(wù)邏輯的實現(xiàn),通過DAO接口的實例對象進行持久化操作;③DAO層,負(fù)責(zé)與持久化對象進行交互,封裝了基本的數(shù)據(jù)訪問方法,如增、刪、改、查等;④PO層,負(fù)責(zé)對象到關(guān)系數(shù)據(jù)庫的映射。整合框架的過程中,通過基于MVC模式的Struts框架,利用ActionForm類封裝與用戶交互的數(shù)據(jù)元素,Ac-tion類實現(xiàn)控制、調(diào)用業(yè)務(wù)對象處理業(yè)務(wù)。通過Spring容器進行業(yè)務(wù)組件的組裝關(guān)聯(lián),通過依賴注入、AOP應(yīng)用、面向接口編程,來降低組件之間的耦合度,提高系統(tǒng)的擴展性和通用性。把ActionObject交由Spring容器進行管理,在Action中可通過依賴注入功能為Action對象注入業(yè)務(wù)對象;使用Spring容器提供的事務(wù)管理功能對業(yè)務(wù)層對象聲明事務(wù)管理。通過JPAAPI對實體bean進行持久化操作。

3系統(tǒng)實現(xiàn)

3.1泛型機制

泛型是JavaSE1.5的新特性,在沒有引入泛型的情況下,往往通過對類型Object的引用來實現(xiàn)參數(shù)的“任意化”,“任意化”帶來的缺點是要做顯式的強制類型轉(zhuǎn)換,導(dǎo)致常常出現(xiàn)運行時的轉(zhuǎn)型異常。本系統(tǒng)通過引入泛型機制實現(xiàn)參數(shù)化類型,所操作的數(shù)據(jù)類型被指定為一個參數(shù),該參數(shù)類型可以用在類、接口和方法的創(chuàng)建中,并且所有的強制轉(zhuǎn)換都是自動和隱式的。從而提高代碼的重用率和可讀性。

3.2產(chǎn)品分類實現(xiàn)

下面以產(chǎn)品分類為例詳細(xì)說明在架構(gòu)中該模塊的具體實現(xiàn)。產(chǎn)品分類應(yīng)具類別添加、修改、查詢、刪除、向下無限極分類、分頁查看等功能,由于產(chǎn)品類別之間、類別和具體產(chǎn)品之間有諸多層次性關(guān)系,為避免由于刪除產(chǎn)品類別導(dǎo)致的其他數(shù)據(jù)異常,故刪除功能并不對產(chǎn)品類別的數(shù)據(jù)進行物理刪除,而是通過一個是否可見標(biāo)識設(shè)定其可見或隱藏。產(chǎn)品分類具有如下屬性:分類ID、類別名稱、是否可見標(biāo)識、所屬上級分類、子類別等。

3.2.1持久層實現(xiàn)

持久層主要包括持久化類和元注解。通過JPA提供注解方式配置實體的JPA行為,屬性映射可以在持久化類的屬性getter方法上進行標(biāo)記。JPA與數(shù)據(jù)庫的連接通過persistence.xml文件進行配置,包括連接數(shù)據(jù)庫所用的連接池、用戶名和密碼等信息。部分產(chǎn)品類別的實體Bean代碼如下:@Entity//指定為JPA實體publicclassProductTypeimplementsSerializable{privateIntegertypeid;//產(chǎn)品類別idprivateProductTypeparent;//所屬父類privateSet<ProductType>childtypes=newHashSet<ProductType>();//子類別…@Id@GeneratedValue(strategy=GenerationType.AUTO)//注解持久化類的主鍵信息和主鍵的生成策略publicIntegergetTypeid(){returntypeid;}publicvoidsetTypeid(Integertypeid){this.typeid=typeid;}@ManyToOne(cascade=CascadeType.REFRESH)@JoinColumn(name="parentid")//定義外鍵對應(yīng)關(guān)系和級聯(lián)publicProductTypegetParent(){returnparent;}publicvoidsetParent(ProductTypeparent){this.parent=parent;}…}

3.2.2業(yè)務(wù)層實現(xiàn)

(1)DAO層的實現(xiàn)

DAO層包括一個接口DAO及其DaoSupport實現(xiàn)類,通過引入泛型機制實現(xiàn)參數(shù)化類型,可對所有實體進行操作。DAO層作為業(yè)務(wù)邏輯層Service的上層父類,完成和持久層進行交互的,不同的業(yè)務(wù)邏輯類可根據(jù)不同需求對DaoSupport方法進行重載。DaoSupport類部分代碼片斷如下:@Transactional//聲明事務(wù)管理publicabstractclassDaoSupport<T>implementsDAO<T>{@PersistenceContextprotectedEntityManagerem;//聲明實體管理器publicvoiddelete(Serializable...entityids){for(Objectid:entityids){em.remove(em.getRef-erence(this.entityClass,id));}}@Transactional(readOnly=true)//聲明事務(wù)只讀屬性publicTfind(SerializableentityId){returnem.find(this.entityClass,entityId);}}

(2)Service層實現(xiàn)

業(yè)務(wù)對象負(fù)責(zé)處理程序的業(yè)務(wù)邏輯,包括一個接口及其實現(xiàn)類,需要繼承DaoSupport實現(xiàn)類并將具體的實體作為泛型參數(shù)傳入。不同實體的業(yè)務(wù)類可根據(jù)需求重載或增加新的的方法。代碼片斷如下:@Service@Transactional//聲明該類為業(yè)務(wù)類和聲明事務(wù)管理publicclassProductTypeServiceBeanextendsDao-Support<ProductType>implementsProductTypeService{@Override//重載實體的刪除方法publicvoiddelete(Serializable...entityids){更改可見標(biāo)識代碼;}…}

(3)業(yè)務(wù)層的配置

下面就是通過Spring的配置文件將定義好的DAO和Service組裝關(guān)聯(lián)起來。配置文件bean.xml文件代碼片斷如下:<beanid="entityManagerFactory"class="org.springframework.orm.jpa.LocalEntityManagerFactory-Bean"><propertyname="persistenceUnitName"value="shopping"/></bean><beanid="transactionManager"class="org.spri-ngframework.orm.jpa.JpaTransactionManager"><propertyname="entityManagerFactory"ref="entityManagerFactory"/></bean><tx:annotation-driventransaction-manager="trans-actionManager"/><beanid="compass"class="pass.spring.LocalCompassBean"><propertyname="classMappings"><list><value>com.bean.product.ProductInfo</value>…</list></property><propertyname="transactionManager"ref="transactionManager"/></bean>

3.3分頁實現(xiàn)

在編寫JavaWeb應(yīng)用時,常常需要對顯示的數(shù)據(jù)進行分頁顯示,如果一次性將所有結(jié)果數(shù)據(jù)顯示給用戶,則顯得不夠人性化和美觀。該系統(tǒng)對分頁功能進行封裝,并引入泛型機制,調(diào)用時通過include指令包含一個用于顯示分頁數(shù)據(jù)的獨立jsp頁面即可完成對所有實體的分頁功能。具體做法是:利用泛型定義一個查詢結(jié)果類QueryResult用于存放查詢得到的分頁數(shù)據(jù),該類包含兩個屬性List<T>型的結(jié)果記錄集resultlist和long型的查詢結(jié)果的總記錄數(shù)totalrecord以及它們的getter和setter方法;同樣利用泛型定義一個用于在頁面顯示的頁對象PageView,其包括總記錄數(shù)、總頁數(shù)、每頁顯示記錄數(shù)、當(dāng)前頁、記錄的開始索引、起始頁碼、結(jié)束頁碼、分頁數(shù)據(jù)等,其中分頁數(shù)據(jù)為List<T>型,通過set方法將QueryResult的分頁數(shù)據(jù)注入,另外總記錄數(shù),總頁數(shù)和記錄的開始索引也需要通過簡單的公式計算出來,通過set方法注入,在此不一一列舉。用于顯示分頁數(shù)據(jù)的獨立jsp頁面fenye.jsp部分調(diào)用如下:<c:forEachitems="${pageView.startindex}"end="${pageView.endindex}"var="p">第${p}頁</c:forEach><c:forEachitems="${pageView.records}"var="entry">${entry.propertyValue}</c:forEach>

第3篇:spring框架范文

關(guān)鍵詞:Spring;非侵入式;松耦合;高可配;面向切面

【分類號】TP393.07

1 引言

EJB的出現(xiàn)帶來了諸如事務(wù)管理之類的核心中間層概念的標(biāo)準(zhǔn)化,但是在實踐中并沒有獲得絕對的成功,因為開發(fā)效率,開發(fā)難度和實際的性能都令人失望。為了解決企業(yè)級應(yīng)用開發(fā)的復(fù)雜性,Spring技術(shù)誕生了。Spring是一個開源框架,是一個輕量級的控制反轉(zhuǎn)(IOC)和面向切面(AOP)的容器框架。Spring使用基本的JavaBean代替EJB,并提供了更多的企業(yè)應(yīng)用功能。

2 Spring技術(shù)及特點

2.1 Spring框架

核心Spring容器

容器是Spring框架最核心的部分,它負(fù)責(zé)Spring應(yīng)用中的Bean的創(chuàng)建、配置和管理。所有的Spring模塊都構(gòu)建于核心容器之上。

Spring的AOP模塊

在AOP模塊中,Spring對面向切面編程提供了豐富的支持。這個模塊是Spring應(yīng)用系統(tǒng)開發(fā)切面的基礎(chǔ)。與依賴注入一樣,AOP可以幫助應(yīng)用對象解耦。借助于AOP,可以將遍布應(yīng)用的關(guān)注點從它們所應(yīng)用的對象中解耦出來。

數(shù)據(jù)訪問與集成

Spring的ORM模塊建立在對DAO的支持之上,并為某些ORM框架提供了一種構(gòu)建DAO的簡便方式。Spring對許多流行的ORM框架進行了集成,包括Hibernate、JDO等。

WEB和遠(yuǎn)程調(diào)用

MVC模式已經(jīng)被普遍的接受為一種構(gòu)建Web應(yīng)用的方法,它有助于將用戶界面邏輯與應(yīng)用邏輯分離。Spring集成了多種流行的MVC框架,并且自帶了一個強大的MVC框架,提升了Web層技術(shù)的松耦合性。

2.2 Spring的主要技術(shù)特點

輕量--從大小與開銷兩方面而言Spring都是輕量的。Spring應(yīng)用中的對象不依賴于Spring的特定類。

面向切面--Spring提供了面向切面編程的豐富支持,允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級服務(wù)進行內(nèi)聚性的開放。

容器--Spring包含并管理應(yīng)用對象的配置和生命周期,可以配置每個Bean如何被創(chuàng)建以及它們是如何相互關(guān)聯(lián)的。Spring不應(yīng)該被混同于傳統(tǒng)的重量級的EJB容器,它們經(jīng)常是龐大的并難以使用。

框架--Spring可以將簡單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對象被聲明式地組合,典型地是在一個XML文件里。

3 Spring在網(wǎng)絡(luò)管理中的應(yīng)用

3.1 Spring與網(wǎng)絡(luò)管理結(jié)合的優(yōu)勢

如果將Spring技術(shù)應(yīng)用到網(wǎng)絡(luò)管理領(lǐng)域,則可以使網(wǎng)絡(luò)管理系統(tǒng)同樣具有Spring的諸多優(yōu)勢。同時,還可以利用已經(jīng)實現(xiàn)的Spring通用服務(wù)和集成框架,使網(wǎng)絡(luò)管理系統(tǒng)更能適應(yīng)未來發(fā)展的需要。更為重要的是,可以在最大程度上減少網(wǎng)絡(luò)一致化過程所需要完成的工作。

利用Spring技術(shù),能方便地實現(xiàn)各個網(wǎng)絡(luò)管理功能模塊之間的相互調(diào)用以及信息傳遞,這樣就可以通過增加新的服務(wù)模塊來實現(xiàn)新的功能,而不必對整個系統(tǒng)進行重新編寫和重載,便于網(wǎng)絡(luò)管理系統(tǒng)功能的擴充。

3.2 傳統(tǒng)網(wǎng)絡(luò)管理系統(tǒng)存在的問題

傳統(tǒng)的網(wǎng)絡(luò)管理系統(tǒng)管理構(gòu)架曾經(jīng)取得了巨大的成功,極大地推動了網(wǎng)絡(luò)的發(fā)展。但是,隨著新一代網(wǎng)絡(luò)的快速進步,它的一些缺點也慢慢顯現(xiàn)出來,甚至制約了網(wǎng)絡(luò)管理的進一步發(fā)展。主要問題有:

現(xiàn)在的網(wǎng)絡(luò)終端千差萬別,對于每種不同的設(shè)備、不同的軟件平臺都要開發(fā)出不同的應(yīng)用程序,代碼的可移植性差、工程量大。

系統(tǒng)的可擴展性差。由于歷史原因所致,該架構(gòu)對于很多異構(gòu)的子系統(tǒng)難以合成一個綜合的管理系統(tǒng),其本身也面臨著可擴展性問題。

3.3 Spring的解決方案

本文在分析傳統(tǒng)網(wǎng)管系統(tǒng)的問題的基礎(chǔ)上,研究了Spring在BS環(huán)境中基于Spring技術(shù)的解決方案,并提出了一個簡單的網(wǎng)絡(luò)管理框架,如圖2所示。

Web容器啟動后,創(chuàng)建兩個Spring容器:Spring根容器和Web容器。根容器負(fù)責(zé)業(yè)務(wù)處理,整個應(yīng)用系統(tǒng)的核心處理單元,Web容器主要負(fù)責(zé)接收用戶請求,并將解析后的參數(shù)等轉(zhuǎn)交根容器進行處理,然后將處理結(jié)果通過HTTP響應(yīng)返回給前臺。

SpringWeb容器寄生于Spring根容器中,是根容器的子容器,可以訪問根容器中所有的資源和服務(wù)。單Spring根容器作為單獨的業(yè)務(wù)處理單元,不能定位SpringWeb容器的服務(wù),這就將應(yīng)用邏輯和視圖顯示處理隔離開來,降低了不同模塊之間的耦合性,并使得應(yīng)用系統(tǒng)更加容易擴展。

使用Spring技術(shù)與網(wǎng)管結(jié)合,使得網(wǎng)絡(luò)管理中拓?fù)涔芾?、故障管理、性能管理、配置管理等模塊之間聯(lián)系更加松耦合,模塊彼此獨立,更加容易復(fù)用和擴展。

4 結(jié)束語

Spring是分層的架構(gòu),開發(fā)者可以選擇自己需要的層而不必關(guān)注不必要的部分。Spring使得對象管理集中化和簡單化。Spring致力于簡化企業(yè)級Java開發(fā),促進代碼松耦合。Spring成功的關(guān)鍵在于依賴注入和AOP。隨著網(wǎng)絡(luò)管理系統(tǒng)的發(fā)展,Spring必將在未來的綜合網(wǎng)絡(luò)管理系統(tǒng)中發(fā)揮越來越大的作用。

參考文獻(xiàn)

第4篇:spring框架范文

關(guān)鍵詞:SSH 框架技術(shù) 事務(wù)處理

中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2012)10-0126-02

1、基于SSH框架技術(shù)開發(fā)WEB項目的思路

SSH是Struts Spring Hibernate三個框架技術(shù)單詞的縮寫。根據(jù)SSH框架技術(shù)整合后各負(fù)其職,各盡其責(zé)及軟件代碼復(fù)用的原則,應(yīng)采用三層結(jié)構(gòu)形式體現(xiàn)WEB項目開發(fā)流程,這三層依次為:表示層(Web層)、業(yè)務(wù)服務(wù)層(Biz層)、DAO層(數(shù)據(jù)訪問層),這三層之間均采用接口方式進行聲明及調(diào)用。分層開發(fā)結(jié)構(gòu)圖如圖1所示。

之所以采用SSH框架整合技術(shù)設(shè)計并實現(xiàn)Java WEB應(yīng)用系統(tǒng),主要是因為這種整合后的框架技術(shù)可以實現(xiàn)具有結(jié)構(gòu)清晰、復(fù)用性好、維護方便、高穩(wěn)定性和高效率開發(fā)的Web應(yīng)用程序。

其中,表示層(Web層):主要接受用戶請求,以及數(shù)據(jù)的返回,為客戶端提供用戶界面以便進行交互。

業(yè)務(wù)服務(wù)層(Biz層):此層主要是表示層和數(shù)據(jù)訪問層之間溝通的橋梁,通過對數(shù)據(jù)訪問層的操作,并根據(jù)業(yè)務(wù)規(guī)則的制定、業(yè)務(wù)流程的實現(xiàn)來負(fù)責(zé)數(shù)據(jù)的傳遞和處理。

DAO層(數(shù)據(jù)訪問層):有時候也稱為持久層,其功能主要是負(fù)責(zé)數(shù)據(jù)庫的訪問,實現(xiàn)了O/R映射,將面向?qū)ο蟮牟僮鬓D(zhuǎn)變?yōu)槊嫦蜿P(guān)系的操作。

實體類層:用于對必須存儲的信息和相關(guān)行為建模的類,主要用于三層結(jié)構(gòu)中的數(shù)據(jù)傳遞。

在用SSH框架整合技術(shù)開發(fā)的Java WEB項目整個流程中,由Struts負(fù)責(zé)項目的顯示用戶界面及處理結(jié)果,Spring負(fù)責(zé)項目中各組件間的組織、管理及依賴注入過程,Hibernate負(fù)責(zé)處理數(shù)據(jù)對象的O/R映射及持久化。

2、基于SSH框架技術(shù)的某系統(tǒng)功能實現(xiàn)

SSH框架之間各組件的依賴注入關(guān)系如圖2所示,依次為表示層(xxxxAction)依賴業(yè)務(wù)服務(wù)層(xxxxBiz),業(yè)務(wù)服務(wù)層(xxxxBiz)依賴數(shù)據(jù)訪問層(xxxxDAO),數(shù)據(jù)訪問層(xxxxDAO)依賴SessionFactory,SessionFactory依賴數(shù)據(jù)源(DataSource)。下面以開發(fā)的某系統(tǒng)為例(注:以下代碼中連接數(shù)據(jù)庫為SQL Server2008)。

2.1 Spring框架依賴注入Hibernate框架

在Spring框架的配置文件applicationContext.xml中第一步,進行數(shù)據(jù)源配置;

value="jdbc:sqlserver://127.0.0.1:1433;databaseName=訪問的數(shù)據(jù)庫名">

第二步,進行SessionFactory配置;

第三步,注入Dao層;

第四步,注入業(yè)務(wù)邏輯層;

2.2 Spring框架組裝Struts框架

第五步,注入表示層(action) ;

在Spring框架的applicationContext.xml中加上如下所示的代碼:

程序的依賴關(guān)系都使用Spring管理起來了,Spring框架在經(jīng)過依賴注入后,會把Struts和Spring整合到一起。在Struts框架中的Struts-config.xml文件中加入如下所示的注入過程。

path="/fwxx" type="Spring框架提供的類">

第5篇:spring框架范文

關(guān)鍵詞:J2EE;表現(xiàn)層;業(yè)務(wù)邏輯層;持久層;整合框架;Struts;Spring;Hibernate

中圖分類號:TP311.52

伴隨著時代的發(fā)展進步,軟件系統(tǒng)的規(guī)模越來越大且更加復(fù)雜。面對日益復(fù)雜的軟件系統(tǒng),對于開發(fā)者而言,正在不斷尋求一種能使Web應(yīng)用系統(tǒng)具有更好的可維護性和可擴展性的框架結(jié)構(gòu),以便實現(xiàn)應(yīng)用程序的高內(nèi)聚、低耦合及代碼的可重用性。J2EE平臺的出現(xiàn),使軟件的復(fù)用得以很好的實現(xiàn),J2EE因此成為當(dāng)前市場上廣泛應(yīng)用的企業(yè)級應(yīng)用系統(tǒng)開發(fā)技術(shù)。

在當(dāng)前的Web系統(tǒng)開發(fā)中,程序開發(fā)人員對運用Struts、Spring、Hibernate框架的整合十分親睞,這便是現(xiàn)在十分流行的輕量級J2EE。本文致力于研究分析如何有效整合輕量級J2EE中的Struts、Spring、Hibernate三個框架。通過對三個框架的有效整合使得系統(tǒng)開發(fā)時間縮短、避免開發(fā)的重復(fù),同時系統(tǒng)的維護性、移植性和擴展性大大增強,系統(tǒng)開發(fā)成本得以降低。

1 J2EE體系結(jié)構(gòu)

1.1 J2EE平臺簡介

J2EE是由Sun公司,目前已經(jīng)成為一個具有穩(wěn)定性、開放性、高安全性的開放平臺。J2EE提供了EJB(Eenterprise JavaBeans)組件、JSP(Java Server Pages)、Java ServletsAPI的支持,能夠為在Internet應(yīng)用中保護數(shù)據(jù)提供安全模式。

J2EE使用多層的分布式應(yīng)用模型來提高系統(tǒng)的維護性和擴展性,分離業(yè)務(wù)邏輯的實現(xiàn),當(dāng)系統(tǒng)升級時可以避免整個應(yīng)用程序被重新開發(fā)。

J2EE的體系結(jié)構(gòu)可分為領(lǐng)域?qū)ο髮?、?shù)據(jù)訪問對象層、業(yè)務(wù)邏輯層、控制器層、表現(xiàn)層,各層的組件之間松耦合在一起。應(yīng)用程序安全機制得以增強,性能得以提高,并且有良好的向?qū)еС执虬?、部署?yīng)用。

1.2 J2EE的優(yōu)勢特點

J2EE是一組規(guī)范、技術(shù)框架及技術(shù)的集合,用于創(chuàng)建分布式企業(yè)系統(tǒng),具有跨平臺可移植性、開源代碼庫的可用性、服務(wù)端的大容量調(diào)度基數(shù)且符合大多數(shù)W3C標(biāo)準(zhǔn)。

(1)高效的開發(fā)率。企業(yè)通過使用J2EE架構(gòu),不必過問服務(wù)端任務(wù),可完全交由中間件供應(yīng)商完成,系統(tǒng)開發(fā)人員重點創(chuàng)建商業(yè)邏輯,這樣可以減少系統(tǒng)的開發(fā)時間,提高系統(tǒng)的開發(fā)效率。

(2)良好的可伸縮性。企業(yè)為了滿足在系統(tǒng)上進行商業(yè)活動的客戶,必須選擇有良好的可伸縮性的服務(wù)器端。因為各種操作系統(tǒng)都可以部署基于J2EE架構(gòu)的應(yīng)用程序,且J2EE供應(yīng)商提供了負(fù)載平衡策略,使得系統(tǒng)中的瓶頸消除了,服務(wù)器可以集成部署,因而應(yīng)用系統(tǒng)實現(xiàn)了良好的伸縮性,滿足了應(yīng)用程序在未來商業(yè)應(yīng)用中的需求。

(3)支持異構(gòu)環(huán)境。應(yīng)用J2EE體系結(jié)構(gòu)使得在異構(gòu)環(huán)境中的可移植程序可以被開發(fā)部署?;贘2EE的程序被合理的設(shè)計出后,即可只需要開發(fā)一次便部署到各種平臺。J2EE也提供現(xiàn)成的可兼容J2EE的第三方組件給客戶,為了節(jié)省制定整個方案的費用,可將J2EE部署到異構(gòu)環(huán)境中。

1.3 J2EE的缺點及解決方案

J2EE體系結(jié)構(gòu)提供了基于組件的多層應(yīng)用體系結(jié)構(gòu),在簡化了系統(tǒng)的開發(fā)、配置和維護的同時,也存在著一定的缺陷。在J2EE平臺中,EJB是企業(yè)級開發(fā)中經(jīng)常使用的一個重要組件,它提供了持久化、事務(wù)管理、分布計算、聲明式事務(wù)支持等,較大程度的簡化了開發(fā)過程??墒牵珽JB所帶來的簡化只是相對的,EJB存在如下缺點:

(1)EJB作為J2EE的標(biāo)準(zhǔn)業(yè)務(wù)組件,需要運行在EJB容器中,EJB與EJB容器的緊耦合使其可移植性、可測試性都很差。EJB容器提供所有企業(yè)級服務(wù),啟動慢,部署復(fù)雜,性能較差。

(2)由于J2EE需要使用EJB組件,必須要用到高端的應(yīng)用服務(wù)器,這就比Servlet更加難以管理。同時,在客戶端層需要服務(wù)定位器和業(yè)務(wù)代表。

(3)在EJB容器之前、會話接口之后,需要運行一些難以管理細(xì)粒度對象。為了管理這些細(xì)粒度對象,需要額外的基礎(chǔ)架構(gòu)。

(4)EJB容器中一旦放進了業(yè)務(wù)邏輯,就很難停下來。如果有一些業(yè)務(wù)對象需要完成的任務(wù)是EJB編程模型所禁止的(比如讀取文件、開啟網(wǎng)絡(luò)連接、創(chuàng)建線程等),那就會出現(xiàn)問題。

大量實踐證明,傳統(tǒng)的J2EE架構(gòu)常常是無法令人滿意的,應(yīng)用程序過于復(fù)雜,測試?yán)щy,維護成本較高。

為解決J2EE所存在的上述缺陷,本文通過應(yīng)用Struts、Spring、Hibernate等輕量級、使用靈活的框架的整合來替代傳統(tǒng)的EJB框架,這種整合后的框架為輕量級J2EE。

2 輕量級J2EE中的三個框架

相對于傳統(tǒng)意義上的J2EE體系結(jié)構(gòu),輕量級J2EE架構(gòu)在應(yīng)用系統(tǒng)開發(fā)過程中簡化了編碼過程,且提供了更敏捷的響應(yīng),降低了復(fù)雜性,減少了規(guī)則。系統(tǒng)的開發(fā)、部署時間被縮短。

2.1 Struts框架簡介

Struts用于建立基于Java的框架和web應(yīng)用程序的開放源碼,它是Apache Jakarta項目的組成部分。Struts擁有自己的控制器,整合了其它的一些技術(shù)去實現(xiàn)模型層、視圖層和控制器層。在所有的MVC框架中,Struts框架被廣泛使用。其具體實現(xiàn)如圖1所示。

客戶瀏覽器ActionServletActionStruts-config.xml模型JSP頁面HTTP請求HTTP響應(yīng)直接轉(zhuǎn)發(fā)顯示調(diào)用模型轉(zhuǎn)發(fā)請求。

在上圖中有兩個類,一是Struts的核心控制器ActionServlet,用來獲取用戶的請求;二是用戶提供的Action,控制器接收來自ActionServlet的請求后,根據(jù)請求調(diào)用模型的業(yè)務(wù)邏輯方法來處理這些請求,最后把結(jié)果返回到JSP頁面。

2.2 Spring框架簡介

Spring是面向切面(AOP)的容器框架,是一個輕量級的控制反轉(zhuǎn)(IoC),它由Rod Johnson開發(fā)。

Spring處在應(yīng)用的業(yè)務(wù)邏輯層,該層又是整體架構(gòu)里最核心的,位于表現(xiàn)層和數(shù)據(jù)持久層之間,調(diào)用數(shù)據(jù)持久層中的數(shù)據(jù)返回給客戶所在的表現(xiàn)層。

相比較于EJB,開發(fā)應(yīng)用程序的一種輕量級的解決方案由Spring提供,具有多種優(yōu)點,比如:支持ORM、代碼少、分層清楚、速度快等。

2.3 Hibernate框架簡介

Hibernate是Java應(yīng)用程序的ORM(對象/關(guān)系映射)持久層框架,在JDBC的基礎(chǔ)上進行了簡單的封裝以實現(xiàn)對象關(guān)系映射。應(yīng)用程序?qū)ο笥蒆ibernate在數(shù)據(jù)庫中存儲。使用Hibernate使開發(fā)者不必編寫大量的代碼來存儲和檢索對象。

由于關(guān)系型數(shù)據(jù)庫和面向?qū)ο缶幊陶Z言之間會出現(xiàn)一些不協(xié)調(diào)的問題,為解決這些問題必須設(shè)定一種規(guī)范,ORM便作為一種解決問題的規(guī)范孕育而生。ORM工具所解決的問題就是對象與數(shù)據(jù)庫表格之間的數(shù)據(jù)轉(zhuǎn)換。

3 Struts、Spring、Hibernate的整合

一般而言,表現(xiàn)層、業(yè)務(wù)邏輯層、持久層組成了應(yīng)用系統(tǒng)的框架,每個層次分別對應(yīng)一個框架,表現(xiàn)層對應(yīng)Struts框架,業(yè)務(wù)邏輯層對應(yīng)Spring框架,持久層對應(yīng)Hibernate框架,各層以松耦合的方式相互作用,而彼此之間又相互獨立。應(yīng)用系統(tǒng)采用框架整合進行開發(fā),提高了系統(tǒng)靈活性及可維護性,同時系統(tǒng)的耦合度也得以降低。

3.1 Struts與Spring整合的實現(xiàn)

目前針對Struts與Spring框架的整合方式有三種:

(1)利用Spring的ActionSupport類整合Struts。將Spring框架與Struts動作耦合在一起,使用這種整合方式,一旦用其它框架替換Sping框架,則代碼需要重新編寫。同時,因為Spring無法控制Struts動作,致使Spring AOP的優(yōu)勢無法體現(xiàn)。

(2)使Struts的RequestProcessor被Spring的DelegatingRequestProcessor覆蓋。這種方式的優(yōu)點是較為簡便,但是如果應(yīng)用系統(tǒng)已經(jīng)擴展了RequestProcessor,DelegatingRequestProcessor就需要手動整合,如此便增加了代碼量,會造成維護的困難,應(yīng)用程序的靈活性也會因此而降低。

(3)Struts Action委托給Spring框架,這是一種全權(quán)委托方式,就是將Struts的創(chuàng)建工作全部交付給Spring來進行。使用Spring的DelegatingActionProxy來實現(xiàn)工作。Org.springframework.web.struts.DelegatingActionProxy繼承于org.apache.struts.action.Action,Spring支持的工作由模式來完成。Struts的Action由DelegatingAetionproxy配置成,所有的請求先被Actionservlet截取,再被轉(zhuǎn)發(fā)到對應(yīng)的Action,Action的實現(xiàn)類全都是DelegtingActionproxy。DelegatingAetionproxy再將請求轉(zhuǎn)發(fā)給Spring容器的bean。

3.2 Spring與Hibernate整合的實現(xiàn)

Spring整合Hibernate主要是對Hibernate的Session進行管理,為了方便處理典型的Hibernate的整合問題,Spring提供了很多的Ioc的特性的支持。

SessionFactory的管理由Spring通過ApplicationContext來完成,當(dāng)應(yīng)用程序自動加載時,SessionFactory處于ApplicationContext管理的任意一個bean引用中,因為SessionFactory是Session的工廠,所以Hibernate的數(shù)據(jù)庫訪問是在Session的管理下進行。SessionFactory與數(shù)據(jù)庫的連接同樣由Spring配置,無須使用單獨Hibernate應(yīng)用所必需的hibernate.cfg.xml文件。由于應(yīng)用了Spring框架,使得對Hibernate的操作簡化了。

4 總結(jié)

本文致力于研究分析整合Struts,Spring和Hibernate三個框架。對于眾多的應(yīng)用系統(tǒng)開發(fā)者而言,如何根據(jù)系統(tǒng)開發(fā)的實際情況,在實際的開發(fā)過程中,有針對性的采用這三個框架進行整合,是一個需要不斷思考的問題??蚣艿恼喜⒎侨f能的,使用整合的方式同樣存在一定的缺陷,如何在實際應(yīng)用中,突出框架整合的優(yōu)勢,避免存在的缺點,也是開發(fā)者們在將來需要重點研究的課題。使用三種框架的整合,主要是為了對應(yīng)用系統(tǒng)的進行優(yōu)化,降低應(yīng)用程序開發(fā)成本,提高開發(fā)效率,獲得更好的可擴展性和可維護性。

參考文獻(xiàn):

[1]王曉楠.MVC的設(shè)計和實現(xiàn)[J].計算機系統(tǒng)應(yīng)用,2004,30(3):41-45.

[2]孫衛(wèi)琴.精通Struts:基于MVC 的Java Web 設(shè)計與開發(fā)[M].北京:電子工業(yè)出版社,2004.

[3]孫衛(wèi)琴.精通Hibernate:Java 對象持久化技術(shù)詳解[M].北京:電子工業(yè)出版社,2005.

[4]古全友,王恩波,晉昌勝.AOP技術(shù)在J2EE系統(tǒng)構(gòu)建中的應(yīng)用[J].計算機技術(shù)與發(fā)展,2006,16(4):150-152.

[5]李剛.整合Struts+ Hibernate+ Spring應(yīng)用開發(fā)詳解[M].北京:清華大學(xué)出版社,2007.

[6]陳天河.Struts,Hibernate,Spring集成開發(fā)寶典[M].北京:電子工業(yè)出版社,2007.

[7]趙強.基于Struts框架的研究生管理系統(tǒng)[J].電腦開發(fā)與應(yīng)用,2009.

第6篇:spring框架范文

【關(guān)鍵詞]J2EE;Struts;Hibernate;Spring

中圖分類號:TP39 文獻(xiàn)標(biāo)識碼:A 文章編號:1006-0278(2013)05-162-01

一、引言

隨著中國通信業(yè)的發(fā)展,尤其是面對通信3G時代。中國移動的電子設(shè)備和技術(shù)越來越成熟與先進??墒窃趯﹄娮釉O(shè)備的管理方面卻有著不足,從而導(dǎo)致了資源的過多浪費以及信息的混亂。因此對于電子設(shè)備的管理已經(jīng)越來越成為通信業(yè)公司其重要組成部分,通過對電子設(shè)備的合理管理,將資源利用最大化,加強公司運行效率,將會在未來成為決定公司走向的重要因素。文章主要論述如何實現(xiàn)對電子運行設(shè)備的辦公化管理,達(dá)到系統(tǒng)性、統(tǒng)一性、安全性。

二、系統(tǒng)設(shè)計

(一)總體設(shè)計

本系統(tǒng)采用基于B/S網(wǎng)絡(luò)結(jié)構(gòu)體系來開發(fā)系統(tǒng),基于J2EE平臺進行開發(fā),前臺頁面使用jsp語言,并選用經(jīng)典的三層架構(gòu)——MVC模型框架Struts作為開發(fā)架構(gòu),在數(shù)據(jù)持久層方面則使用了Hibernate框架,并加入Spring框架對系統(tǒng)開發(fā)進行統(tǒng)一詳細(xì)管理,數(shù)據(jù)庫采用MYSQL。

系統(tǒng)主要由部門管理、機房管理、員工管理、權(quán)限管理等四模塊組成。另在此之外還擁有日志管理和字典管理兩個模塊。每一用戶登錄時,首先查找自身的數(shù)據(jù)庫,并查詢其所擁有的權(quán)限。限制其進行非其權(quán)限操作,并通過日志記錄其操作,使信息管理詳細(xì)和準(zhǔn)確。

(二)系統(tǒng)主要實現(xiàn)的功能

本系統(tǒng)主要是對部門、機房進行管理,通過對員工權(quán)限的控制使所屬不同部門的員工對不同設(shè)備進行管理,同時通過對機房的監(jiān)控,能及時的知道機房的狀況。當(dāng)出現(xiàn)問題時也能通過日志和字典迅速的查詢到所負(fù)責(zé)員工。具體實現(xiàn)目標(biāo)如下:

*實現(xiàn)對部門信息進行全面管理的功能。

*實現(xiàn)對機房信息進行全面管理的功能。

*實現(xiàn)對員工信息進行全面管理的功能。

*實現(xiàn)對員工角色的全面管理的功能。

*實現(xiàn)對員工在機房管理時的信息進行全面管理的功能。

*系統(tǒng)最大限度地實現(xiàn)了易安裝l生、易維護性和易操作性。

*系統(tǒng)運行穩(wěn)定、安全可靠。

三、數(shù)據(jù)庫設(shè)計

本系統(tǒng)中采用MYSQL數(shù)據(jù)庫來保持?jǐn)?shù)據(jù)信息,使用Hi-bemate框架來進行數(shù)據(jù)庫操作。首先設(shè)計一個名為China-mobile的數(shù)據(jù)庫來保持?jǐn)?shù)據(jù),并建立如下信息表:

表dept(部門信息表):用來保存部門詳細(xì)信息

表person(員工信息表):用來保存人員詳細(xì)信息

表room(機房信息表):用來保存機房詳細(xì)信息

表module(模塊信息表):用來保存人員權(quán)限所屬模塊詳細(xì)信息

表operate(操作信息表):用來保存人員對系統(tǒng)操作詳細(xì)信息

表log(日志信息表):用來保存日志詳細(xì)信息

表dictype(字典類型信息表):用來保存字典類型詳細(xì)信息

表dic(字典信息表):用來保存字典詳細(xì)信息

表role(權(quán)限信息表):用來保存權(quán)限詳細(xì)信息

四、關(guān)鍵技術(shù)

(一)J2EE平臺概述

J2EE是一種利用Java平臺來簡化諸多與企業(yè)解決方案的開發(fā)、部署和關(guān)系相關(guān)的復(fù)雜問題的體系結(jié)構(gòu)。J2EE技術(shù)的基礎(chǔ)是Java平臺的標(biāo)準(zhǔn)版,J2EE不僅繼承了標(biāo)準(zhǔn)版中的許多優(yōu)點,如方便存儲數(shù)據(jù)庫的JDBC(Java數(shù)據(jù)庫連接)技術(shù),同時還提供了對EJB(企業(yè)JavaBean)、JMS(異步消息傳輸)、XML(可擴展標(biāo)記語言)等技術(shù)的支持。

(二)輕量級Web框架

由于J2EE平臺提供的EJB等技術(shù)所占資源多、技術(shù)難以掌握、內(nèi)部復(fù)雜性大的問題,往往在做J2EE軟件開發(fā)時候,會在J2EE平臺的基礎(chǔ)上加入類似于Spring這樣輕量級框架來降低開發(fā)和維護的難度。其中成熟的Struts框架是前端開發(fā)領(lǐng)域的利器,Hibernate則是O/RMapping領(lǐng)域事實上的標(biāo)準(zhǔn),尤其是它對EJB3.0的巨大貢獻(xiàn),而Spring則使開發(fā)者和具體的J2EE平臺處于“松偶合”的狀態(tài),可以把Spring看作是各種Web框架的粘合劑。所以Struts+Spring+Hibemate一起構(gòu)成了輕量級Web框架。其中Struts為表示層,Spring為業(yè)務(wù)邏輯層,Hibernate為持久化層。

(三)運用Spring托管Struts和Hibemate

在Spring的托管下,Struts和Hibernate可以利用Spring的特性(IOC);另外Spring對Struts和Hibemate的APR進行了進一步的封裝,使得開發(fā)更加簡單。

1.Spring和Struts的整合

Spring整合Struts有三種方法。方法1:Action繼承org.springframework.

web.struts.AdionSuppo~,這種技術(shù)很簡單并且易于理解。但不幸的是它將Struts動作與Spring框架耦合在一起。方法2:使用org.springffamework,web.struts.

DelegatingRequestProcessor類來覆蓋Struts的Reques-tProcessor處理程序。此方法的確比第一種方法好,但是依然存在一些問題。如果要使用一個不同的RequestProcessor,則需要手動整合Spring的DelegatingRequestProcessor。添加代碼會造成維護的麻煩將來會降低應(yīng)用程序的靈活性。方法3:將Struts動作管理委托給Spring??梢酝ㄟ^在Struts-con-fig.mxl動作映射中注冊一個來實現(xiàn)。負(fù)責(zé)在Spring環(huán)境中查找Struts動作。由于動作在Spnng的控制之下,所以它可以填充動作的JavaBean屬性,并為應(yīng)用諸如AOP攔截器之類的特性帶來了可能。在此我們采用第三種方式。

2.Spring和Hibernate的整合

為使開發(fā)者能夠以統(tǒng)一的方式同數(shù)據(jù)庫訪問技術(shù)(如:JDBC、Hibernate等)進行交互,可以使用Spring框架提供的DAO抽象。Spring DAO抽象允許開發(fā)者在不同數(shù)據(jù)庫訪問技術(shù)之間進行切換。Spring框架依據(jù)資源管理、DAO實現(xiàn)支持、食物策略,對O/R Mapping進行了集成。

整合的關(guān)鍵在于不直接使用Hibernate API,而是讓Spring管理Hibernate。首先定義實體類繼承于HibernateDa-oSupport,在此類中通過getHibemateTemplatO獲取Hibernate資源的操作。借助于HibernateTemplate我們可以脫離每次數(shù)據(jù)操作首先獲取Session實例、啟動事務(wù)、提交/回滾事務(wù)以及煩瑣的try/catch/finally等操作。

第7篇:spring框架范文

關(guān)鍵詞:Spring;AOP;Java;框架

中圖分類號:TP312文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2007)03-10753-01

1 引言

AOP(Aspected Oriented Programming)是一種新興的編程技術(shù),它可以解決OOP和過程化方法不能很好解決的橫切(cross-cutting)關(guān)注點問題,如:事務(wù)、安全、日志等。AOP既可以用于分析設(shè)計階段,也可以用于編碼實現(xiàn)階段,真正實現(xiàn)功能模塊的分離,避免代碼纏繞。Spring是基于J2EE的輕量級開源開發(fā)框架,其中Spring AOP是整個Spring框架的核心組件。

2 Spring AOP 介紹

OOP將應(yīng)用程序分解成各個層次的對象,而AOP將橫切程序的各種關(guān)注點分離出來,簡化了大型軟件的設(shè)計 。方面(Aspect)是用Spring的 Advisor或攔截器實現(xiàn)的。Spring IoC容器(BeanFactory 和ApplicationContext)并不強制依賴于AOP,如果不需要,可以不用AOP。但使用AOP,可以提供更強的模塊性、可擴展性。

Spring AOP是由純Java開發(fā)的,它實現(xiàn)了AOP聯(lián)盟的接口。不同于AspectJ的實現(xiàn),Spring AOP 只實現(xiàn)了方法級別的連接點,已經(jīng)足夠滿足J2EE應(yīng)用。OOP倡導(dǎo)的是基于setter/getter 的方法訪問,而非直接訪問域。為了使控制反轉(zhuǎn)(IoC)很方便的使用企業(yè)級服務(wù),則需要Spring AOP 的實現(xiàn)。Spring AOP 在運行時才創(chuàng)建Advice 對象。

3 Spring AOP 面向方面編程

3.1 創(chuàng)建Advice

AOP 通知包含了方面的邏輯。創(chuàng)建一個Advice 對象,就是在編寫實現(xiàn)橫切的功能。連接點是用方法攔截器實現(xiàn)的,這意味著你編寫的通知將在方法調(diào)用的不同點織入程序中。由于在調(diào)用一個方法時有幾個不同的時間點,Spring 可以在不同的時間點將方面織入程序。Spring AOP提供了四種Advice接口:MethodBeforeAdvice 用于在目標(biāo)方法調(diào)用前觸發(fā);AfterReturningAdvice 用于在目標(biāo)方法調(diào)用后觸發(fā);ThrowsAdvice 用于在目標(biāo)方法拋出異常時觸發(fā);MethodInterceptor 用于在目標(biāo)方法執(zhí)行時觸發(fā)。如果要實現(xiàn)相應(yīng)功能,則需要實現(xiàn)上述對應(yīng)的接口。例如:實現(xiàn)Before Advice,需要實現(xiàn)方法 void before(Method method, Object[] args, Object target)。

3.2 在 Spring 中定義 Pointcut

切入點可以決定特定的類、特定的方法是否匹配特定的標(biāo)準(zhǔn)。如果匹配成功,則通知將應(yīng)用到此方法上。Spring 切入點用很靈活的方式將通知組織進類中。Spring 中的切入點框架的核心是Pointcut接口,此接口允許定義織入通知中的類和方法。許多方面是通過一系列的通知和切入點組合來定義的。

在Spring中,一個advisor就是一個方面的完整的模塊化表示。Spring提供了PointcutAdvisor接口,把通知和切入點組合成一個對象,可以方便的在一個地方管理切入點和通知。切入點分為兩類:靜態(tài)和動態(tài)。靜態(tài)切入點的性能要優(yōu)于動態(tài)切入點,所以應(yīng)優(yōu)先考慮使用。對Spring內(nèi)建的靜態(tài)切入點類:StaticMethodMatherPointcut,只需要關(guān)心setMappedName和setMappedNames方法??梢允褂镁唧w的類名,也可以使用通配符。如:設(shè)置mappedName屬性為set* ,則匹配所有以set為前綴的方法。Spring還提供了靜態(tài)類:RegexpMethodPointcut,通過使用正則表達(dá)式來定義你感興趣的方法。

當(dāng)切入點需要運行時參數(shù)來執(zhí)行通知時,需要使用動態(tài)切入點。Spring內(nèi)建的動態(tài)切入點類是ControlFlowPointcut,此切入點匹配基于當(dāng)前線程的調(diào)用堆棧,在當(dāng)前線程執(zhí)行時找到特定的類和特定的方法時才返回true。大多數(shù)的切入點可以靜態(tài)確定,使用動態(tài)切入點有很大的性能損耗。為了增加切入點的可重用性,Spring 提供了切入點上的集合操作――交集和合并。

3.3 用ProxyFactoryBean創(chuàng)建AOP

如果定義一個名字為myfactory的ProxyFactoryBean,引用myfactory的對象所看到的不是ProxyFactoryBean實例本身,而是由實現(xiàn)ProxyFactoryBean的類的 getObject()方法所創(chuàng)建的對象。這個方法將創(chuàng)建一個包裝了目標(biāo)對象 的AOP(Spring倡導(dǎo)基于接口編程)。使用ProxyFactoryBean或者其他IoC可知的類來創(chuàng)建AOP的最重要的優(yōu)點之一,是IoC可以管理通知和切入點。這是一個非常的強大的功能,能夠?qū)崿F(xiàn)其他AOP框架很難實現(xiàn)的特定的方法。例如,一個通知本身可以引用應(yīng)用對象(除了目標(biāo)對象, 它在任何AOP框架中都可以引用應(yīng)用對象),這完全得益于依賴注入所提供的可插入性。通常,不需要ProxyFactoryBean的全部功能,因為我們常常只對一個方面感興趣: 例如,事務(wù)管理。僅當(dāng)對一個特定的方面感興趣時,可以工廠來創(chuàng)建AOP,如:TransactionProxyFactoryBean。

3.4 自動

只有很少類需要被通知時,ProxyFactoryBean 可以很好的工作。當(dāng)有許多類需要通知時,顯式地創(chuàng)建每個就顯得很繁瑣,Spring提供了自動通過容器來創(chuàng)建的功能。Spring提供了兩個類實現(xiàn)自動:BeanNameAutoProxyCreator和DefaultAdvisorAutoProxyCreator。

BeanNameAutoProxyCreator為匹配名字的Bean產(chǎn)生,它可以使用在將一個或者多個方面應(yīng)用在命名相似的Bean中。自動框架判定將要暴露什么接口,如果目標(biāo)Bean沒有實現(xiàn)任何接口,就會動態(tài)產(chǎn)生一個子類。而更強大的自動是:DefaultAdvisorAutoProxyCreator,你所需要做的是在BeanFactory中包含它的配置。Bean定義被加載到Spring容器中后,DefaultAdvisorAutoProxyCreator將搜索上下文中的Advisor,最后它將Advisor應(yīng)用到匹配Advisor切入點的Bean中。這個只對Advisor起作用,它需要通過Advisor來得到需要通知的Bean。

元數(shù)據(jù)自動(MetaData AutoProxy)的配置,依賴于源代碼屬性而不是外部XML配置文件。這可以非常方便的使源代碼和AOP元數(shù)據(jù)組織在同一個地方。元數(shù)據(jù)自動最常用的地方是用來聲明事務(wù)。Spring提供了通過AOP框架來聲明事務(wù),這與EJB使用聲明式事務(wù)的功能是相同的。

4 結(jié)束語

AOP使得大型、復(fù)雜軟件的分析設(shè)計和實現(xiàn)變得簡單,保持功能和代碼分離。AOP不會取代OOP,而是OOP的擴展。AOP技術(shù)并不復(fù)雜,經(jīng)過短時間的學(xué)習(xí)就可以掌握。AOP技術(shù)已經(jīng)引入C、C++、Java、C#等許多語言中。Spring 因為引入AOP,比EJB簡單、可靠、高效,不依賴于容器,更容易集成、測試和移植。

參考文獻(xiàn):

[1] Rod Johnson. Professional Java Development with the Spring Framework [M],Wiley Publishing,2005.

第8篇:spring框架范文

[關(guān)鍵詞] 企業(yè)信息化 輕量級框架 Struts Spring Hibernate J2EE

目前軟件系統(tǒng)發(fā)展已經(jīng)相當(dāng)復(fù)雜。大型企業(yè)信息系統(tǒng)的設(shè)計者越來越注重通過一個合適的框架完成系統(tǒng)開發(fā)?;贘2EE企業(yè)信息系統(tǒng)的平臺無關(guān)性、層次性、安全性與可擴展性正成為企業(yè)信息化的主要解決方案。因此本文通過集成Struts、Spring和Hibernate來實現(xiàn)模塊間的解耦,以提高企業(yè)信息系統(tǒng)的擴展性、復(fù)用性和可維護性。

一、J2EE框架技術(shù)

Struts起源于SmallTalk的MVC。即Model、View和Controller。由Controller解耦顯示邏輯與業(yè)務(wù)邏輯,支持實現(xiàn)松耦合結(jié)構(gòu)。面對WebWork、Spring MVC、JSF、Tapestry等,Struts設(shè)計成熟、信息資源豐富、開發(fā)群體廣泛,是目前最常用的表現(xiàn)層MVC。

Spring是一種為解決企業(yè)應(yīng)用程序開發(fā)復(fù)雜性的輕量級應(yīng)用程序框架和容器。集成了J2EE許多最佳與前驅(qū)性實踐。具有傳統(tǒng)EJB的關(guān)鍵服務(wù)而不依賴于任何組件替代重量級EJB框架。擴展了所集成的組件并提供更高級功能。Spring完成了實際開發(fā)所需的單態(tài)模式與工廠模式。核心機制是DI(Dependency Injection)與IOC(Inversion of Control)。通過DAO和ORM 實現(xiàn)數(shù)據(jù)訪問的抽象模塊,并支持Hibernate。

Hibernate是低侵入ORM(Object-Relationship Mapping)框架。聯(lián)接了面向?qū)ο蟪绦蛟O(shè)計語言和關(guān)系型數(shù)據(jù)庫。實現(xiàn)了對JDBC的輕量級封裝。通過J2EE中的JDBC、JTA、JNDI實現(xiàn)Session、Transaction和數(shù)據(jù)庫連接管理。由HQL以面向?qū)ο蠓绞讲樵兂志没瘜ο?。ORM框架還包括OJB、TopLink等。OJB是Apache的子項目,開發(fā)文檔不多,規(guī)范一直不很穩(wěn)定,并未得到廣泛支持。TopLink一旦作為商業(yè)產(chǎn)品使用則要收取費用。

二、框架的整合與實踐

對于一個企業(yè)信息系統(tǒng)來說,考慮到雖然系統(tǒng)中各模塊實現(xiàn)不同,但原理大同小異。因此,本文以開發(fā)的信息子系統(tǒng)為例集成Struts、Hibernate和Spring,并說明系統(tǒng)各層實現(xiàn)。系統(tǒng)架構(gòu)處理流程如圖所示。表現(xiàn)層通過控制器與業(yè)務(wù)邏輯層交互,業(yè)務(wù)邏輯層同時處理業(yè)務(wù)規(guī)則與數(shù)據(jù)訪問,再與數(shù)據(jù)持久層交互。

圖 系統(tǒng)的架構(gòu)處理流程

1.Domain Object

根據(jù)系統(tǒng)需求從應(yīng)用中抽取實體。子系統(tǒng)模型實體類包括:(1)Publisher:者信息。(2)Information:包括標(biāo)題、內(nèi)容、時間、圖片路徑、新聞審核與推薦等。(3)Category:信息分類。(4)View:信息說明或補充評論。用POJO(Plain Old Java Object)作為PO。以Information為例,其中包含Publisher、Category和View類對象。

<class name="informationpub.model.Information" table="information">

<id name=" informationId " column="informationId" type="Integer">//映射標(biāo)識

<generator class="increment"/></id>

<property name="informationTitle" column="informationTitle" length="30" type="string" not-null="true"></property>

......

<many-to-one name="category"class="informationpub.model.Category"column= "categoryId" not-null="true"/>

......

2.數(shù)據(jù)持久層

數(shù)據(jù)持久層采用DAO(Data Access Object)設(shè)計模式。對底層數(shù)據(jù)庫提供CRUD操作,對上層業(yè)務(wù)邏輯提供DAO接口。DAO實現(xiàn)包括三個部分:(1)在DAO接口中聲明CRUD等方法。(2)實現(xiàn)DAO接口并擴展支持類。(3)產(chǎn)生DAO實例,實現(xiàn)業(yè)務(wù)邏輯與持久層的解耦。然后獲得DAO 工廠實例,產(chǎn)生DAO組件。通過擴展HibernateDaoSupport和對應(yīng)DAO接口完成Hibernate實現(xiàn)。傳入sessionFactory引用到由HibernateDaoSupport提供的方法中,返回HibernateTemplate實例完成數(shù)據(jù)庫操作。以Information為例的DAO接口實現(xiàn)類如下:

public class InformationDAOHibernate implements InformationDAO{

public void saveInformation (Information information) {

getHibernateTemplate().saveOrUpdate(information); //保存一條信息

……}}

Spring作為DAO工廠。

<beanid="sessionFactory"class="org.springframework.orm.hibernat3.LocalSessionFactoryBean">……//列出并加載PO映射文件

<beanid="informationDAO"class="informationpub.dao.InformationDAOHibernate">

// sessionFactory的依賴注入

<property name="sessionFactory" ref="sessionFactory"/></bean>

可見當(dāng)數(shù)據(jù)庫結(jié)構(gòu)改變時,僅影響DAO而并不會涉及業(yè)務(wù)邏輯層。業(yè)務(wù)邏輯只要專注其自身的實現(xiàn),而不需要關(guān)注底層數(shù)據(jù)庫訪問,實現(xiàn)了業(yè)務(wù)邏輯與特定數(shù)據(jù)庫訪問的解耦。

3.業(yè)務(wù)邏輯層

業(yè)務(wù)邏輯層完全依賴DAO組件,只需調(diào)用DAO接口。用Facade封裝多個DAO組件。依賴由Facade提供的一個高層接口。業(yè)務(wù)邏輯對外提供InforPubFacade接口,表示層只要面向該接口編程,實現(xiàn)了業(yè)務(wù)層與表示層的解耦。由InforPubFacadeImp擴展InforPubFacade接口實現(xiàn)。InforPubFacadeImp類中將各DAO作為成員屬性。

public class InforPubFacadeImp implements InforPubFacade{

private InformationDAO informationDAO;

……//各類的DAO作為成員屬性

public void setInformationDAO(InformationDAO informationDAO) {

this. informationDAO = informationDAO;}

public void saveInformation (Information information) {

InformationDAO.saveInformation (information);

}……

}

4.表示層

表示層包括ActionForm和ActionServlet。ActionForm在視圖和ActionServlet之間傳遞數(shù)據(jù)。由ActionForm 的validate()完成數(shù)據(jù)驗證。ActionServlet再根據(jù)接響應(yīng)完成到Action的轉(zhuǎn)發(fā)。再由Action的execute()獲取信息完成業(yè)務(wù)邏輯驗證并決定調(diào)用的業(yè)務(wù)邏輯。在Struts中完成Spring容器的加載。不再將ActionServlet攔截的請求轉(zhuǎn)發(fā)到struts-config.xml中的Action,而是轉(zhuǎn)發(fā)到由Spring容器管理的Action。并由Spring的IOC管理Action。通過DelegatingRequestProcessor擴展Struts的子請求處理器RequestProcessor,將請求轉(zhuǎn)發(fā)到action-servlet.xml。

<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>

<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">

<set-property property="contextConfigLocation"value="/WEB-INF/applicationContext.xml,/WEB-INF/action-servlet.xml"/></plug-in><beans>

<bean name="/viewInformation"class="informationpub.web.ViewInformationAction" >//對應(yīng)struts-config.xml中viewInformation 的Action

<property name="viewInformation">// 為Acion依賴注入

<ref bean=" InforPubFacade "/></property> </bean>

……//其他Action及相應(yīng)依賴注入

</beans>

三、結(jié)束語

本文集成Struts、Hibernate和Spring。系統(tǒng)層次清晰,由Spring貫穿整個系統(tǒng),無縫整合表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)持久層。系統(tǒng)靈活性得到增強。業(yè)務(wù)邏輯只需實現(xiàn)一次,組件之間以接口方式耦合,實現(xiàn)了企業(yè)信息系統(tǒng)最大限度的解耦。開發(fā)的系統(tǒng)具有良好的伸縮性與可擴展性,從而提高企業(yè)運作效率與降低開發(fā)成本,具有一定的現(xiàn)實意義。

參考文獻(xiàn):

[1] James Goodwill. Jakarta struts[M]. O’REILLY Publishing, 2002.

[2] Ted Husted. Struts in Action: Building Web Applications with leading java framework[M]. Manning Publication Company, 2002.

[3] Matt Raible. Spring Live [M]. SourceBeat, 2004.

[4] Rod Johnson. Expert One on One J2EE Development without EJB[M]. Wiley Publishing,2004.

第9篇:spring框架范文

關(guān)鍵詞:框架 Struts Spring Hibernate

SSH是struts+spring+hibernate的集成框架,是當(dāng)前Web應(yīng)用程序開發(fā)采用比較多的一種開源框架技術(shù)。本文主要對SSH框架的技術(shù)優(yōu)勢及各組成部分的特點進行分析介紹。

一、SSH框架技術(shù)優(yōu)勢

SSH框架是基于傳統(tǒng)J2EE框架的新技術(shù),SSH框架繼承了J2EE的分層架構(gòu)模式,二者的不同之處僅在于層與層之間的實現(xiàn)方法。當(dāng)J2EE框架和SSH架構(gòu)完成相同的運算任務(wù)時,SSH框架消耗的系統(tǒng)資源最少。

SSH框架在業(yè)務(wù)對象的的平臺專用性上沒有特殊的限定要求,在SSH框架中業(yè)務(wù)邏輯的實現(xiàn)通過普通的Java對象即可完成。

SSH組合框架技術(shù)優(yōu)勢體現(xiàn)在四個方面:一、分離了Java代碼和HTML代碼,降低了對開發(fā)人員要求的復(fù)合度。二、是系統(tǒng)的層與層之間的工作相是對獨立的,代碼耦合度低。三、即使脫離了Spring環(huán)境的AOP機制,也不會妨礙AOP實現(xiàn)業(yè)務(wù)的功能。四、與SSH配合使用的Hibernate等夸平臺技術(shù)開源性極強,促使了SSH框架的飛速發(fā)展。

SSH的技術(shù)優(yōu)勢使得采用SSH框架技術(shù)開發(fā)的系統(tǒng)具備了很強的可拓展性、可移植性。同時,采用開源的SSH框架能夠大大簡化系統(tǒng)開發(fā)的復(fù)雜度,縮短系統(tǒng)開發(fā)時間。

二、Struts

Struts與SSH框架一樣同樣具有開源性,合理恰當(dāng)?shù)氖褂肧truts技術(shù)可以在一定程度上減少基于MVC模型的Web應(yīng)用系統(tǒng)的開發(fā)時間,從而有效控制系統(tǒng)開發(fā)成本。事實上,絕大多數(shù)程序員在在使用Servlets和JSP的可擴展的應(yīng)用時已經(jīng)將Struts框架技術(shù)作為系統(tǒng)開發(fā)的標(biāo)準(zhǔn)。

Struts技術(shù)基于MVC框架,Struts的實現(xiàn)依賴Servlet和JSP實現(xiàn)。EJB 和JavaBean兩個組件是Struts框架業(yè)務(wù)功能實現(xiàn)的基礎(chǔ)部件;Action和ActionServlet部件是框架實現(xiàn)控制功能的重要部件;視圖部分則是由若干存在內(nèi)在聯(lián)系的.JSP文件有機構(gòu)成,來實現(xiàn)系統(tǒng)功能。其工作原理如圖一所示:

1.使用者通過瀏覽器客戶端發(fā)送HTTP協(xié)議的數(shù)據(jù)請求。

2.HTTP請求到達(dá)服務(wù)器后,經(jīng)過控制器,使用框架結(jié)構(gòu)填充Form Bean。

3.經(jīng)過填充的數(shù)據(jù)請求通過框架中控制器的Action組件進行數(shù)據(jù)業(yè)務(wù)處理。

4.經(jīng)過控制器處理過的業(yè)務(wù)數(shù)據(jù)調(diào)用Struts的基礎(chǔ)部件實現(xiàn)業(yè)務(wù)邏輯。

5.將業(yè)務(wù)邏輯經(jīng)過轉(zhuǎn)換形成JSP業(yè)務(wù)進行處理,并將處理結(jié)果反或

6.用戶在客戶端或者瀏覽器上得到HTTP請求的響應(yīng)。

三、Spring

Spring在整個系統(tǒng)體系中提供兩種控架,一種是面向方面編程(AOP)容器框架,另外一種是輕量級的反向控制。

Spring的核心部分是輕量級控制反轉(zhuǎn)(Inversion of Control,IoC)容器。通過外部的配置文件翻過來調(diào)用應(yīng)用程序來替代原有應(yīng)用程序調(diào)用的控制功能是控制反轉(zhuǎn)的基本思想。

在框架中進行控制功能的創(chuàng)建工作就實現(xiàn)了輕量級控制反轉(zhuǎn),這樣就能使控制功能的編寫其從應(yīng)用程序的編寫中分離出來。在使用組件調(diào)用容器時,那么在框架中的控制功能創(chuàng)建中只需要給出調(diào)用組件所用到的對象。典型的輕量級控制反轉(zhuǎn)工作過程如下:首先創(chuàng)建程序中以后所用到的所有對象,并進行對象屬性設(shè)置,對相關(guān)的屬性和慣性進行連接配置,最后再確定調(diào)用的方法和時間點即可。

Spring架構(gòu)的反轉(zhuǎn)控制提供了應(yīng)用場景和復(fù)雜程度不同的兩種注入方式:構(gòu)造器注入和Setter依賴注入(Dependency Injection)兩種注入方式。Spring支持在實際開發(fā)中應(yīng)用的最為廣泛方法注入Setter(Setter Injection)方法,這種方法使用起來更加直觀、方便。

四、 Hibernate

在面向?qū)ο蟪绦蛟O(shè)計中,關(guān)系數(shù)據(jù)庫中的表間的關(guān)系與對象間關(guān)系的匹配沒有有效的轉(zhuǎn)換來完成匹配,Hibernate的出現(xiàn)可以很好地完成二者之間的關(guān)系匹配問題。

Hibernate可以將對象間關(guān)系按照一定的邏輯與數(shù)據(jù)庫中表之間的關(guān)系進行高耦合度的匹配,這種轉(zhuǎn)換由Hibernate自動進行[20]。使用Hibernate可以減少原來面向?qū)ο蟪绦蛟O(shè)計時大量的程序與數(shù)據(jù)庫之間SQL的轉(zhuǎn)換,有效提高開發(fā)效率。

Hibernate是Java平臺上高效的ORM映射框架。由于Hibernate使用了反射和運行時字節(jié)碼生成技術(shù),所以對于最終用戶而言,Hibernate幾乎是透明地運行。

Hibernate的執(zhí)行流程如圖二所示:

1. 通過實例化Configuration對象,解析文件,建立對象與數(shù)據(jù)庫之間的映射關(guān)系。

2. 通過創(chuàng)建Session工廠,運用session變量,對數(shù)據(jù)庫進行操作。

3. 通過創(chuàng)建事務(wù)Transation,對對象進行持久化操作。

4. 提交事務(wù),關(guān)閉打開的會話,結(jié)束操作。

縱觀整個開發(fā)過程,Hibernate承接應(yīng)用程序和基礎(chǔ)數(shù)據(jù)庫,通過Hibernate,應(yīng)用程序能夠方便地將對象注入到數(shù)據(jù)庫中。由執(zhí)行流程可以看出,Hibernate通過配置文件及利用數(shù)據(jù)庫作為支撐持續(xù)不斷地向應(yīng)用程序提供服務(wù)。換個意思來講,是通過配置文件把普通Java對象直接映射到關(guān)系數(shù)據(jù)庫中,并直接作為關(guān)系數(shù)據(jù)庫的表存儲起來。

SSH是開源的框架技術(shù),它可以部署在AP ACH E等便宜的服務(wù)器上,可以脫離大型服務(wù)器的約束,從而節(jié)省成本開支。另外,SSH作為一款輕量級的框架,還能夠與異步JavaScript和XML框架同時使用,能夠較大程度上降低系統(tǒng)開銷,還能夠較大幅度改善用戶的體,從而大大提高系統(tǒng)的性能。

參考文獻(xiàn):

[1]梁立新.項目實踐――基于Struts Spring Hibernate的Java應(yīng)用開發(fā)[M]. 電子工業(yè)出版社, 2006: 23~24

[2]陳天河. Struts Hibernate Spring集成開發(fā)寶典[M]. 電子工業(yè)出版社, 2007: 56~58

[3]穆福森,吳觀茂. 基于Struts+Spring+Hibe

rnate Web應(yīng)用開發(fā)框架技術(shù)[J].電腦知識與技術(shù), 2006(2): 81~82

[4]羅時飛. 精通Spring2.0[M]. 電子工業(yè)出版社, 2007: 50~57

精選范文推薦