什麼是MVC?
MVC是一種架構模式 --- 程序分層,分工合作,既相互獨立,又協同工作
MVC是一種思考方式 --- 需要將什麼信息展示給用戶? 如何佈局? 調用哪些業務邏輯?
MVC流程圖如下圖所示:
MVC核心思想:業務數據抽取同業務數據實現相分離
總結:
模型層(M) 業務數據的信息表示,關注支撐業務的信息構成,通常是多個業務實體的組合
視圖層(V) 爲用戶提供UI,重點關注數據的呈現
控制器(C) 接受用戶請求,並調用相應的模型處理
(相當於一個總調配中心,有什麼需求,就去調用相應模型進行處理,最後通過視圖給用戶進行展示)
SpringMVC的原理:
1 首先用戶發出請求,請求到達SpringMVC的前端控制器(DispatcherServlet),
2 前端控制器根據用戶的url,請求處理器映射器(HandlerMapping)查找匹配該url的handler,並返回一個執行鏈(HandlerExecutionChain),
3 前端控制器再請求處理器適配器(HandlerAdapter)調用相應的handler進行處理並返回給前端控制器一modelAndView,
4 前端控制器再請求視圖解析器(ViewResolver)對返回的邏輯視圖進行解析,
5 最後前端控制器將返回的視圖進行渲染並把數據裝入到request域,返回給用戶。
注:DispatcherServlet作爲springMVC的前端控制器,負責接收用戶的請求並根據用戶的請求返回相應的視圖給用戶(分發調度)
補充:
爲什麼叫前端控制器?前端又是什麼?
舉個例子:假如你去醫院看病,通過向分診臺的醫院描述自己的病情,就可以得到醫生的指導具體去看外科、內科或者神經科等等,這裏我們的分診臺就扮演着前端控制器(Dispatcher)的角色,也叫做調度器,而各個科室就扮演着控制器(Controller)的角色,因爲分診臺是在具體各個科室之前,所以這個模式就叫做前端控制器。