一、视图解析过程
(1)根据返回值找到对应的返回值处理器,一般是ViewNameMethodReturnValueHandler(判断返回值是否是字符串)。
(2)所有数据都会被放在ModeAndViewContainer中,包括方法中的视图地址和Model。
(3)控制器方法执行完后都会返回ModelAndView对象,然后再进行渲染。
在(3)的渲染前,会根据返回值的视图名找到对应的视图解析器,然后利用视图解析器创建View对象。
RedirectView如何渲染?先拼接URL地址,然后使用原生Servlet的sendDirect方法。
InternalResourceView如何渲染?使用原生Servlet的getRequestDispatcher方法。
如果不是上述两个View对象,则创建ThymeleafView对象,然后取出Reques、Session、ServletContext域中的数据并使用模板引擎进行渲染。
二、视图对象
视图对象提供渲染方法