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

原文地址:https://www.cnblogs.com/yanze/p/9486359.html