Spring MVC 四 视图解析
Spring MVC通过从视图解析器返回的逻辑视图名发现的视图实现
Spring MVC视图解析器有4种
1.InternalResourceViewResolver 将逻辑视图名解析为一个用模板文件(如jsp和Velocity模板)渲染的视图对象
2.BeanNameViewResolver 在spring容器内查找实现了View接口的Bean,设置Bean的名称为逻辑视图名称
3.ResourceBundleViewResolver 使用资源捆绑将视图名映射为View接口的实现
4.XmlViewResolver 从一个XML文件中解析视图Bean,这个文件时从应用上下文中分离出来的
假设存在/WEB-INF/jsp/demo.jsp页面
1,InternalResourceViewResolver
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
2,BeanNameViewResolver
<bean id="viewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
当控制器返回一个以"oneView"为逻辑视图名的ModelAndView时,BeanNameViewResolver会去寻找一个id为"oneView"的bean
<bean id="oneView" class="com.demo.OneView"/>
3,XmlFileViewResolver
与BeanNameViewResolver相同,但目标Bean定义在spring容器外部
<bean id="viewResolver" class="org.springframework.web.servlet.view.XmlFileViewResolver">
<property name="location">
<value>/WEB-INF/demo-view.xml</value>
</property>
</bean>
4,ResouceBundleViewResolver 有助于实现国际化
在properties文件内管理视图定义
<bean id="viewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<property name="basename" value="views"/>
</bean>
在views.property文件内放置如下一行
oneView.class=com.demo.OnView
在一个应用上下文中可以使用多个视图解析器,然后定义order属性来实现优先级
InternalResourceViewResolver解析器总是排在最后