SSH 框架簡介
什么是SSH
SSH是 struts+spring+hibernate的一個(gè)集成框架,是目前較流行的一種web應(yīng)用程序開源框架。SSH不是一個(gè)框架,而是把多個(gè)框架(Struts、Spring以及Hibernate)緊密的結(jié)合在一起,用于構(gòu)建靈活、易于擴(kuò)展的多層Web應(yīng)用程序。
SSH框架的系統(tǒng)從職責(zé)上分為四層:表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層和域模塊層(實(shí)體層)。
我們通過下面這張圖說明一下,三種框架的關(guān)系以及所包含的內(nèi)容,內(nèi)容已經(jīng)很詳細(xì)了,在這里就不做過多的解釋了。
下面我們再詳細(xì)看一下組成SSH的這三個(gè)框架。
Struts
1、什么是Struts?
從簡單性來看,Struts是這三個(gè)框架中最簡單的一個(gè),它是基于MVC的框架。它通過采用JavaServlet/JSP技術(shù),實(shí)現(xiàn)了基于Java EEWeb應(yīng)用的MVC設(shè)計(jì)模式的應(yīng)用框架,是MVC的一個(gè)具體實(shí)現(xiàn)或著說是MVC的一個(gè)具體產(chǎn)品。
2、Struts的核心構(gòu)成
Struts的核心同樣也是MVC的核心,Struts是MVC的一個(gè)具體產(chǎn)品。
(1)Model
由Action、ActionForm以及JavaBean組成,其中ActionForm用于將用戶請求的參數(shù),封裝成為ActionForm對象,我們可以理解為實(shí)體,由ActionServlet轉(zhuǎn)發(fā)給Action,Action處理用戶請求,將處理結(jié)果返回到界面。
(2)View
該部分采用JSP+大量的taglib,實(shí)現(xiàn)頁面的渲染。
(3)Controller
Controller是Struts的核心控制器,負(fù)責(zé)攔截用戶請求,通過調(diào)用Model來實(shí)現(xiàn)處理用戶請求的功能。
3、為什么使用Struts?
使用Struts作為系統(tǒng)的整體基礎(chǔ)架構(gòu),負(fù)責(zé)MVC的分離,將頁面從業(yè)務(wù)邏輯分離出來,使用頁面更加靈活多變,不會(huì)影響業(yè)務(wù)邏輯,簡化了基于MVC的web應(yīng)用程序的開發(fā),因而使得開發(fā)更加高效。
Hibernate
1、什么是Hibernate?
Hibernate是一個(gè)對象關(guān)系映射框架,它對JDBC進(jìn)行了輕量級(jí)的封裝,使得我們使用面向?qū)ο蟮乃枷氩僮麝P(guān)系型數(shù)據(jù)庫。
2、Hibernate的核心構(gòu)成
這部分內(nèi)容我們不做過多的解釋,上面導(dǎo)圖中的解釋已經(jīng)很簡單明了了,如果還是不懂的話,可以上網(wǎng)查閱相關(guān)資料。
3、為什么使用Hibernate?
(1)Hibernate是JDBC的輕量級(jí)的對象封裝,它使得與關(guān)系型數(shù)據(jù)庫打交道變得更加輕松自如。
(2)對象化,它使得我們可以以面向?qū)ο蟮乃枷氩僮麝P(guān)系型數(shù)據(jù)庫,簡化了Dao層編碼工作,使得開發(fā)更加對象化了。
(3)移植性更好,支持各種數(shù)據(jù)庫,更換數(shù)據(jù)庫異常簡單,不需要改代碼。
(4)實(shí)現(xiàn)了透明持久化,沒有實(shí)現(xiàn)第三方框架或接口,沒有侵入性,是一種輕量級(jí)框架。
Spring
1、什么是Spring?
簡單來說,Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。
2、Spring的核心構(gòu)成
(1)IoC
IoC就是IoC,不是什么技術(shù),是一種設(shè)計(jì)模式。通過依賴注入的方式,由spring管理和控制對象之間的依賴關(guān)系,避免硬編
碼所造成的過度程序耦合。
(2)AoP
通過預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)。
(3)容器
能管理對象的生命周期、對象與對象之間的依賴關(guān)系就是容器。
3、為什么使用Spring?
沒有Spring,Struts和Hibernate可以很好的運(yùn)行,我稱這樣的模式為“獨(dú)木橋”,但是有了Spring,Struts和Hibernate能夠更好的結(jié)合在一起,協(xié)調(diào)的工作。我稱這樣的模式為“陽光大道”。Spring的核心思想是IoC和AOP,Spring使得管理對象更加方便,極大的降低組件之間的耦合度,實(shí)現(xiàn)了軟件各層之間的解耦。Spring的優(yōu)點(diǎn)還有很多,我們就不再累述了。
總結(jié)
SSH不僅實(shí)現(xiàn)了視圖、控制器與模型的徹底分離,而且還實(shí)現(xiàn)了業(yè)務(wù)邏輯層與持久層的分離,耦合度降低,系統(tǒng)的靈活性更好,可復(fù)用性高。同時(shí),框架為我們提供了一些基礎(chǔ)性的服務(wù),使我們的開發(fā)更加簡單,大大提高開發(fā)效率。
相關(guān)文章
Mybatis-plus在項(xiàng)目中的簡單應(yīng)用
Mybatis-plus是Spring框架中OOM的一大利器,其簡單易用參考官網(wǎng)文檔即可很快上手,本文主要介紹了邏輯刪除,自動(dòng)填充,分頁插件等的簡單使用,感興趣的可以了解一下2021-07-07springboot3+r2dbc響應(yīng)式編程實(shí)踐
本文主要介紹了springboot3+r2dbc響應(yīng)式編程實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02SpringBoot+Vue+JWT的前后端分離登錄認(rèn)證詳細(xì)步驟
這篇文章主要介紹了SpringBoot+Vue+JWT的前后端分離登錄認(rèn)證,其實(shí)創(chuàng)建后端springboot工程也很簡單,本文安裝idea步驟一步步給大家詳細(xì)介紹,需要的朋友可以參考下2021-09-09java實(shí)現(xiàn)遺傳算法實(shí)例分享(打印城市信息)
本文介紹java實(shí)現(xiàn)遺傳算法的實(shí)例,代碼中使用城市名做為數(shù)據(jù),可以打印當(dāng)前代數(shù)的所有城市序列,以及其相關(guān)的參數(shù),大家參考使用吧2014-01-01Javascript和Java語言有什么關(guān)系?兩種語言間的異同比較
雖然Javascript與Java有緊密的聯(lián)系,但卻是兩個(gè)公司開發(fā)的不同的兩個(gè)產(chǎn)品。那么js和java有什么關(guān)系,兩種語言的不同點(diǎn)是什么呢?介于這兩個(gè)問題,小編一起給大家解答下2016-09-09