我們的開發(fā)架構一般都是基于兩種形式犯眠,一種是 C/S 架構簿晓,也就是客戶端/服務器,另一種是 B/S 架構罗晕,也就
是瀏覽器服務器济欢。在 JavaEE 開發(fā)中,幾乎全都是基于 B/S架構的開發(fā)小渊。那么在 B/S架構中船逮,系統(tǒng)標準的三層架構
包括:表現(xiàn)層、業(yè)務層粤铭、持久層挖胃。三層架構在我們的實際開發(fā)中使用的非常多,所以我們課程中的案例也都是基于
三層架構設計的。
三層架構中酱鸭,每一層各司其職吗垮,接下來我們就說說每層都負責哪些方面:
表現(xiàn)層:
也就是我們常說的web層。它負責接收客戶端請求凹髓,向客戶端響應結果烁登,通常客戶端使用http協(xié)議請求
web 層蔚舀,web 需要接收 http 請求饵沧,完成 http 響應。
表現(xiàn)層包括展示層和控制層:控制層負責接收請求赌躺,展示層負責結果的展示狼牺。
表現(xiàn)層依賴業(yè)務層,接收到客戶端請求一般會調用業(yè)務層進行業(yè)務處理礼患,并將處理結果響應給客戶端是钥。
表現(xiàn)層的設計一般都使用 MVC 模型。(MVC 是表現(xiàn)層的設計模型缅叠,和其他層沒有關系)
業(yè)務層:
也就是我們常說的 service 層悄泥。它負責業(yè)務邏輯處理,和我們開發(fā)項目的需求息息相關肤粱。web 層依賴業(yè)
務層弹囚,但是業(yè)務層不依賴 web 層。
業(yè)務層在業(yè)務處理時可能會依賴持久層领曼,如果要對數(shù)據(jù)持久化需要保證事務一致性鸥鹉。(也就是我們說的,
事務應該放到業(yè)務層來控制)
持久層:
也就是我們是常說的 dao 層悯森。負責數(shù)據(jù)持久化宋舷,包括數(shù)據(jù)層即數(shù)據(jù)庫和數(shù)據(jù)訪問層,數(shù)據(jù)庫是對數(shù)據(jù)進
行持久化的載體瓢姻,數(shù)據(jù)訪問層是業(yè)務層和持久層交互的接口祝蝠,業(yè)務層需要通過數(shù)據(jù)訪問層將數(shù)據(jù)持久化到數(shù)據(jù)庫
中。通俗的講幻碱,持久層就是和數(shù)據(jù)庫交互绎狭,對數(shù)據(jù)庫表進行曾刪改查的。
MVC
MVC 全名是 Model View Controller褥傍,是模型(model)-視圖(view)-控制器(controller)的縮寫儡嘶,
是一種用于設計創(chuàng)建 Web 應用程序表現(xiàn)層的模式。MVC 中每個部分各司其職:
Model (模型) :
通常指的就是我們的數(shù)據(jù)模型恍风。作用一般情況下用于封裝數(shù)據(jù)蹦狂。
View (視圖) :
通常指的就是我們的 jsp 或者 html誓篱。作用一般就是展示數(shù)據(jù)的。
通常視圖是依據(jù)模型數(shù)據(jù)創(chuàng)建的凯楔。
Controller (控制器) :
是應用程序中處理用戶交互的部分窜骄。作用一般就是處理程序邏輯的。
它相對于前兩個不是很好理解摆屯,這里舉個例子:
例如:
我們要保存一個用戶的信息邻遏,該用戶信息中包含了姓名,性別虐骑,年齡等等准验。
這時候表單輸入要求年齡必須是 1~100 之間的整數(shù)。姓名和性別不能為空廷没。并且把數(shù)據(jù)填充
到模型之中糊饱。
此時除了 js 的校驗之外,服務器端也應該有數(shù)據(jù)準確性的校驗腕柜,那么校驗就是控制器的該做
的济似。
當校驗失敗后矫废,由控制器負責把錯誤頁面展示給使用者盏缤。
如果校驗成功,也是控制器負責把數(shù)據(jù)填充到模型蓖扑,并且調用業(yè)務層實現(xiàn)完整的業(yè)務需求
SpringMVC
SpringMVC 是一種基于 Java 的實現(xiàn) MVC 設計模型的請求驅動類型的輕量級 Web 框架唉铜,屬于 SpringFrameWork 的后續(xù)產品,已經融合在 Spring Web Flow 里面律杠。Spring 框架提供了構建 Web 應用程序的全功
能 MVC 模塊潭流。使用 Spring 可插入的 MVC 架構,從而在使用 Spring 進行 WEB 開發(fā)時柜去,可以選擇使用 Spring的 Spring MVC 框架或集成其他 MVC 開發(fā)框架灰嫉,如 Struts1(現(xiàn)在一般不用),Struts2 等嗓奢。
SpringMVC 已經成為目前最主流的 MVC 框架之一讼撒,并且隨著 Spring3.0 的發(fā)布,全面超越 Struts2股耽,成為最優(yōu)秀的 MVC 框架根盒。
它通過一套注解,讓一個簡單的 Java 類成為處理請求的控制器物蝙,而無須實現(xiàn)任何接口炎滞。同時它還支持RESTful 編程風格的請求。