Java EE基本框架Struts2+Spring+MyBatis,Struts MVC之間的關係

概述


一個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的框架也是其中一種組織代碼的框架,但從中抽象化出來的原理,理解了,去看其他類似框架時,也就能舉一反三。

相關文章