SSH框架總結(框架分析+環境搭建+實例源碼下載)

首先,SSH不是一個框架,而是多個框架(struts+spring+hibernate)的集成,是目前較流行的一種Web應用程序開源集成框架,用於構建靈活、易於擴展的多層Web應用程序。html

 

集成SSH框架的系統從職責上分爲四層:表示層、業務邏輯層、數據持久層和域模塊層(實體層)。前端

 

Struts做爲系統的總體基礎架構,負責MVC的分離,在Struts框架的模型部分,控制業務跳轉,利用Hibernate框架對持久層提供支持。Spring一方面做爲一個輕量級的IoC容器,負責查找、定位、建立和管理對象及對象之間的依賴關係,另外一方面能使Struts和Hibernate更好地工做。java

 

 

由SSH構建系統的基本業務流程是:git

 

一、在表示層中,首先經過JSP頁面實現交互界面,負責傳送請求(Request)和接收響應(Response),而後Struts根據配置文件(struts-config.xml)將ActionServlet接收到的Request委派給相應的Action處理。程序員

二、在業務層中,管理服務組件的Spring IoC容器負責向Action提供業務模型(Model)組件和該組件的協做對象數據處理(DAO)組件完成業務邏輯,並提供事務處理、緩衝池等容器組件以提高系統性能和保證數據的完整性。web

三、在持久層中,則依賴於Hibernate的對象化映射和數據庫交互,處理DAO組件請求的數據,並返回處理結果。spring

 

採用上述開發模型,不只實現了視圖、控制器與模型的完全分離,並且還實現了業務邏輯層與持久層的分離。這樣不管前端如何變化,模型層只需不多的改動,而且數據庫的變化也不會對前端有所影響,大大提升了系統的可複用性。並且因爲不一樣層之間耦合度小,有利於團隊成員並行工做,大大提升了開發效率。數據庫

 

 

下面咱們再詳細看一下組成SSH的這三個框架apache

1、Spring編程

一、什麼是Spring?

簡單來講,Spring是一個輕量級的控制反轉(IoC)和麪向切面(AOP)的容器框架。

 

二、Spring的特性

具體本身百度吧

全部Spring的這些特徵使你可以編寫更乾淨、更可管理、而且更易於測試的代碼

 

三、爲何使用Spring?

Spring的以上特性使得開發人員使用基本的JavaBean來完成之前只可能由EJB完成的事情。然而,Spring的用途不只限於服務器端的開發。從簡單性、可測試性和鬆耦合的角度而言,任何Java應用均可以從Spring中受益。

 

2、Struts

一、什麼是Struts?

它經過採用 Java Servlet/JSP 技術,實現了基於Java EEWeb應用的MVC設計模式的應用框架,是MVC經典設計模式中的一個經典產品。

 

二、Struts1的核心構成

 

在 Struts1 中,由一個名爲 ActionServlet 的 Servlet 充當 控制器(Controller)的角色,根據描述模型、視圖、控制器對應關係的 struts-config.xml 的配置文件,轉發視圖(View)的請求,組裝響應數據模型(Model)。

 

在 MVC 的模型(Model)部分,常常劃分爲兩個主要子系統(系統的內部數據狀態與改變數據狀態的邏輯動做),這兩個概念子系統分別具體對應 Struts 1裏的 ActionForm 與 Action 兩個須要繼承實現超類。在這裏,Struts 1能夠與各類標準的數據訪問技術結合在一塊兒,包括Enterprise Java Beans(EJB), JDBC 與 JNDI。

 

在 Struts 1的視圖(View) 端,除了使用標準的JavaServer Pages(JSP)之外,還提供了大量的標籤庫使用,同時也能夠與其餘表現層組件技術(產品)進行整合,好比 Velocity Templates,XSLT 等。

 

經過應用 Struts 的框架,最終用戶能夠把大部分的關注點放在本身的業務邏輯(Action)與 映射關係的配置文件(struts-config.xml)中。

 

三、Struts1的基本執行流程

詳見《STRUTS基本工做流程》

 

四、什麼是struts2

Struts 2是Struts的下一代產品,是在 struts 1和WebWork的技術基礎上進行了合併的全新的Struts 2框架。其全新的Struts 2的體系結構與Struts 1的體系結構差異巨大。Struts 2以WebWork爲核心,採用攔截器的機制來處理用戶的請求,這樣的設計也使得業務邏輯控制器可以與ServletAPI徹底脫離開,因此Struts 2能夠理解爲WebWork的更新產品

 

五、strut2的體系結構

 

 

解析:

當Web容器收到請求(HttpServletRequest)它將請求傳遞給一個標準的的過濾鏈包括  流程(ActionContextCleanUp)過濾器,而後通過Other filters(SiteMesh ,etc),

接下來須要調用FilterDispatcher核心控制器,而後它調用ActionMapper肯定請求那個Action,ActionMapper返回一個收集Action詳細信息的ActionMaping對象。

接下來FilterDispatcher將控制權委派給ActionProxy,ActionProxy調用配置管理器(ConfigurationManager) 從配置文件中讀取配置信息(struts.xml),而後建立ActionInvocation對象,ActionInvocation在調用Action以前會依次的調用所用配置攔截器(Interceptor N) 一旦執行結果返回結果字符串ActionInvocation負責查找結果字符串對應的(Result)而後執行這個Result Result會調用一些模版(JSP)

來呈現頁面,以後攔截器(Interceptor N)會在被執行(順序和Action執行以前相反)最後響應(HttpServletResponse)被返回在web.xml中配置的那些過濾器和(核心控制器)(FilterDispatcher)。

 

六、爲何使用Struts?

首先,Struts 是MVC的一種實現,它將 Servlet和 JSP 標記(屬於 J2EE 規範)用做實現的一部分。Struts繼承了MVC的各項特性,並根據J2EE的特色,作了相應的變化與擴展,減弱了業務邏輯接口和數據接口之間的耦合,以及讓視圖層更富於變化

 

另外, struts具備頁面導航功能,使系統的脈絡更加清晰。經過一個配置文件,便可把握整個系統各部分之間的聯繫,這對於後期的維護有着莫大的好處。尤爲是當另外一批開發者接手這個項目時,這種優點體現得更加明顯。

 

七、 Struts1和Struts2的區別

詳見《Struts1 和 Struts2

 

3、Hibernate

一、什麼是Hibernate?

Hibernate是一個開放源代碼的對象關係映射框架,它對JDBC進行了很是輕量級的對象封裝,使得Java程序員能夠爲所欲爲的使用對象編程思惟來操縱數據庫。 Hibernate能夠應用在任何使用JDBC的場合,既能夠在Java的客戶端程序使用,也能夠在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate能夠在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任

 

二、Hibernate核心構成

 

具體就不展開了

 

三、Hibernate基本執行流程

 

 

爲何使用Hibernate?

1. 對JDBC訪問數據庫的代碼作了封裝,大大簡化了數據訪問層繁瑣的重複性代碼。

二、Hibernate是一個優秀的ORM實現。他很大程度的簡化DAO層的編碼工做,將軟件開發人員從大量相同的數據持久層相關編程工做中解放出來,使開發更對象化了。

三、移植性好,支持各類數據庫,若是換個數據庫只要在配置文件中變換配置就能夠了,不用改變hibernate代碼。

四、支持透明持久化,由於hibernate操做的是純粹的(pojo)java類,沒有實現任何接口,沒有侵入性。因此說它是一個輕量級框架。

 

 

最後附上SSH1和SSH2框架搭建的實例,點擊便可下載

SSH1框架搭建實例(spring2+struts1+hibernate3)採用舊版本,詳見代碼中註釋

SSH2框架搭建實例(spring3.2+strust2.3.4+hibernate4.2)所有采用最新版本,詳見代碼中註釋

 

開發環境搭建,參照個人另外一篇博客

Win7(64) + eclipse(64)+ tomcat7(64)+ jdk7(64)開發環境配置

 

 

 

[html] view plain copy

 print?在CODE上查看代碼片派生到個人代碼片

  1.  一些說明:  
  2.   
  3. 索要代碼的郵箱,我基本上都發過了,若是有漏發,請聯繫我。  
  4.   
  5.   
  6. 仍是但願你們去csdn下載頁去下載。若是速度慢,能夠去這裏http://pan.baidu.com/s/1eQh7FXo  
  7.   
  8.   
  9. 開發環境配置。http://blog.csdn.net/shan9liang/article/details/8807784  
  10.     
  11. 在war中,找到application-common.xml。修改數據源,指定本身的數據庫便可。項目部署後,會自動映射表。  
  12.     
  13.     
  14. <!--配數據源 -->  
  15. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  
  16. destroy-method="close">  
  17. <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />  
  18. <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />  
  19. <property name="username" value="ssh" />  
  20. <property name="password" value="ssh" />  
  21. </bean>  
  22.     
  23. 以上是oracle的配置。  
  24.   
  25. 若是使用其餘數據庫,請在lib目錄下,加入驅動包。並修改數據源。  
  26.   
  27. 強烈建議:  
  28.   
  29.   
  30. https://code.csdn.net/shan9liang/tgb  
  31. 這是在CSDN CODE託管的,採用ssh搭建的一個考勤管理系統,maven項目,比原來那個更規範了,建議用這個,並且我會持續更新,逐漸加入各類主流框架,相信我。  
  32. 。不過不是eclipse項目,須要手工導入eclipse,最近特喜歡用intellij。建議直接用git clone。  
相關文章
相關標籤/搜索