MVC是一種構架,那么這種構架的工作原理是什么呢?想必很多人都不知道。其實它的工作原理有點復雜。一些專業術語的介紹也不太讓人清楚它到底是一個什么樣的工作原理。但從名字的三個字母的組成來看,就會變得簡單。M代表Model,主要是負責整個解決方案的業務邏輯實現,底層的數據庫也由Model訪問和操作;V代表View,負責系統向用戶的展示,主要由HTML及JSP等完成;而C又主要是為了實現用戶與任務的通信;另一方面處理來自其它的結果,最后由ControllerA進行處理。
1.當用戶在瀏覽器中點擊一個鏈接或者提交一個表單時,那么就會產生一個請求(request)。當請求離開瀏覽器時,它會攜帶用戶請求的信息。
2.請求的第一站到達的是Spring的DispatcherServlet,它是一個前端控制器,工作是將用戶的請求委托給其他的組件(這里是交給Spring MVC的控制器)去處理。
這里DispatcherServlet要決定將請求傳給哪一個控制器(Controller)去處理,那么這時就需要處理器映射(Handler Mapping)了。
處理器映射會看請求的URL信息,然后決定將請求交給哪一個控制器去處理。比如說有兩個控制器ControllerA和ControllerB,分別處理后綴名為.html和.jsp送來的請求,那么當請求者的后綴名為.html時,那么DispatcherServlet就將請求交給ControllerA進行處理。
C代表Controller,負責用戶界面和業務邏輯層的通信控制,一方面解釋來自用戶界面的輸入,識別用戶動作(如點擊按鈕等),調用相應Model中的方法,另一方面處理來自Model的事件和返回的執行結果,調用適當的View顯示給用戶,Controller主要由Servlet完成。
M代表Model,負責整個解決方案的業務邏輯實現,底層的數據庫也由Model訪問和操作;
V代表View,負責系統向用戶的展示,主要由HTML及JSP等完成;
MVC組件說明:
以下組件通常使用框架提供實現:
DispatcherServlet:作為前端控制器,整個流程控制的中心,控制其它組件執行,統一調度,降低組件之間的耦合性,提高每個組件的擴展性。
HandlerMapping:通過擴展處理器映射器實現不同的映射方式,例如:配置文件方式,實現接口方式,注解方式等。
HandlAdapter:通過擴展處理器適配器,支持更多類型的處理器。
ViewResolver:通過擴展視圖解析器,支持更多類型的視圖解析,例如:jsp、freemarker、pdf、excel等。
組件:
1、前端控制器DispatcherServlet(不需要工程師開發),由框架提供
作用:接收請求,響應結果,相當于轉發器,中央處理器。有了dispatcherServlet減少了其它組件之間的耦合度。
用戶請求到達前端控制器,它就相當于mvc模式中的c,dispatcherServlet是整個流程控制的中心,由它調用其它組件處理用戶的請求,dispatcherServlet的存在降低了組件之間的耦合性。
2、處理器映射器HandlerMapping(不需要工程師開發),由框架提供
作用:根據請求的url查找Handler
HandlerMapping負責根據用戶請求找到Handler即處理器,springmvc提供了不同的映射器實現不同的映射方式,例如:配置文件方式,實現接口方式,注解方式等。
3、處理器適配器HandlerAdapter
作用:按照特定規則(HandlerAdapter要求的規則)去執行Handler
通過HandlerAdapter對處理器進行執行,這是適配器模式的應用,通過擴展適配器可以對更多類型的處理器進行執行。
4、處理器Handler(需要工程師開發)
注意:編寫Handler時按照HandlerAdapter的要求去做,這樣適配器才可以去正確執行Handler
Handler 是繼DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler對具體的用戶請求進行處理。
由于Handler涉及到具體的用戶業務請求,所以一般情況需要工程師根據業務需求開發Handler。
5、視圖解析器View resolver(不需要工程師開發),由框架提供
作用:進行視圖解析,根據邏輯視圖名解析成真正的視圖(view)
View Resolver負責將處理結果生成View視圖,View Resolver首先根據邏輯視圖名解析成物理視圖名即具體的頁面地址,再生成View視圖對象,最后對View進行渲染將處理結果通過頁面展示給用戶。
springmvc框架提供了很多的View視圖類型,包括:jstlView、freemarkerView、pdfView等。
一般情況下需要通過頁面標簽或頁面模版技術將模型數據通過頁面展示給用戶,需要由工程師根據業務需求開發具體的頁面。
6、視圖View(需要工程師開發jsp...)
View是一個接口,實現類支持不同的View類型(jsp、freemarker、pdf...)
MVC的工作原理運用了許多東西。前端控制器減少組件之間的耦合度;處理器映射器根據請求的url查找Handler;處理器適配器按照特定規則(HandlerAdapter要求的規則)去執行Handler;視圖解析器進行視圖解析,根據邏輯視圖名解析成真正的視圖(view);視圖View實現類支持不同的View類型(jsp、freemarker、pdf...)。這里面涉及的太多專業性的東西,如果你對這些東西感興趣的話,可以自己再找其他信息來源進行了解。想要了解更多關于MVC的信息,請繼續關注中培偉業。