📜  Spring MVC-Xml视图解析器示例(1)

📅  最后修改于: 2023-12-03 15:35:03.475000             🧑  作者: Mango

Spring MVC-Xml视图解析器示例

在 Spring MVC 中,视图解析器是将控制器方法返回的逻辑视图名称解析成实际视图对象的组件之一。Xml视图解析器是其中一种可选的视图解析器,它通过读取 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>

在上述配置中:

  • 定义了一个 id 为 "xmlViewResolver" 的视图解析器 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>

在上述示例配置中:

  • 定义了两个视图 bean,分别 id 为 "userView" 和 "orderView";
  • "userView" 的实现类为 org.springframework.web.servlet.view.JstlView,它将视图名称解析为 JSP 视图;
  • "orderView" 的实现类为 org.springframework.web.servlet.view.InternalResourceView,它将视图名称解析为内部资源视图;
  • 两个视图 bean 分别配置了视图文件路径。
使用 Xml 视图解析器

在 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 MVC 中使用 Xml 视图解析器,并将其配置成 Spring 中的一个 bean,同时也介绍了如何给 Xml 视图解析器提供视图定义 XML 文件,以及如何在控制器方法中使用视图名称返回对应的视图。视图解析器的另外更多实现参考:Spring 中的视图解析器