SSH學習整理

一。詳細分析spring+hibernate+struts作用。


1。struts是框架的表現層,Struts是對MVC構架的具體實現


Struts的MVC三層結構:
(1)視圖層:Struts採用JSP作爲MVC的視圖。每一視圖都是採用了定製標籤庫的JSP頁面,這些定製標籤庫則由Struts框架提供。全部表單元素都是用定製標籤編碼的,所以這些頁面能夠很方便地同控制器交互。每一個表單都通過映射JSP到Servlet的請求這一方式指向控制器特定入口點。
(2)控制層:控制器就是Java Servlet,由Struts框架提供,負責視圖和模型之間的交互。控制器的每個入口點都由名爲struts-config.xml的配置文件設置。該文件把來自視圖的請求映射爲特定的Java類以進行相應的處理,控制器還指定下一個視圖的位置。
(3)模型層:JavaBean就是模型的代表。對進入控制器的每個入口點來說,Bean的作用是存儲從視圖獲取的信息,同時被稱爲“動作類”,一種Java類則被指定爲對錶單輸入採取行動。動作類(Action Class)實現了業務邏輯。


下面是Struts在框架結構中所負責的工作: 
(1) 爲用戶管理請求和響應;
(2) 提供一個控制器代理調用業務邏輯和其它上層處理;
(3) 處理從其它層擲出給一個Struts Action的異常;
(4) 爲顯示提供一個模型;
(5) 執行用戶接口驗證。


2.Spring實現了反轉控制(Inversion of Control)和麪向方面編程(Achievement-Oriented Programming)。Spring框架的能實現應用的分層架構,在應用中要使用的對象可以被一個簡單的XML文件連在一起,這個XML文件含有到像事務管理器、對象工廠、包含業務邏輯的服務對象、和數據存取對象這些對象的引用。
Spring 框架是一個分層架構,由 7 個定義良好的模塊組成。Spring 模塊構建在覈心容器之上,核心容器定義了創建、配置和管理 bean 的方式,其主要優勢有如下幾點:
(1) Spring能有效地組織你的中間層對象。 
(3) 通過一種在不同應用程序和項目間一致的方法來處理配置文件,消除各種自定義格式的屬性文件的需要,僅僅需要看看類的JavaBean屬性。反轉控制的使用幫助完成了這種簡化。
(4) Spring能夠幫助我們真正意義上實現針對接口編程。
(5) Spring的設計會讓使用它創建的應用儘可能少的依賴於它的APIs,在Spring應用中的大多數業務對象沒有依賴於Spring。 
(6) 使用Spring構建的應用程序易於單元測試。 
(7) Spring使EJB成爲一個實現選擇,而不是必需的選擇。你可以用POJO或當地EJB來實現業務接口,卻不會影響到調用代碼。 
(8) Spring能使用AOP提供聲明性事務管理,可以不直接操作JTA也能夠對事務進行管理。
(9) Spring爲數據存取提供了一個一致的框架,不論是使用JDBC還是O/R mapping的產品。
(10) MVC Web框架,提供一種清晰,無侵略性MVC實現方式。




Spring業務層在框架中負責下面這些事情:
(1) 管理事務;
(2) 預留和其它層交互的接口;
(3) 管理業務層對象之間的依賴;
(4) 增加在表現層和持久層之間的靈活性,使它們互不直接通訊;
(5) 從表現層中提供一個上下文給業務層獲得業務服務;
(6) 管理從業務邏輯到持久層的實現;
(7) 處理應用程序的業務邏輯和業務驗證;


Hibernate是一種ORM映射工具,它不僅提供了從Java類到數據表之間的映射,也提供了數據查詢和恢復機制。相對於使用JDBC和SQL來手工操作數據庫,使用Hibernate,可以大大減少操作數據庫的工作量。Hibernate可以和多種Web服務器或者應用服務器良好集成。


Hibernate是一個開放源代碼的對象關係映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序實用,也可以在Servlet/JSP的Web應用中使用,Hibernate還可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。
Hibernate框架的優勢有下面幾點:
(1) Hibernate具有可擴展性;
(2) Hibernate既適用於獨立的Java程序,也適用於Java Web應用,而且還可以在J2EE架構中取代CMP,完成持久化任務,Hibernate能集成到會話EJB和基於BMP的實體EJB中;
(3) Hibernate可以和多種WEB服務器,應用服務器良好集成,並且支持所有的數據庫服務器;
(4) Hibernate有詳細的參考文檔,使用方便,容易上手。




下面是Hibernate持久層在框架中所負責的工作:
(1) 查詢相關的信息成爲對象。
Hibernate通過HQL的面向對象的查詢語言或者使用條件表達式API來做這個事情。HQL非常類似於SQL。只是把SQL裏的table和columns用Object和它的fields代替;
(2) 保存、更新、刪除儲存在數據庫中的信息; 
Hibernate這樣的高級“對象-關係”映射框架提供對大多數主流SQL數據庫的支持,它們支持“父/子”關係、事務處理、繼承和多態。


域對象層主要做兩件事:
(1) 編寫相關接口: DAO類一般要使用Spring的聲明式事務機制,而聲明式事務機制是使用Spring AOP來實現的。Spring AOP默認使用的Java動態代理必須基於接口。本系統是面向接口編程;
(2)實現相關接口:在實現接口的同時,需要繼承HibernateDaoSurpport類,這樣可以省去對SessionFactory與HibernateTemplate的處理。






二。總概括spring+hibernate+struts作用


1.struts就是一個mvc的架構,在控制器,視圖和模型方面都有其特定的組件,所以我們在SSH組合中,更多的是利用了controller這個組件。很多人感覺上是利用Struts的View層,的確是這樣的,因爲我們應用了很多struts的標籤,整個頁面的工作核心還是在表單提交給action controller的動作上,而在struts的定義中,這是屬於C這一層的。所以我們利用的確是controller。
2.spring的話最主要的功能還是它的ioc和aop,即注入依賴和麪向切面編程它也有其自己的mvc,當然你可以用struts框架而不用spring的mvc. 
3.Hibernate還可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任,使用Structs+Spring+Hibernate的項目主要是在web層利用了struts的mvc框架,在數據庫層用hibernate的數據庫訪問功能,
在bean管理和服務方面利用spring的ioc和aop.



發佈了64 篇原創文章 · 獲贊 39 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章