SpringMVC工做原理

SpringMVC的入口是DispatchServlet,它的工做大體能夠分爲兩個部分,一個是初始化,另一個是請求處理。下面咱們對它的工做原理作簡單分析。web

1. 類繼承關係

類繼承關係

2. 初始化

HttpServletBean重寫了GenericServlet的init()方法,它是整個初始化的入口。spring

  1. 首先,會讀取配置在ServletContext中的bean屬性參數,這些屬性參數設置在web.xml的web容器初始化參數中,即web.xml中的context-param,而後設置這些bean屬性;mvc

  2. 接着會執行ioc容器的初始化,經過反射的方式去完成XmlWebApplicationContext的建立;app

  3. 在調用refresh方法後,DispatchServlet的initStrategies()方法被調用。由它完成springmvc框架各部分的初始化,好比HandlerMapping、ViewResolver等。框架

springmvc初始化

3. 請求處理

FrameworkServlet重寫了HttpServlet的一系列請求方法,請求首先會被FrameworkServlet的processRequest()接收,通過DispatcherServle的doService(),最終由doDispatch()完成請求處理。doDispatch()方法是springmvc框架中最核心的部分,主要包括:spa

1. 準備ModelAndView
2. 調用getHandler()來處理HTTP請求xml

首先會查詢HandlerMappings,它包含了一系列從URL請求到Controller的映射。基於註解配置的springmvc使用的是DefaultAnnotationHandlerMapping。getHandler()最終會返回一個HandlerExecutionChain對象,其中包含了最終的Controller和定義的一個攔截器鏈。對象

3. 經過HandlerAdapter的handle()來觸發Controller中方法的調用,最後返回ModelAndView對象繼承

這個ModelAndView對象由相應的視圖解析器解析出視圖對象並由視圖對象完成頁面的渲染呈現。get

springmvc請求處理

相關文章
相關標籤/搜索