## 【前言】
去年軟考,從System.out.println("Hello World!")開始,小編也算是進入java的世界了。轉戰java以后,雖然仍舊在學習.NET的知識,但越學越發現語言都是相通的。單從java的語法基礎來看,他和C#語法就很類似,經常讓人覺得傻傻分不清楚。OO的思想就更是這樣了,抽象、繼承、封裝,這些東西更是不被語言所影響。最近接觸到SSH框架,本著“囫圇吞棗”的學習理念,先做了兩個小項目,才進行了理論性的學習。理論學習了一段時間了,還是覺得總體思路上有點亂,因此停下來,整理下思路。
## 【SSH】
SSH,即Struts+Hibernate+Spring的一個集成框架。單從分層來看,ssh可以看作一個三層或者四層的架構,即Web(UI)層、業務邏輯層、(Dao層)、持久化層。如圖:

那么具體每個框架的作用是什么呢?
Struts ?——顯示層(UI Layer/Presentation Layer)
Spring——業務邏輯層(Business Layer)
Hibernate——持久化層(Persistence Layer)

在表示層中,首先通過JSP頁面實現交互界面,負責傳送請求(Request)和接收響應(Response),然后Struts根據配置文件(struts-config.xml)將ActionServlet接收到的Request委派給相應的Action處理。
在業務邏輯層中,管理服務組件的Spring IoC容器負責向Action提供業務模型(Model)組件和該組件的協作對象數據處理(DAO)組件完成業務邏輯,并提供事務處理、緩沖池等容器組件以提升系統性能和保證數據的完整性。
數據持久層中,則依賴于Hibernate的對象化映射和數據庫交互,處理DAO組件請求的數據,并返回處理結果。
## 【思維導圖】
Struts,是整個系統的基礎架構,實現了MVC的分離,主要用在MVC的視圖層,控制轉發。
Hibernate對JDBC進行了封裝,使得開發人員可以用面向對象等程序思維來操縱數據庫,如Hibernate提供自動建表,我們只需要編寫類,而不需要關心表的內部結構和生成過程。
Spring是一個輕量級的容器框架,可以用來管理Struts和Hibernate。spring可以管理類與類之間的依賴關系,實現控制反轉,而不需要在代碼里操作。另外,AOP可以使業務邏輯更加清晰,團隊開發的分工變得簡單可行,也大大了解耦了。
詳細的介紹參加下面的思維導圖。由于空間原因,細節部分就不再展示了。
