XmlViewResolver类详解 - ViewResolver系列三
XmlViewResolver是XML视图解析器,它实现了ViewResolver接口,接受相同DTD定义的XML配置文件作为Spring的XML bean工厂。它继承自AbstractCachingViewResolver抽象类,所以它也是支持视图缓存的。通俗来说就是通过xml指定逻辑名称与真实视图间的关系,它从XML配置文件中查找视图实现(默认 XML 配置文件为 /WEB-INF/views.xml)。
使用方法
配置视图解析器
<bean id="viewResolver" class="org.springframework.web.servlet.view.XmlViewResolver"> <property name="location" value="/WEB-INF/views.xml"></property> </bean>
配置视图配置文件views.xml里各项的配置
<bean id="parent-view" class="org.springframework.web.servlet.view.JstlView"> <property name="attributes"> <props> <prop key="title">FlightDeals.com</prop> <prop key="season">Summer</prop> </props> </property> <property name="url" value="/index.jsp"></property> </bean> <bean id="home" parent="parent-view"> <property name="url" value="/WEB-INF/jsp/home.jsp"/> </bean> <bean id="listFlight" parent="parent-view"> <property name="url" value="/WEB-INF/jsp/listFlights.jsp"/> </bean>
例子
(1)在SpringMVC的配置文件中加入XmlViewResolver的bean定义。使用location属性指定其配置文件所在的位置,order属性指定当有多个ViewResolver的时候其处理视图的优先级。
<bean class="org.springframework.web.servlet.view.XmlViewResolver"> <property name="location" value="/WEB-INF/views.xml"/> <property name="order" value="1"/> </bean>
(2)在XmlViewResolver对应的配置文件中配置好所需要的视图定义。在下面的代码中我们就配置了一个名为internalResource的InternalResourceView,其url属性为“/index.jsp”。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="internalResource" class="org.springframework.web.servlet.view.InternalResourceView"> <property name="url" value="/index.jsp"/> </bean> </beans>
(3)定义一个返回的逻辑视图名称为在XmlViewResolver配置文件中定义的视图名称——internalResource。
@RequestMapping("/xmlViewResolver") public String testXmlViewResolver() { return "internalResource"; }
(4)这样当我们访问到上面定义好的testXmlViewResolver处理器方法的时候返回的逻辑视图名称为“internalResource”,这时候Spring就会到定义好的views.xml中寻找id或name为“internalResource”的bean对象予以返回,这里Spring找到的是一个url为“/index.jsp”的InternalResourceView对象。
XmlViewResolver继承自AbstractCachingViewResolver抽象类,所以它也是支持视图缓存的。XmlViewResolver需要给定一个xml配置文件,该文件将使用和Spring的bean工厂配置文件一样的DTD定义,所以其实该文件就是用来定义视图的bean对象的。在该文件中定义的每一个视图的bean对象都给定一个名字,然后XmlViewResolver将根据Controller处理器方法返回的逻辑视图名称到XmlViewResolver指定的配置文件中寻找对应名称的视图bean用于处理视图。该配置文件默认是/WEB-INF/views.xml文件,如果不使用默认值的时候可以在XmlViewResolver的location属性中指定它的位置。XmlViewResolver还实现了Ordered接口,因此我们可以通过其order属性来指定在ViewResolver链中它所处的位置,order的值越小优先级越高。
版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。