<?xml version=
"1.0"
encoding=
"UTF-8"
?>
<beans xmlns=
"http://www.springframework.org/schema/beans"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:p=
"http://www.springframework.org/schema/p"
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"
/>
<bean
class
=
"org.springframework.web.servlet.view.ResourceBundleViewResolver"
>
<property name=
"basename"
>
<value>spring-views</value>
</property>
<property name=
"order"
value=
"0"
/>
</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的作用相同。