SSH學習整理

GeekWay發表於2013-02-02
一。詳細分析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.



相關文章