SpringMVC執(zhí)行流程
點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號”
優(yōu)質(zhì)文章,第一時(shí)間送達(dá)
作者 | 余月七 (杜)
來源 | urlify.cn/E32aae
簡單原理
Spring MVC 框架像許多其他 MVC 框架一樣, 以請求為驅(qū)動(dòng) , 圍繞一個(gè)中心 Servlet 分派請求及提供其他功能,DispatcherServlet 是一個(gè)實(shí)際的 Servlet (它繼承自 HttpServlet 基類)
當(dāng)發(fā)起請求時(shí)被前置的控制器攔截到請求,根據(jù)請求參數(shù)生成代理請求,找到請求對應(yīng)的實(shí)際控制器,控制器處理請求,創(chuàng)建數(shù)據(jù)模型,訪問數(shù)據(jù)庫,將模型響應(yīng)給中心控制器,控制器使用模型與視圖渲染視圖結(jié)果,將結(jié)果返回給中心控制器,再將結(jié)果返回給請求者
簡單的執(zhí)行流程

1.DispatcherServlet表示一個(gè)前端控制器,是整個(gè)SpringMVC的控制中心。
當(dāng)用戶發(fā)出請求,DispatchServlet接收請求并攔截請求。
我們假設(shè)請求的 url 為 : http://localhost:8080/SpringMVC/hello
如上 url 拆分成三部分:
http://localhost:8080 ------> 服務(wù)器域名
SpringMVC ------> 部署在服務(wù)器上的 web 站點(diǎn)
hello ------> 表示控制器
通過分析,如上 url 表示為:請求位于服務(wù)器 localhost:8080 上的 SpringMVC 站點(diǎn)的 hello 控制器
2.HandlerMapping表示處理器映射,所以DispatchSerlvet去調(diào)用HandlerMapping,然后HandlerMapping根據(jù)url去查找Handler。
3.HandlerExcution表示具體的Handler,主要作用是根據(jù)URL去找控制器。
4.HandlerExcution將解析后的信息傳遞給DispatcherServlet。
5.HandlerAdapter表示處理器適配器,它是按照特定的規(guī)則去執(zhí)行Handler。
6.Handler讓具體的Controller執(zhí)行。
7.Controller將具體的執(zhí)行信息返回給HanderAdapter,比如ModelAndView。
8.HandlerAdapter將視圖邏輯名或模型傳遞給DispatcherServlet。
9.DispatcherServlet調(diào)用視圖解析器(ViewResolver)來解析HandlerAdapter傳遞的邏輯視圖名。
10.視圖解析器將解析的邏輯視圖名傳遞給DispatcherServlet。
11.DispatcherServlet根據(jù)視圖解析器解析的視圖結(jié)果,調(diào)用具體的視圖。
12.最后呈現(xiàn)給用戶。
粉絲福利:Java從入門到入土學(xué)習(xí)路線圖
??????

??長按上方微信二維碼 2 秒
感謝點(diǎn)贊支持下哈 
