Spring MVC 四 视图解析

Spring MVC 4 视图解析

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解析器总是排在最后