一图胜千言,先上干货。

感觉图画出来后,就没什么好讲的了。。。。

  1. 首先,肯定是有一个 HTTP 请求过来(别问我为什么会有一个 HTTP 请求过来。)

  2. 如果匹配到 DispatcherServlet 的请求映射路径(在 web.xml 中配置,而且一般只有一个),就将请求的信息(包括 URL、HTTP 方法、请求报文、Cookie 等跟请求有关的参数)到 HandlerMapping 中去查询,最终会得到一个执行链(包括处理器和处理器拦截器)。

  3. DispatcherServlet 就拿着这个东西去找 HandlerAdapterHandlerAdapter 就会去找到 Handler 然后进行初始化和校验工作,然后用统一的接口对各种 Handler 进行调用。

  4. Handler 处理完成之后,会返回一个 ModelAndView 对象,HandlerAdapter 把这个对象又拿给 DispatcherServlet ,DispatcherServlet 拿到这个东西也看不懂呀,只好把这个东西给 ViewResolver ,请他帮忙看一下。

  5. ViewResolver 一看,“哦,这不是那谁嘛。” 就让 DispatcherServlet 去找 View 了,Dispatcher 高兴极了,屁颠屁颠的就去找 View 了。

  6. Dispatcher 把 ModelAndView 中的 Model 拆出来,递到 View 的手上,“麻烦您帮我造一个xxx”,View 心想,这小子虽然啥都不会,但是还挺有礼貌的,于是就动手开干了。

  7. View 把视图渲染完成就交给 DispatcherServlet 了, DispatcherServlet 感动的鞠了两个躬才走。 Dispatcher 把 作品 交给 用户,这件差事也就算完成了。