写在最前,本文中的源码是4.2.3版本的源码,针对的是JstlView。
视图解析的过程即DispatcherServlet的doDispatch()方法的调用的processDispatchResult();
1,processDispatchResult()里,调用DispatchServlet的render()方法;
2,render()方法里,调用DispatchServlet的resolveViewName()方法,把配置文件里注册的全部ViewResolver对象添加进来,寻找合适的ViewResolver对象;
3,resolveViewName()方法,调用InternalResourceViewResolver的resolveViewName()方法(也是AbstractCachingViewResolver的该方法,因为InternalResourceViewResolver继承UrlBasedViewResolver,
而UrlBasedViewResolver继承AbstractCachingViewResolver);
4,AbstractCachingViewResolver的resolveViewName()方法里,AbstractCachingViewResolver的createView调用UrlBasedViewResolver的loadView(),loadView()方法里初始化了一个View对象,该对象是一个JstlView,里面
含有对应的view视图的路径,而且含有attributeMap;
时间: 2024-11-08 22:09:39