总:使用了 SpringMVC 后,所有的请求都需要经过 DispatcherServlet 前端控制器,该类中提供了一个 doDispatch 方法,有关请求处理和结果响应的所有流程都在该方法中完成

分:

首先,借助于 HandlerMapping 处理器映射器得到处理器执行链,里面封装了 HandlerMethod代表目标 Controller 的方法,同时还通过一个集合记录了要执行的拦截器

接下来,会根据 HandlerMethod 获取对应的 HandlerAdapters 处理器适配器,里面封装了参数解析器以及结果处理器

然后,执行拦截器的 preHandle 方法

接下来是核心,通过 HandlerAdapter 处理器适配器执行目标 Controller 的方法,在这个过程中会通过参数解析器和结果处理器分别解析浏览器提交的数据以及处理 Controller 方法返回的结果

然后,执行拦截器的 postHandle 方法

最后处理响应,在这个过程中如果有异常抛出,会执行异常的逻辑,这里还会执行全局异常处理器的逻辑,并通过视图解析器 ViewResolver 解析视图,再渲染视图,最后再执行拦截器的afterCompletion