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的簡化,下面是看了篇博客而後總結的:java
Struts程序員
這是的java 基於Sun J2EE 平臺的MVC框架,主要是採用 Servlet 和 JSP 技術來實現的。web
官方地址:http://struts.apache.orgspring
Spring 數據庫
解決許多J2EE開發中常見的問題的框架,Spring提供了管理業務對象的一致性方法而且鼓勵面向接口編程而不是對類編程,Spring架構的基礎是基於JavaBean屬性的Inersion of Control容器,String提供了惟一的數據訪問抽象,包括簡單和有效的JDBC框架,String 結合Hibernate和其餘的O/R mapping 解決方案等。apache
官方地址:spring: http://www.springsource.org編程
Hibernate設計模式
他是一個開源的對象關係映射框架,它對JDBC進行了很是輕量級的對象封裝,使得Java 程序員能夠爲所欲爲的使用對象編程思惟來操控數據庫,Hibernate能夠在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。架構
官方地址:http://www.hibernate.orgapp
在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