本學期咱們有一門課叫作Java EE,由陳老師所授,主要講的就是Java EE 中的SSH框架。 因爲陳老師授課風格以及本身的緣由致使學了整整一學期不知道在講什麼,因此纔有了本身從新學習總結的博客,其中可能會有一些錯誤和描述解釋不恰當的地方,望讀者能及時提出。前端
官方的說法:SSH是 struts+spring+hibernate的一個集成框架,是目前較流行的一種web應用程序開源框架。java
SSH不是一個框架,而是把多個框架(Struts、Spring以及Hibernate)緊密的結合在一塊兒,用於構建靈活、易於擴展的多層Web應用程序。程序員
Java EE架構大體分爲如下幾個層次:web
其中SSH框架的系統從職能上分大體能夠分爲四層:表示層、業務邏輯層、數據持久層和域模塊層(實體層)。spring
由SSH構建系統的基本業務流程是:數據庫
一、在表示層中,首先經過JSP頁面實現交互界面,負責傳送請求(Request)和接收響應(Response),而後Struts根據配置文件(struts-config.xml)將ActionServlet接收到的Request委派給相應的Action處理。編程
二、在業務層中,管理服務組件的Spring IoC容器負責向Action提供業務模型(Model)組件和該組件的協做對象數據處理(DAO)組件完成業務邏輯,並提供事務處理、緩衝池等容器組件以提高系統性能和保證數據的完整性。設計模式
三、在持久層中,則依賴於Hibernate的對象化映射和數據庫交互,處理DAO組件請求的數據,並返回處理結果。安全
採用上述開發模型,不只實現了視圖、控制器與模型的完全分離,並且還實現了業務邏輯層與持久層的分離。這樣不管前端如何變化,模型層只需不多的改動,而且數據庫的變化也不會對前端有所影響,大大提升了系統的可複用性。並且因爲不一樣層之間耦合度小,有利於團隊成員並行工做,大大提升了開發效率。網絡
從簡單性來看,Struts是這三個框架中最簡單的一個,它是基於MVC的框架。它經過採用JavaServlet/JSP技術,實現了基於Java EEWeb應用的MVC設計模式的應用框架,是MVC的一個具體實現或着說是MVC的一個具體產品。
Struts的核心一樣也是MVC的核心,Struts是MVC的一個具體產品。
(1)Model
由Action、ActionForm以及JavaBean組成,其中ActionForm用於將用戶請求的參數,封裝成爲ActionForm對象,咱們能夠理解爲實體,由ActionServlet轉發給Action,Action處理用戶請求,將處理結果返回到界面。
(2)View
該部分採用JSP+大量的taglib,實現頁面的渲染。
(3)Controller
Controller是Struts的核心控制器,負責攔截用戶請求,經過調用Model來實現處理用戶請求的功能。
首先,Struts 是MVC的一種實現,它將 Servlet和 JSP 標記(屬於 J2EE 規範)用做實現的一部分。Struts繼承了MVC的各項特性,並根據J2EE的特色,作了相應的變化與擴展,減弱了業務邏輯接口和數據接口之間的耦合,以及讓視圖層更富於變化
另外, struts具備頁面導航功能,使系統的脈絡更加清晰。經過一個配置文件,便可把握整個系統各部分之間的聯繫,這對於後期的維護有着莫大的好處。尤爲是當另外一批開發者接手這個項目時,這種優點體現得更加明顯。
Hibernate是一種Java語言下的ORM(Object-Relation Mapping)的解決方案的一種框架,實現了數據持久化功能。Hibernate能將對象模型所表示的JOPO實體映射到基於SQL的關係模型結構中,對JDBC進行了最大限度地對象封裝,使得程序員能夠經過面向對象地編程思惟來操做數據庫。
其實在Struts2裏面也是用到了不少映射的思想,好比:execute()方法,這個之後再例子中你們能很好地體會到,這裏就不詳談。
會話工廠(SessionFactory)
配置對象被用於創造一個SessionFactory對象,使用提供的配置文件爲應用程序依次配置Hibernate,並容許實例化一個會話對象。SessionFactory是一個線程安全對象並由應用程序全部的線程所使用。
SessionFactory是一個重量級對象因此一般它都是在應用程序啓動時創造而後留存爲之後使用。每一個數據庫須要一個SessionFactory對象使用一個單獨的配置文件。因此若是你使用多種數據庫那麼你要創造多種SessionFactory對象。
會話(Session)
一個會話被用於與數據庫的物理鏈接。Session對象是輕量級的,並被設計爲每次實例化都須要與數據庫的交互。持久對象經過 Session
對象保存和檢索。Session 對象不該該長時間保持開啓狀態由於它們一般狀況下並不是線程安全,而且它們應該按照所需創造和銷燬。
事務(Transaction)
事務對象指定工做的原子單位,它是一個可選項.org.hibernate.Transaction接口提供事務管理的方法。
Query 對象
Query對象使用SQL或者Hibernate查詢語言(HQL)字符串在數據庫中來檢索數據並創造對象。一個查詢的實例被用於連結查詢參數,限制由查詢返回的結果數量,並最終執行查詢。
Criteria 對象
Criteria對象被用於創造和執行面向規則查詢的對象來檢索對象。
Configuration 對象
配置對象是你在任何Hibernate應用程序中創造的第一個Hibernate對象,而且常常只在應用程序初始化期間創造。它表明了Hibernate所需一個配置或屬性文件,配置對象提供了兩種基礎組件。
數據庫鏈接:由Hibernate支持的一個或多個配置文件處理。這些文件是hibernate.properties和hibernate.cfg.xml。
類映射設置:這個組件創造了 Java類和數據庫表格之間的聯繫。
Spring是J2EE應用程序框架,是輕量級的IoC(Inversion of Control,控制反轉)和AOP(Aspectted Programming,面向切面)的容器框架,主要是針對javaBean的生命週期進行管理的輕量級容器,能夠單獨使用,也能夠和Struts框架,Hibernate框架等組合使用。
Spring 框架是一個分層架構,由 7 個定義良好的模塊組成。Spring 模塊構建在覈心容器之上,核心容器定義了建立、配置和管理 bean 的方式。
IoC(Inversion of Control)控制反轉
對象建立責任的反轉,在spring中BeanFacotory是IoC容器的核心接口,負責實例化,定位,配置應用程序中的對象及創建這些對象間的依賴。
XmlBeanFacotory實現BeanFactory接口,經過獲取xml配置文件數據,組成應用對象及對象間的依賴關係。
spring中有三種注入方式,一種是set注入,一種是接口注入,另外一種是構造方法注入。
AOP面向切面編程
面向方面的編程,即AOP,是一種編程技術,它容許程序員對橫切關注點或橫切典型的職責分界線的行爲(例如日誌和事務管理)進行模塊化。AOP
的核心構造是方面,它將那些影響多個類的行爲封裝到可重用的模塊中。
沒有Spring,Struts和Hibernate能夠很好的運行,我稱這樣的模式爲「獨木橋」,可是有了Spring,Struts和Hibernate可以更好的結合在一塊兒,協調的工做。我稱這樣的模式爲「陽光大道」。Spring的核心思想是IoC和AOP,Spring使得管理對象更加方便,極大的下降組件之間的耦合度,實現了軟件各層之間的解耦。Spring的優勢還有不少,咱們就再也不累述了。
這裏只是淺談了一些關於SSH框架的基礎知識,便於你們宏觀來了解認識什麼是SSH框架,其實要想體會框架的精妙之處還得本身作一作簡單例子才能體會,後續我會將我作的小例子以我我的學習過程分享出來。
本文資源圖文部分來源於網絡,這裏特別感謝