摘要:目前,基于S2SH框架構建Java Web應用系統,具有廣闊的發展空間。S2SH框架以Spring為核心部件,向上集成Struts2,向下集成Hibernate,充分發揮了各自的優勢特點,具有良好的擴展性和復用性。
關鍵詞:Struts2 Hibernate Spring Java EE
中圖分類號:TN122文獻標識碼:A 文章編號:1672-3791(2011)04(a)-0000-00
隨著信息化和網絡化的飛速發展,越來越多的企業使用基于Java EE框架平臺來進行WEB應用系統的研發。傳統的Java EE框架(EJB+JSP+Servlet)由于自身缺陷在很大程度上限制了WEB應用系統的研發效率。而良好的輕量級Java EE框架不僅保留了傳統框架良好的可擴展性、可維護性、健壯性、安全性等特點,還具有靈活簡單、部署成本低、各層無縫集成等優點。隨著多年的發展和改進,S2SH框架已經成為大多數Web應用系統研發的首選,它能更加合理有效地實現應用系統的高內聚和低耦合。
1 S2SH框架簡介
1.1 S2SH簡介
輕量級的Java EE框架一般都是完全開源的框架,根據功能將應用邏輯分為三層結構:表示層Struts2框架、業務邏輯層Spring框架以及數據持久層Hibernate框架,各層之間無縫鏈接并支持相應的業務組件,這就構成了當前主流的Java EE輕量級框架組合S2SH。
1.2 Struts2框架
Struts框架是Apache軟件基金會下的一個開源項目,作為基于MVC模型的Web框架,從2001年推出以來一直都得到了最廣泛的應用。但在使用過程中,Struts的缺陷也逐漸顯露出來。在這種情況下,Struts2在2007年上半年誕生了。Struts2整合了兩個優秀的MVC框架:傳統的Struts1.x和WebWork。但Struts2實際上是WebWork2.2的升級版,因為它使用的是WebWork的設計核心而不是Struts1.x的設計核心。該框架由核心控制器、業務邏輯控制器、攔截器、結果類型和視圖等核心組件組成。
1.3 Hibernate框架
Hibernate框架是目前最為流行的ORM框架,包含了對JDBC的輕量級對象封裝,同時也提供了數據查詢和恢復機制,相對于使用JDBC和SQL來手工操作數據庫,Hibernate可以大大減少操作數據庫的工作量。另外,Hibernate還可以利用代理模式來簡化載入類的過程,這將大大減少利用HQL從數據庫提取數據代碼的編寫量,從而節約研發時間和研發成本。
1.4 Spring框架
Spring框架以IoC和AOP兩種先進技術為基礎,完美地簡化了企業級研發的復雜度。該框架主要由AOP模塊、ORM映射模塊、Web模塊、DAO模塊、上下文模塊、Spring MVC框架、Spring核心模塊等七大模塊組成,每個模塊可以單獨使用也可以和其它模塊組合使用,靈活方便的部署使研發的程序更簡潔靈活。
2 S2SH框架整合
2.1 S2SH框架整合的原理
2.1.1S2SH的體系結構
在S2SH框架的體系結構中,Struts2框架一般主要用于表示層,直接面向用戶,響應用戶的請求,并向用戶提供其所需數據;Hibernate框架用于數據持久層,負責數據的持久化和ORM功能;Spring框架用于業務邏輯層,借助IoC容器和AOP實現,集中處理系統的企業級服務。通過集成,可充分發揮這三種框架的優勢,達到優勢互補的效果,進一步提高Web應用系統的重用性和擴展性。
2.1.2 Struts2與Spring的整合
整合Struts2與Spring框架之前,首先必須將Struts2的Spring插件復制到Web應用的WEB-INF目錄下即可,同時還必須讓Web應用啟動時立即完成Spring IoC容器的初始化工作。完成以上準備工作后,可充分利用Spring插件允許在Struts2的配置文件配置Action時,Class屬性無需指向Action的實際實現類,而是指向Spring IoC容器的BeanID,從而實現控制的轉移。即當Struts2將請求轉發給指定的Action時,該Action只是一個偽控制器,而隱藏在Spring IoC容器的Action實例才是處理用戶請求的真實控制器。
2.1.3 Spring與Hibernate的整合
首先將Hibernate的配置文件整合到Spring的配置文件中,并通過Spring的LocalSessionFactoryBean來獲得SessionFactory實例。然后將DAO的實現類UserInfoDaoImpl.class直接繼承Spring的HibernateDaoSupport,通過HibernateDaoSupport的相關方法獲得Spring的HibernateTemplate實例,從而以面向對象的方式進行數據庫的原子操作。
2.2 S2SH框架整合的優點
與傳統的Struts+Spring+Hibernate框架相比,S2SH的主要差別就在Struts框架上,傳統的Struts框架只支持單一的JSP,而Struts2框架支持多種表現層技術,因而具有更好的適應性。傳統的Struts框架與Servlet API嚴重耦合,它的Servlet API嚴重依賴于Web服務器,而Struts2框架沒有耦合任何的Servlet API,這使單元測試更為容易。傳統的Struts框架屬于侵入式設計,嚴重依賴于Struts API,代碼復用率低,而Struts2框架彌補了這些缺陷使得系統的可維護性大大提高。
3 結語
S2SH框架是目前Web應用系統所采用的主流研發技術,也是目前Java EE的發展方向。Struts2作為前臺控制框架規范了程序的研發,使項目的可擴展性大大增強,提升了研發效率,降低了維護成本。Spring作為一個優秀的輕量級框架,具有強大的靈活性,非常適合中間層平臺。Hibernate作為持久層上的ORM輕量級組件,對持久層進行了輕量級封裝,降低了程序的復雜度,減輕了研發的負擔。三個框架的組合將在軟件項目研發領域具有廣闊的發展空間。
參考文獻
[1]