我们在controller里面经常这样return一个ModelAndView: return new ModelAndView('user', 'model', model);
DispatcherServlet靠ViewResolver把user解析为/WEB-INF/jsp/user.jsp:
Spring MVC它使用ViewResolver进行视图解析,让用户在浏览器中渲染模型。ViewResolver是一种开箱即用的技术,能够解析JSP、Velocity模板和XSLT等多种视图。
Spring处理视图最重要的两个接口是ViewResolver和View。ViewResolver接口在视图名称和真正的视图之间提供映射; 而View接口则处理请求将真正的视图呈现给用户。
1.InternalResourceViewResolver:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
InternalResourceViewResolver的工作很简单:
在视图逻辑名前面加上prefix,后面加上suffix;
<bean id="myViewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<property name="order" value="1"/>
<property name="basename" value="views"/>
</bean>
把视图逻辑名和真实文件的映射关系放在配置文件中,通常情况下,配置文件会定义在classpath下的properties文件中,默认的文件名字是views.properties。
3.XmlViewResolver
XML视图解析器。它实现了ViewResolver接口,接受相同DTD定义的XML配置文件作为Spring的XML bean工厂。
4.ContentNegotiatingViewResolver
内容谈判视图解析器