1、三層架構
我們的開發架構一般都是基於兩種形式,一種是 C/S 架構,也就是用戶端/伺服器,另一種是 B/S 架構,也就
是瀏覽器伺服器。在 JavaEE 開發中,幾乎全都是基於 B/S 架構的開發。那麼在 B/S 架構中,系統標準的三層架構
包括:表現層、業務層、持久層。三層架構在我們的實際開發中使用的非常多,所以我們課程中的案例也都是基於
三層架構設計的。
三層架構中,每一層各司其職,接下來我們就說說每層都負責哪些方面:
表現層:
也就是我們常說的web層。它負責接收用戶端請求,向用戶端響應結果,通常用戶端使用http協定請求
web 層,web 需要接收 http 請求,完成 http 響應。
表現層包括展示層和控制層:控制層負責接收請求,展示層負責結果的展示。
表現層依賴業務層,接收到用戶端請求一般會呼叫業務層進行業務處理,並將處理結果響應給用戶端。
表現層的設計一般都使用 MVC 模型。(MVC 是表現層的設計模型,和其他層沒有關係)
業務層:
也就是我們常說的 service 層。它負責業務邏輯處理,和我們開發專案的需求息息相關。web 層依賴業
務層,但是業務層不依賴 web 層。
業務層在業務處理時可能會依賴持久層,如果要對數據持久化需要保證事務一致性。(也就是我們說的,
事務應該放到業務層來控制)
持久層:
也就是我們是常說的 dao 層。負責數據持久化,包括數據層即數據庫和數據存取層,數據庫是對數據進
行持久化的載體,數據存取層是業務層和持久層互動的介面,業務層需要通過數據存取層將數據持久化到數據庫
中。通俗的講,持久層就是和數據庫互動,對數據庫表進行曾刪改查的。
2、MVC 模型
MVC 全名是 Model View Controller,是模型(model)-檢視(view)-控制器(controller)的縮寫,
是一種用於設計建立 Web 應用程式表現層的模式。MVC 中每個部分各司其職:
Model(模型):
通常指的就是我們的數據模型。作用一般情況下用於封裝數據。
View(檢視):
通常指的就是我們的 jsp 或者 html。作用一般就是展示數據的。
通常檢視是依據模型數據建立的。
Controller(控制器):
是應用程式中處理使用者互動的部分。作用一般就是處理程式邏輯的。
它相對於前兩個不是很好理解,這裏舉個例子:
例如:
我們要儲存一個使用者的資訊,該使用者資訊中包含了姓名,性別,年齡等等。
這時候表單輸入要求年齡必須是 1~100 之間的整數。姓名和性別不能爲空。並且把數據填充
到模型之中。
此時除了 js 的校驗之外,伺服器端也應該有數據準確性的校驗,那麼校驗就是控制器的該做
的。
當校驗失敗後,由控制器負責把錯誤頁面展示給使用者。
如果校驗成功,也是控制器負責把數據填充到模型,並且呼叫業務層實現完整的業務需求。
3、SpringMVC 是什麼
SpringMVC 是一種基於 Java 的實現 MVC 設計模型的請求驅動型別的輕量級 Web 框架,屬於 Spring
FrameWork 的後續產品,已經融合在 Spring Web Flow 裏面。Spring 框架提供了構建 Web 應用程式的全功
能 MVC 模組。使用 Spring 可插入的 MVC 架構,從而在使用 Spring 進行 WEB 開發時,可以選擇使用 Spring
的 Spring MVC 框架或整合其他 MVC 開發框架,如 Struts1(現在一般不用),Struts2 等。
SpringMVC 已經成爲目前最主流的 MVC 框架之一,並且隨着 Spring3.0 的發佈,全面超越 Struts2,成
爲最優秀的 MVC 框架。
它通過一套註解,讓一個簡單的 Java 類成爲處理請求的控制器,而無須實現任何介面。同時它還支援
RESTful 程式設計風格的請求。
4、SpringMVC 的優勢
1、清晰的角色劃分:
前端控制器(DispatcherServlet)
請求到處理器對映(HandlerMapping)
處理器適配器(HandlerAdapter)
檢視解析器(ViewResolver)
處理器或頁面控制器(Controller)
驗證器( Validator)
命令物件(Command 請求參數系結到的物件就叫命令物件)
表單物件(Form Object 提供給表單展示和提交到的物件就叫表單物件)。
2、分工明確,而且擴充套件點相當靈活,可以很容易擴充套件,雖然幾乎不需要。
3、由於命令物件就是一個 POJO,無需繼承框架特定 API,可以使用命令物件直接作爲業務物件。
4、和 Spring 其他框架無縫整合,是其它 Web 框架所不具備的。
5、可適配,通過 HandlerAdapter 可以支援任意的類作爲處理器。
6、可定製性,HandlerMapping、ViewResolver 等能夠非常簡單的定製。
7、功能強大的數據驗證、格式化、系結機制 機製。
8、利用 Spring 提供的 Mock 物件能夠非常簡單的進行 Web 層單元測試。
9、在地化、主題的解析的支援,使我們更容易進行國際化和主題的切換。
10、強大的 JSP 標籤庫,使 JSP 編寫更容易。
………………還有比如RESTful風格的支援、簡單的檔案上傳、約定大於設定的契約式程式設計支援、基於註解的零配
置支援等等。