Spring MVC视图解析器方式

在Spring MVC应用程序中,经常需要应用一些视图解析器策略来解析视图名称,三个视图解析器:InternalResourceViewResolver、ResourceBundleViewResolver和XmlViewResolver。

<?xml version= "1.0"  encoding= "UTF-8"  ?>
        xmlns:context= "http://www.springframework.org/schema/context"
        xmlns:mvc= "http://www.springframework.org/schema/mvc"
        xsi:schemaLocation="http: //www.springframework.org/schema/beans
        http: //www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http: //www.springframework.org/schema/context
        http: //www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd">
 
     <!-- 扫描web包,应用Spring的注解 -->
     <context:component-scan base- package = "com.qunar.training" />
     
    <!--方式一:-->
    <!-- 使用ResourceBundleViewResolver基于“.properties”文件中的视图bean来解析“视图名称”。 默认地,ResourceBundleViewResolver将从位于项目class路径根目录下的文件views.properties中加载视bean,不过,这个位置可以通过“basename”属性覆盖 
-->
     <bean class = "org.springframework.web.servlet.view.ResourceBundleViewResolver" >
         <property name= "basename" >
             <value>spring-views</value>
         </property>
         <property name= "order"  value= "0"  />
     </bean>
  将每个视图bean按普通的资源绑定样式(键-值对)进行声明。其中:

(1)“welcome”是要匹配的视图名称

(2)“.(class)”是视图的类型

(3)“.url”属性是视图的url位置

文件:spring-views.properties

注意:要将这个“spring-views.properties”文件放到项目的class路径下。

?
welcome.( class )=org.springframework.web.servlet.view.JstlView
welcome.url=/WEB-INF/pages/welcome.jsp

执行过程:

当控制器返回一个名为“welcome”的视图时,ResourceBundleViewResolver将在“spring-views.properties”文件中查找以“welcome”起始的键,并返回相对应的视图URL“/WEB-INF/pages/welcome.jsp”给DispatcherServlet。





 
     <bean id= "viewResolver"
           class = "org.springframework.web.servlet.view.InternalResourceViewResolver"  >
         <property name= "prefix" >
             <value>/WEB-INF/pages/</value>
         </property>
         <property name= "suffix" >
             <value>.jsp</value>
         </property>
         <property name= "order"  value= "2"  />
     </bean>
 
</beans>

加上目录前缀/WEB-INF/jsp/和文件名称后缀.jsp。例如结果返回的viewName为helloworld,则对应的实际jsp为/WEB-INF/jsp/helloworld.jsp

当返回的viewName的前缀为forward:时,spring mvc将结果通过forward的方式转到对应的视图,例如forward:helloworld。这也是spring mvc缺省的使用模式。

当返回的viewName的前缀为redirect:时,spring mvc将结果通过redirect的方式转到对应的视图。例如redirect:helloworld

 

InternalResourceViewResolver为UrlBasedViewResolver的子类,它将InternalResourceView作为缺省的View类,如果当前classpath中有jstl的jar包时则使用JstlView作为缺省的view来渲染结果。因此以下使用InternalResourceViewResolver的定义应该和之前使用UrlBasedViewResolver定义的viewresolver的作用相同。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_夜半钟声到客船

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值