SpringMVC在web上运行过程分析:
1:SpringMVC是运行在IOC容器的基础上的,如果要在web容器上启动IOC容器,需要Spring为IOC设计一个启动过程,把IOC容器导入,并且在WEB容器上建立起来。
以web.xml来分析,springMVC的启动类是ContextLoaderListener,
ContextLoaderListener extends ContextLoader implements ServletContextListener
这个监听器是Spring提供的类。实现了ServletContextListener接口,里面重写了两个方法:
contextInitialized:在这个方法里面初始化了initWebApplicationContext。最后是通过ContextLoad来实例化获取了WebApplicationContext。
public void contextInitialized(ServletContextEvent event) {
initWebApplicationContext(event.getServletContext());
}
整个过程是:首先从servlet事件中获取到了ServletContext,然后是读取web.xml中的配置文件,接着ContextLoad会实例化WebApplicationContext,并完成载入和初始化的过程。这个WebApplicationContext载入完成后,就会绑定在ServletContext上。这样就会完成全局的一个应用上下文。
2:请求流程
1:用户的http请求会发送至前端的dispatchServlet上
2:DispatcherServlet收到请求后就会去调用HandlerMapping去处理请求
3:HandlerMapping会根据具体的url来找到对应的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4:DispatchServlet通过HandlerAdapt处理器适配器调用处理器。
5:执行处理器(Controller)执行完毕后,返回的是ModelAndView。
6:DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
7:ViewReslover解析后返回具体View。
8:DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
9: DispatcherServlet响应用户。