springmvc运行流程简单解释(源码解析,文末附自己画的流程图)
首先看一下DispatcherServlet结构: 观察HandlerExecutionChain对象的创建与赋值,这个方法用来表示执行这个方法的整条链。 进入getHandler方法: 此时的变量handlerMappings为: 刚好对应我们的三个方法,说明了我们的方法映射全部存放在handlerMappings中,通过遍历handlerMapping来进行操作。 通过HandlerMapping来对HandlerExecutionChain赋值。 执行完这一句参数有,说明获取了一条完整的链,可以来进行执行了,注意此时获取到的是所有拦截器,因为必须要走过所有拦截器。 通过HandlerExecutionChain对象来获取HandlerAdapter对象,通过这个对象进行控制器方法的调用,并返回ModelAndView对象,再通过ModelAndView对象调用解析器创建视图对象,再通过视图对象的渲染方法来进行最终的用户的需求结果处理。 完成这一步后使用ha调用拦截器的preHandle方法,如果放行,则执行handle方法,不放行,则返回: 进入此方法中: 下一步就是执行handler处理方法,执行完方法返回一个ModelAndView对象,使用此对象调用视图解析器创建视图对象,再根据视图对象调用其渲染方法将模型中的数据以特定的格式传输给用户。 继续执行: