楊國勛

摘 要 為提高Web應用系統開發的效率和質量,IT企業通常使用框架技術來進行Web應用的設計和開發。本文對目前通用的基于Java技術的SSH三大框架的技術和特點進行了研究,并分析了在實際Java Web應用設計開發中各框架的應用范圍。
關鍵詞 Struts2;Hibernate;Spring;控制反轉;面向切面編程
中圖分類號 TP3 文獻標識碼 A 文章編號 1674-6708(2017)198-0090-02
隨著互聯網的發展普及,市場對建立在互聯網上的Web應用的需求也越來越多,企業內部的信息化管理系統也逐漸從原來的C/S結構的桌面軟件應用升級到基于B/S結構的Web應用系統,因此如何高效率和高質量的開發Web應用系統,就成了各家IT企業需要迫切解決的問題。在Web應用開發中,IT企業通常會使用框架技術來進行開發。因為很多Web應用的底層功能需求都是一致的,例如數據庫的訪問,http請求的處理和響應的設計等,另外一方面Web應用項目通常是由多個軟件工程師協作開發的,而框架提供了良好的設計模式和分層設計,使得Web應用的分層和分工更加合理和高效。正是因為使用框架設計的諸多優點,絕大部分公司都采用框架來進行Web應用程序的設計和開發,其中一些大型的IT公司經過多年的技術積累,研發了適合本公司業務需求的框架,而大部分公司則是采用了市場中流行的框架來進行Web應用的設計開發。其中基于Java技術的就有SSH框架,SSH框架其實是由3個框架組成,有位于表示層的Struts2框架,位于業務邏輯層的Spring框架和數據訪問層的Hibernate框架。
1 Struts2框架
Struts2是實現了簡潔MVC設計模式的Web應用開發框架。Struts2定義了通用的控制器(Controller),使用Action對用戶請求做了封裝并調用對應業務邏輯模型(Model)進行處理,通過配置文件設置請求響應的跳轉視圖(View),這樣的設計降低了系統各個模塊的耦合度,使得前期開發和后期維護都更加高效。使用Struts2進行開發還有以下優勢。
1)Struts2框架的大部分功能都是通過攔截器的方式實現的,攔截器是面向切面編程(AOP)的一種實現策略,通過攔截器的方式軟件工程師可以根據自己的需要很方便的對Struts2框架中提供的功能進行取舍,組合,修改和自定義。
2)Struts2框架提供了方便的表單參數獲取方式,可以通過Action的屬性來獲取參數,通過DomainModel獲取參數或通過ModelDriven獲取參數。
3)Struts2框架提供了豐富的頁面標簽等簡化編碼的工具來替代JSTL。
4)Struts2框架提供了異常處理機制,使得軟件工程師處理異常更加簡單。
5)Struts2框架提供了頁面國際化的功能,使得Web應用能夠很方便的實現頁面的國際化。
6)Struts2框架提供了輸入數據的校驗機制,使得軟件工程師使用Struts2的頁面標簽和簡單的xml文件配置就能實現很復雜的用戶輸入數據的校驗。
2 Hibernate框架
有些在內存中處理的數據最終是需要保存到數據庫中的,這個過程被稱為數據的持久化,在Java技術中是使用JDBC的技術來實現,而使用JDBC的技術就需要在代碼中使用SQL語言這類的關系數據庫的操作語言,而Java是面向對象的語言,因此在程序中就總是要處理關系數據到對象的相互轉換和映射,使得代碼編寫繁瑣,因此有些軟件工程師自己在JDBC 技術基礎上編寫了相應的框架實現了關系數據到對象的相互轉換和映射,其中目前最流行的框架就是Hibernate。
Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了代碼封裝,可以自動生成SQL語句,軟件工程師完全可以不用在代碼中寫一條SQL語句,就能夠對關系數據庫進行操作,可以完全使用面向對象編程思想來處理關系數據。Hibernate可以應用在任何使用JDBC的場合,既可以在Web應用中使用,也可以在窗體桌面程序中使用。Hibernate提供了延遲加載機制,只是在需要的時候才將數據庫中的數據取出來映射成對象,這樣就減少了服務器內存的占用,提升了服務器的性能。Hibernate還提供了數據緩存機制,通過一級緩存和二級緩存將數據查詢數據存放到緩存區,再次需要相關數據時可以先直接到緩存區取,提高了Web應用的響應速度。
3 Spring框架
Spring框架是輕量級的使用了控制反轉和面向切面編程技術的容器框架,主要是針對JavaBean的生命周期進行管理的輕量級容器。
控制反轉是一種設計模式,通過此模式可以解決代碼間的耦合,它把耦合從代碼中移出去,放到統一的XML文件中,通過一個容器在需要的時候把這個依賴關系形成,即把需要的接口實現注入到需要它的類中。Spring實現了控制反轉模式,由Spring來管理對象的生命周期、依賴關系等,從而使得應用程序的配置和依賴性規范與實際的應用程序代碼分開。其中一個特點就是通過文本的配置文件進行應用程序組件間相互關系的配置,而不用重新修改并編譯具體的代碼。
面向切面編程讓關注點代碼與業務代碼分離,關注點代碼就是指具有通用功能,會被反復調用的一段代碼,面向切面編程就是將這部分代碼抽取出來形成切面類,提供給不同的業務代碼進行調用。面向切面編程的特點是可以動態地添加和刪除在切面上的邏輯而不影響原來的執行代碼。
正是由于Spring是基于控制反轉和面向切面的技術,因此使用Spring框架可以很方便的對Java對象進行管理,而不影響原有項目的關鍵代碼,可以快速高效的將多個框架整合在一起。
4 SSH框架整合
根據SSH這3個框架的不同特點,在整合的時候,Struts2位于表示層負責Web應用和用戶的交互和頁面邏輯的跳轉,Hibernate位于數據訪問層負責數據庫的操作,Spring位于業務邏輯層負責管理業務邏輯處理對象,并可以根據需要管理Struts2和Hibernate中核心對象的生命周期。其整合方式如圖1所示。
這樣的分層方式使得軟件開發團隊的分工更加明確,每位工程師都只需要專注自己擅長的領域,提高了開發效率。當系統需要進行功能變更和維護時也更加方便,而且因為Spring具有控制反轉和面向切面編程的特性,在必要時也可以很方便的替換表示層和數據訪問層框架。
參考文獻
[1]李健.Java SSH框架在Java Web中的應用[J].電腦與電信,2016(3):69-72.
[2]張宇.基于Spring的MVC框架設計與實現[J].計算機工程,2010,36(4):59-62.endprint