核心类与接口- DispatcherServlet 前置控制器- HandlerMapping 请求映射(到Controller)- HandlerAdapter 请求映射(到Controller类的方法上)- Controller 控制器- HandlerIntercepter ...
核心类与接口- DispatcherServlet 前置控制器启动过程
1 /** 2 * Initialize the strategy objects that this servlet uses. 3 * <p>May be overridden in subclasses in order to initialize further strategy objects. 4 */ 5 protected void initStrategies(ApplicationContext context) { 6 initMultipartResolver(context); 7 initLocaleResolver(context); 8 initThemeResolver(context); 9 initHandlerMappings(context);10 initHandlerAdapters(context);11 initHandlerExceptionResolvers(context);12 initRequestToViewNameTranslator(context);13 initViewResolvers(context);14 initFlashMapManager(context);15 }
SpringMVC利用Spring的注入特性初始化资源文件,只需要调用setPropertyValues方法就可将contextConfigLocation属性设置到对应实例中,也就是以依赖注入的方式初始化属性。时序图如下(盗图):官网上的图涉及到核心类与接口的过程描述:客户端浏览器发送http请求,被`DispatcherServlet`捕获,调用关键的doDispatch方法,遍历所有注册为`Controller`的bean,为请求寻找关联映射,其中遍历查找的函数getHandler和getHandlerAdapter的源码:
找到匹配的映射后`HandlerAdapter`会依次调用preHandle、handle(返回ModelAndView)、
postHandle方法,所有步骤完成后调用processDispatchResult函数处理结果,并返回View给客户端。postDispatchResult函数和其中调用的render函数源码如下:
配置实例目录结构 -SpringMVCDemo
dispatcher-servlet.WelcomeController
原标题:SpringMVC深入理解
关键词:Spring
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。