SpringMVC在web上運行過程分析:
1:SpringMVC是運行在IOC容器的基礎上的,如果要在web容器上啟動IOC容器,需要Spring為IOC設計一個啟動過程,把IOC容器導入,并且在WEB容器上建立起來。
以web.xml來分析,springMVC的啟動類是ContextLoaderListener,
ContextLoaderListener extends ContextLoader implements ServletContextListener
這個監(jiān)聽器是Spring提供的類。實現(xiàn)了ServletContextListener接口,里面重寫了兩個方法:
contextInitialized:在這個方法里面初始化了initWebApplicationContext。最后是通過ContextLoad來實例化獲取了WebApplicationContext。
public void contextInitialized(ServletContextEvent event) {
????initWebApplicationContext(event.getServletContext());
}
整個過程是:首先從servlet事件中獲取到了ServletContext,然后是讀取web.xml中的配置文件,接著ContextLoad會實例化WebApplicationContext,并完成載入和初始化的過程。這個WebApplicationContext載入完成后,就會綁定在ServletContext上。這樣就會完成全局的一個應用上下文。
2:請求流程
1:用戶的http請求會發(fā)送至前端的dispatchServlet上
2:DispatcherServlet收到請求后就會去調(diào)用HandlerMapping去處理請求
3:HandlerMapping會根據(jù)具體的url來找到對應的處理器,生成處理器對象及處理器攔截器(如果有則生成)一并返回給DispatcherServlet。
4:DispatchServlet通過HandlerAdapt處理器適配器調(diào)用處理器。
5:執(zhí)行處理器(Controller)執(zhí)行完畢后,返回的是ModelAndView。
6:DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器。
7:ViewReslover解析后返回具體View。
8:DispatcherServlet對View進行渲染視圖(即將模型數(shù)據(jù)填充至視圖中)。
9: DispatcherServlet響應用戶。