一 JavaWeb架構演變
在java架構模式中,我們可以将MVC架構模式抽象為如下結構:
1.View層。View層即UI層,可采用的技術如JSP,Structs,SpringMVC等
2.Controller層。Controller表示控制器層,可采用的技術,如Servlet/Filter,Spring等
3.Service層。Service層表示核心服務層,向架構上層提供服務
4.DAO層。DAO層表示資料通路層,可采用的技術如jdbc和ORM架構(如Spring JDBC,JPA,Hibernate,Mybatis等)
5.Model層。Model層即表示JavaBean對象
6.Utilities層。Utilities層表示公共工具層
需要注意的是,在該架構抽象模型中,并未涉及到其他技術,如SOA,Nosql(Redis,Mongodb等),MQ等,
除此之外,基于Springboot+Cloud的微服務技術,也未涉及,因為這裡隻将基于MVC的架構模式演變,具體
的JavaWeb架構,将在以後的章節講解。
基于如上的架構抽象模型,我們可以将該架構模式發展分為三個階段:
階段一:Servlet階段
階段二:SSH(Spring+Structs+Hibernate)階段
階段三:SSM階段(Spring+SpringMVC+Mybatis)階段
其實,還存在階段四,即微服務階段,本篇文章不講解。
(一)階段一:Servlet/Filter扮演控制器角色
1.在該階段架構模式中,Servlet/Filter扮演Controller角色,JSP扮演View角色,JavaBean扮演Model角色
2.該階段的資料庫通路技術為具體DB的jdbc
該模式雖然實作了所謂的MVC模式,但卻存在諸多問題:
(1)前後端分離不徹底。由于JSP技術前後端分離不徹底,開發人員往往會在JSP頁面中嵌套Java代碼,進而需要前端開發人員懂java技術
(2)JSP頁面可讀性差,編寫效率低,盡管引入EL,JSTL等技術
(3)Sevlet/Filter作為控制器,面臨的穩定性,安全性考驗(Servlet是線程不安全的)等
(4)資料庫通路技術采用傳統的jdbc,造成過多的備援代碼
當然,還存在很多問題,這裡不一一列舉,為了解決這些問題,JavaWeb專家們提出了一種架構思想:子產品化,抽象化和專一化的思想。基于該思想
,湧向出一批專業化開源架構,其中較為出名的組合架構便是SSH了。
(二)階段二:SSH
1.在該架構模式中,Controller采用Spring架構技術,View采用Structs架構技術,DB通路技術采用Hibernate架構技術
2.從SSH中,很容易看出前後端出現了專業化,精細化分工,且朝架構演變,如前端架構采用Structs,後端架構采用Spring等
然而,SSH架構模式雖然解決了Servlet/Filter架構模式存在的問題,實作了專業化、精細化分工,實作了子產品化和抽象化,
但其卻存在一個比較大的問題:架構笨重不靈活。如Hibernate雖然能滿足業務需求,能解決業務,但其笨重不靈活,不能很好地
實作可配置化的靈活方式,Structs也過于笨重。為了解決該問題,JavaWeb專家們又提出了另外一種架構模式,即SSM架構模式。
(三)階段三:SSM
1.該模式中,Spring扮演Controller角色,SpringMVC扮演View角色(當然,小型系統,可直接采用SpringMVC即可),Mybatis扮演DB通路技術
SSM架構模式,在目前的JavaEE中,算是比較流行的開發模式了,也是大都數企業的技術選型之一。當然,能與SSM相媲美的另一種設計
思想,那就是微服務思想(SpringBoot+cloud技術等),本篇文章不談及微服務。
二 SSM核心架構概述
(一)Spring架構
Spring架構目前是JavaWeb開發的主流架構,也可以說是諸多企業的必選架構,它大緻包括六大子產品。
1.Spring核心容器。該容器是Spring架構最核心部分,它管理着Spring運用中bean的建立、配置和管理等
2.Spring AOP。該子產品為面向切面和DI(依賴注入)提供了很好的支援
3.資料庫通路與內建子產品
4.Web與遠端調用技術
5.Instrument子產品
6.Test子產品
(二) Mybatis架構
1.根據Mybatis源碼,将其抽象為三層:基礎支援層,核心處理層和接口層
2.基礎支援層包括:資料源、事務管理、日志、類型轉換、緩存、Bind、解析器等
3.核心處理層包括:配置解析、配置映射、SQL解析、SQL執行、結果集映射、插件等
4.接口層主要提供JAVA API

三 版權區
感謝您的閱讀,若有不足之處,歡迎指教,共同學習、共同進步。
部落客網址:http://www.cnblogs.com/wangjiming/。
極少部分文章利用讀書、參考、引用、抄襲、複制和粘貼等多種方式整合而成的,大部分為原創。
如您喜歡,麻煩推薦一下;如您有新想法,歡迎提出,郵箱:[email protected]。
可以轉載該部落格,但必須著名部落格來源。