Spring MVC流程
具體流程
1.請求離開客戶端,帶上用戶所請求內容的信息,如url、參數等
2.請求到達DispatcherServlet,這是一個前端控制器,一個用於調度的Servlet,此時它的職責是,將請求發送給不同的控制器(controller)
3.請求到達Controller後卸下負載(信息),等待Controller處理,而Controller完成邏輯處理,生成一些信息,稱為Model(模型),這種原始的信息需要進行格式化以便呈現給用戶(例如HTML的方式)。
4.Controller將Model打包,標示用於渲染的視圖名,連同請求一起返送給DispatcherServlet
備註: 調度完全由DispatcherServlet處理,實現Controller和View的解耦
此視圖名不是真實視圖名,而是邏輯名稱
5.Dispatcher Servlet通過view resolver(視圖解析器)得出真實視圖名
6.對應的視圖通過Model渲染出輸出
7.輸出通過響應對象返回給客戶端
容器間的關系:
web容器->servlet容器(servlet上下文)->spring容器->spring MVC子容器
常用的servlet容器: Tomcat,值得註意的是SpringBoot默認使用Tomcat作為嵌入式的Servlet容器;
-------------------------------------------------------------------------
項目操作流程
配置DispatcherServlet
前提:
1.javax.servlet.ServletContainerInitializer用來配置servlet容器 s
2.SpringServletContainerInitializer實現了它 s1實現s
3.SpringServletContainerInitializer查找實現WebApplicationInitializer的類 s1查找w
4.AbstractAnnotationConfigDispatcherServletInitializer實現WebApplicationInitializer w1實現w
同時它能創建DispathcerServlet,DispathcerServlet啟動時會創建Spring應用上下文
其實AbstractAnnotationConfigDispatcherServletInitializer不僅創建DispatcherServlet,也會創建ContextLoaderListener
DispatcherServlet: 創建spring應用上下文,加載屬於web組件的bean,例如控制器、視圖解析器及處理器映射 getServletConfigClasses
ContextLoaderListener: 創建??應用上下文,加載其他bean,例如驅動應用後端的中間層和數據層組件 getRootConfigClasses
啟用Spring MVC
SpittrWebAppInitializer
WebConfig
@Configuration
@EnableWebMvc
內部配置視圖解析器 @Bean
重寫對靜態資源的處理
RootConfig
Spring MVC流程