📅  最后修改于: 2023-12-03 15:35:03.475000             🧑  作者: Mango
在 Spring MVC 中,视图解析器是将控制器方法返回的逻辑视图名称解析成实际视图对象的组件之一。Xml视图解析器是其中一种可选的视图解析器,它通过读取 XML 文件来实现视图解析。
通过在 Spring 的配置文件中添加如下配置,即可将 Xml 视图解析器注入到 Spring 容器中:
<bean id="xmlViewResolver" class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="location">
<value>/WEB-INF/views.xml</value>
</property>
</bean>
在上述配置中:
org.springframework.web.servlet.view.XmlViewResolver
类作为视图解析器的实现类;location
属性,指定了 Xml 视图解析器读取视图定义的 XML 文件路径。下面是一个包含两个视图定义的 views.xml
文件的示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="userView" class="org.springframework.web.servlet.view.JstlView">
<property name="url" value="/WEB-INF/views/user.jsp"/>
</bean>
<bean id="orderView" class="org.springframework.web.servlet.view.InternalResourceView">
<property name="url" value="/WEB-INF/views/order.jsp"/>
</bean>
</beans>
在上述示例配置中:
org.springframework.web.servlet.view.JstlView
,它将视图名称解析为 JSP 视图;org.springframework.web.servlet.view.InternalResourceView
,它将视图名称解析为内部资源视图;在 Spring MVC 的控制器方法中,通过返回视图名称的方式,可将视图名称返回给 Spring MVC,让 Spring MVC 将其解析为对应的视图。
@Controller
public class UserController {
@RequestMapping(value = "/user", method = RequestMethod.GET)
public String getUserPage() {
return "userView";
}
@RequestMapping(value = "/order", method = RequestMethod.GET)
public String getOrderPage() {
return "orderView";
}
}
在上述示例中:
getUserPage()
和 getOrderPage()
这两个控制器方法,分别返回了 "userView" 和 "orderView" 两个视图名称;通过以上示例,我们了解了如何在 Spring MVC 中使用 Xml 视图解析器,并将其配置成 Spring 中的一个 bean,同时也介绍了如何给 Xml 视图解析器提供视图定义 XML 文件,以及如何在控制器方法中使用视图名称返回对应的视图。视图解析器的另外更多实现参考:Spring 中的视图解析器。