简单的模拟场景:
1.用户访问的url,就比如一个人进公司,必须要先经过公司的大门才能进去,请求也是一样,它必须先经过Dispatcher Servlet的前端控制器,
2.我们工作需要有工作地点吧(请求需要工作),可是不认路啊(请求需要在哪里被分析),所以我们需要去找到地图,然后在地图上找到地点,在SpringMVC中,从Dispatcher Servlet先找到Handler Mapper,然后Handler Mapper找到工作点的老板(HandlerAdapter)。
3.我们知道怎么找到工作点了,而且路径是从公司大门(Dispatcher Servlet前端控制器)开始的,我们按照地图(HandlerMapper组件里面的信息)的指引找到了安排我们工作的HandlerAdapter。
4.老板指使我们工作,我们身为员工(Handler,也就是请求所对应的事件),工作的内容就控制层(也就是MVC中的C)下请求url所对应的方法,工作完成之后,我们需要提交工作数据呈现给老板看(返回ModelAndView对象给HandlerAdapter)
5.之后老板把你的工作数据贴到公司大门上(将ModelAndView对象返回给DispatcherServlet),再经历一番修饰后呈现给来往的客人看(用户)
详细的工作流程:
1、用户发送请求至前端控制器DispatcherServlet
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(二者组成HandlerExecutionChain),并将其一并返回给DispatcherServlet。
4、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
5、执行处理器(Controller,也叫后端控制器)。
6、Controller执行完成返回ModelAndView
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、ViewReslover解析后返回具体View
10、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet对用户进行响应
看图了解流程:
注:图片来源百度,部分文字理解参照博客园文章和CSDN文章
参考来源:https://www.cnblogs.com/xxzhuang/p/5940709.html