JavaEE——Spring Web MVC启动流程

摘要:

web容器正是通过ContextLoaderListener和dispatcherServlet这两个配置才和spring管理起来。ContextLoaderListener与web容器的ServletContext关联,为Spring的IOC容器提供了一个宿主环境。在建立起IOC容器体系之后,把DispatcherServlet作为SpringMVC处理web请求的转发器建立起来,完成响应http请求的准备。

SpringMVC启动过程大致分为两个阶段:

第一阶段.ContextLoaderListener初始化,实例化IOC容器,并将此容器注册到ServletContext中。

第二阶段DispatcherServlet初始化,建立自己的上下文,也注册到ServletContext中。

一、servlet注册

JavaEE——Spring Web MVC启动流程

(1)上图为servlet在web.xml中的配置

(2)DispatchServlet本质上是一个Servlet,web容器启动的时候,servlet也会初始化,其init方法被调用。以'/'结尾的action都让org.springframework.web.servlet.DispatcherServlet这个类来处理,这时servlet不用初始化,而是交给容器去处理。

二、IoC容器创建

(1)loc容器启动流程

ContextLoaderListener实现ServletContextListener,这个接口里面的方法会结合web容器的生命周期被调用。因为ServletContextListener是ServletContext的监听者,如果ServletContext发生变化,会触发相应的事件,而监听者一直对这些事件进行监听,如果接受到了监听的事件,就会作于相应处理。例如在服务器启动,ServletContext被创建的时候,ServletContextListener的contextInitialized()方法被调用,从而拉开了初始化Spring IOC容器的序幕。

(2)配置loc容器

JavaEE——Spring Web MVC启动流程

三、bean初始化

(1)bean的介绍

Spring Bean是被实例的,组装的及被Spring 容器管理的Java对象。

Spring 容器会自动完成@bean对象的实例化。

创建应用对象之间的协作关系的行为称为:装配(wiring),这就是依赖注入的本质。

(2)bean的配置——自动化装配bean

1.组件扫描(Configuration scanning):Spring 会自动发现应用上下文中所创建的bean。
2.自动装配(autowiring):Spring自动满足bean之间的依赖。

JavaEE——Spring Web MVC启动流程

JavaEE——Spring Web MVC启动流程

四、MVC的流程

(1)MVC的介绍

 MVC即Model-View-Controller,将应用按照Model(模型)、View(视图)、Controller(控制)这样的方式分离。

(2)Spring MVC的工作流程

JavaEE——Spring Web MVC启动流程

1、用户发送请求至前端控制器DispatcherServlet。

2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。

3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

4、 DispatcherServlet调用HandlerAdapter处理器适配器。

5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。

6、Controller执行完成返回ModelAndView。

7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。

8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器。

9、ViewReslover解析后返回具体View.

10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。 

11、DispatcherServlet响应用户。

相关文章: