一、SpringMVC整体流程
先来看看SpringMVC的工作流程图:
下面来看看每一步都是在做什么:
第一步:用户发起request请求,请求至DispatcherServlet前端控制器。
第二步:DispatcherServlet前端控制器请求HandlerMapping处理器映射器查找Handler。
DispatcherServlet:前端控制器,相当于中央调度器,各各组件都和前端控制器进行交互,降低了各组件之间耦合度。
第三步:HandlerMapping处理器映射器,根据url及一些配置规则(xml配置、注解配置)查找Handler,将Handler返回给 DispatcherServlet前端控制器。
第四步:DispatcherServlet前端控制器调用适配器执行Handler,有了适配器通过适配器去扩展对不同Handler执行方式(比如: 原始servlet开发,注解开发)
第五步:适配器执行Handler。Handler是后端控制器,当成模型。
第六步:Handler执行完成返回ModelAndView
ModelAndView是springmvc的一个对象,对Model和view进行封装。
第七步:适配器将ModelAndView返回给DispatcherServlet
第八步:DispatcherServlet调用视图解析器进行视图解析,解析后生成view。视图解析器根据逻辑视图名解析出真正的视图。
View:springmvc视图封装对象,提供了很多view,比如:jsp、freemarker、pdf、excel。
第九步:ViewResolver视图解析器给前端控制器返回view
第十步:DispatcherServlet调用view的渲染视图的方法,将模型数据填充到request域 。
第十一步:DispatcherServlet向用户响应结果(jsp页面、json数据。)
在这里面有几个组件要说一下:
- DispatcherServlet:前端控制器,由springmvc提供
- HandlerMappting:处理器映射器,由springmvc提供
- HandlerAdapter:处理器适配器,由springmvc提供
- Handler:处理器,需要程序员开发
- ViewResolver:视图解析器,由springmvc提供
- View:真正视图页面需要由程序编写
由上面springMVC的工作流程图我们可以知道,其实springMVC的核心就是DispatcherServlet,所以接下来主要就是通过源码来看看DispatcherServlet是怎么工作的。
FROM