spring mvc入門教程(一)概念介紹

在開始springmvc之旅之前,我們先學習下MVC架構模式。

什么是MVC架構模式?

MVC是MODEL-VIEW-CONTROLLER的縮寫,主要分為MODEL層,VIEW層,CONTROLLER層。

MODEL:模型層,業(yè)務數據的表示,通常是多個業(yè)務實體的組合
VIEW:視圖層,負責將UI和業(yè)務數據的展現(xiàn)
CONTROLLER:控制器,負責處理用戶的請求,業(yè)務數據的抽取,并把數據傳遞給相應的視圖進行展現(xiàn)

由此可見,MVC的核心是將業(yè)務數據的抽取和業(yè)務數據的展現(xiàn)相分離

什么是前端控制器模式?

51B6B8D8-7907-4825-A2B0-BDAD836CBE91.png
講解

1.首先用戶的請求到達前端控制器(Front controller), 前端控制器了解這個請求應當被誰處理,所以前端控制器將這個請求代理給相應的控制器(Controller)。
2.控制器了解業(yè)務邏輯的細節(jié),因此調用業(yè)務邏輯生成業(yè)務數據(Model)并將業(yè)務數據返回給前端控制器。
3.前端控制器在將業(yè)務數據分發(fā)給業(yè)務視圖,由視圖(View)呈現(xiàn)最終用戶頁面。
4.業(yè)務視圖將最終用戶頁面返回給前端控制器,前端控制器將頁面返回給瀏覽器。

什么是前端控制器?

舉例如下:前端控制器就相當于我們公司的前臺,當客人來臨時,由前臺指引到各個部門。


7090FCAD-35A4-4FB1-9D52-CE8C08F8AC61.png

Spring MVC是如何來處理請求的呢?

  • 了解Spring MVC的基礎概念

1.DispatcherServlet:就是前端控制器,瀏覽器請求通過DispatcherServlet進行分發(fā)到相應的Controller和生產業(yè)務數據Model,Model在通過DispatcherServlet進行傳遞到view來完成最終頁面呈現(xiàn)。
2.Controller:處理業(yè)務邏輯生成合適的數據.
3.HandlerMapping:告訴DispatcherServlet這個請求到來之后由哪個Controller來做處理以及Controller被哪個攔截器攔截。
4.HandlerAdapter:DispatcherServlet是根據handlerMapping傳過來的controller與已經注冊好了的HandlerAdapter一一匹配,看哪一種HandlerAdapter是支持該controller類型的,如果找到了其中一種HandlerAdapter是支持傳過來的controller類型,那么該HandlerAdapter會調用自己的handle方法,handle方法運用Java的反射機制執(zhí)行controller的具體方法來獲得ModelAndView
5.HandlerInterceptor:在被攔截的controller之前、之后、以及完成呈現(xiàn)加入一些處理。
6.HandlerExecutionChain:執(zhí)行鏈條,如下圖


F5068814-4812-4240-9AA6-D5D62BE1EC18.png

7.ModelAndView:Model具體表現(xiàn),無論是用model還是map都會轉成ModelAndView
8.ViewResolver:視圖解析器,根據viewName告訴DispatcherServlet選擇正確的View來呈現(xiàn)頁面
9.View:負責呈現(xiàn)頁面

  • 借用網上圖片,來展現(xiàn)spring mvc處理過程
B60A74D7-B5AC-4FA0-9CCE-3FFC31B42C76.png

1.請求來臨時,DispatcherServlet進行轉發(fā),調用映射處理器HandlerMapping的配置找到Controller、HandlerInterceptor,把它們形成一個執(zhí)行鏈條(HandlerExecutionChain)
2.DispatcherServlet在調用處理器適配,看哪一種HandlerAdapter是支持該controller類型的,如果找到了其中一種HandlerAdapter是支持傳過來的controller類型,handle方法運用Java的反射機制執(zhí)行controller的具體方法來獲得ModelAndView。
3.DispatcherServlet調用ViewResolver的方法返回view對象
4.將ModelAndView傳遞給view來進行展現(xiàn)
5.最后DispatcherServlet講view的呈現(xiàn)返回給用戶

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容