標籤:
SSH就是 struts+spring+hibernate 的一個整合架構,是java中一種流行的JAVA WEB 應用程式開源架構。因為我最熟悉的還是ASP.NET的的MVC和Python的Django架構,今天有必要學習下java 的流行架構SSH,其實作為WEB應用的整體架構,我發現其中有很多類似的地方,比如這裡的Struts就是Django中的Views層+模板層的一個前台資料填充模組,而spring 就是串連Struts和Hibernate 的中間商務邏輯層,但是這在Django中已經被劃分到views中去了,最後的Hibernate 就是典型的資料庫映射層嘛,這一點和Django的models 層有相似之處,就是沒有Django的簡化,下面是看了篇部落格然後總結的:
Struts
這是的java 基於Sun J2EE 平台的MVC架構,主要是採用 Servlet 和 JSP 技術來實現的。
官方地址:http://struts.apache.org
Spring
解決許多J2EE開發中常見的問題的架構,Spring提供了管理業務對象的一致性方法並且鼓勵面向介面編程而不是對類編程,Spring架構的基礎是基於JavaBean屬性的Inersion of Control容器,String提供了唯一的資料訪問抽象,包括簡單和有效JDBC架構,String 結合Hibernate和其他的O/R mapping 解決方案等。
官方地址:spring: http://www.springsource.org
Hibernate
他是一個開源的對象關係映射架構,它對JDBC進行了非常輕量級的對象封裝,使得Java 程式員可以隨心所欲的使用對象編程思維來操控資料庫,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成資料持久化的重任。
官方地址:http://www.hibernate.org
在SSH的組合模式中,三者各自的作用
Struts 是一個很好的MVC架構,主要技術是Servlet 和Jsp.Struts的MVC設計模式可以使我們的邏輯變得很清晰,讓程式變得層次分明(類似於Django中的Views層)。
Spring提供了管理業務對象的一致化方法,並且鼓勵對介面編程而不是對類編程,這樣在很大程度上松解了耦合(已經被融入到Views層中了)。
Hibernate 是用來持久化資料的,提供全面的物件導向的資料庫操作,Hibernate 對JDBC進行了非常輕量級的封裝,這樣和資料庫打交道就容易多了(類似於Django 中的models層)。
其中很多沒說的,直接看看SSH架構圖吧:
Struts負責的是web層:
ActionFormBean接收網頁中表單提交的資料,然後通過Action進行處理,再Forward到對應的網頁中,在Struts-config.xml中定義<action-mapping>,這樣ActionServlet會載入進來。
Spring負責的是商務邏輯層,即Service:
Service為Action提供統一的調用介面,封裝持久層的DAO,並且整合了Hibernate ,Spring可對JavaBean(對象)和事物進行統一的管理。
Hibernate負責持久層,完成資料庫的CRUD操作:
Hibernate有一組hbm.xml和PO,是資料庫中的對應的表相對應的,然後定義DAO,這些是與資料庫打交道的類。(直接就是複雜化的Models層)
下面是SSH中的對象調用流程圖:
主要的資料流路徑是:Struts->Spring->Hibernate(JSP->Action->Service->DAO->Hibernate)
轉載地址:http://blog.csdn.net/l_f0rm4t3d/article/details/23956247
Java SSH架構學習(入門)