【整理】JavaEE基本框架(Struts2+Spring+MyBatis三層,Struts MVC)之間的關係

#【整理】JavaEE基本框架(Struts2+Spring+MyBatis三層,Struts MVC)之間的關係

![關係圖解](https://images0.cnblogs.com/blog/84053/201402/171320568752410.gif)

[visio文件下載](http://files.cnblogs.com/p2227/JavaEE_Frameworks.7z)

##概述
一個JavaEE的項目,頁面用JSP,後臺用了Struts2+Spring+MyBatis,數據庫用的是Oracle,這麼多技術名詞,他們之間的關係如何,總體是怎麼運做的,用什麼東西進行關聯?這是開發過程當中任何一個成員都必需要了解的。即便你只關注某一個方面,例如前端。

##Web端
`Struts`實際上是JavaEE經常使用的MVC框架,統籌Servlet(C)、視圖層(V)和後臺Action及Action中的Model之間的關係。用戶經過**http請求**去訪問Servlet,Struts就會給你指定好類,並把request中的數據按照必定的規則放在Model中。當Action中的Model數據發生變化,經過response返回的JSP頁面上也能經過el表達式或者其餘庫去訪問到這些變化。咱們就不用把心思花在通信協議及一些數據格式(JSON和Java實體類)之間的處理上。

##三層架構
在Web1.0時代,咱們的業務邏輯都是交給後臺去處理的,也就是Action層、Manager、Dao層所組成的JavaEE後臺。咱們推薦action層處理去視圖之間的關係,這樣當你用客戶端和瀏覽器訪問同一個應用時,只須要在action層上下工夫便可。manager層是真正的java邏輯,用各類java類、庫去處理數據。dao層關注數據庫層面的邏輯,這樣當你訪問Oracle或者MSSQL數據庫時,只須要關注dao層便可。`Spring`統籌這三者之間的關係,經過IoC等概念去解決這三層之間的耦合關係。

##數據庫
在Dao層,咱們關注後臺內存中的變量與數據庫持久層之間的通信,咱們通常用**jdbc**去進行通信的,這是方式。內容則是由`MyBatis`去處理,經過mybatis去寫SQL接收變量,接收返回的數據或者數據集。

## Web 2.0時代的MVC
進入Web2.0時代,咱們在Struts統籌的視圖層中,也包含了較多的業務邏輯,特別是**不涉及到密碼、權限等敏感數據,以提升用戶體驗爲宗旨**的邏輯。因此在這一層上也要有以MVC的概念去統籌各代碼的關係,使之條理化的框架如`angular`。HTML/CSS是視圖,業務邏輯的javascript是控制器,記錄數據的javascript(或者叫JSON)是模型。這一層與後臺之間的以包裝了http請教的`ajax`技術去實現。

##最後的話
另一個方面,數據庫的存儲過程等東西代表,這裏面也有較複雜的邏輯。一個軟件項目各個層面的領域發展,都達到必定高度,有必定複雜性。JavaEE的框架也是其中一種組織代碼的框架,但從中抽象化出來的原理,理解了,去看其餘相似框架時,也就能觸類旁通。
相關文章
相關標籤/搜索