Spring MVC XmlViewResolver配置示例

Spring MVC XmlViewResolver配置示例

原文: https://howtodoinjava.com/spring-mvc/spring-mvc-xmlviewresolver-configuration-example/

在基于 Spring MVC 的应用程序中,请求处理的最后一步是返回逻辑视图名称。 这里DispatcherServlet必须将控制委派给视图模板,以便呈现信息。 该视图模板根据返回的逻辑视图名称决定应呈现哪个视图。 这些视图模板是在 Web 应用程序上下文中声明的一个或多个视图解析器 bean。 这些 bean 必须实现DispatcherServletViewResolver接口才能自动检测到它们。 Spring MVC 附带了几个ViewResolver实现。 在此示例中,我们将查看这样的视图解析器模板,即XmlViewResolver

InternalResourceViewResolver相反,其中每个逻辑视图名称都直接映射到视图的物理位置,在XmlViewResolver的情况下,视图被声明为 Spring bean。 您可以在与 Web 应用程序上下文相同的配置文件中声明视图 Bean,但最好将它们隔离在单独的配置文件中。

默认情况下, XmlViewResolver/WEB-INF/views.xml加载视图 bean,但是可以通过位置属性覆盖此位置。

<bean class="org.springframework.web.servlet.view.XmlViewResolver">
    <property name="location">
        <value>/WEB-INF/admin-views.xml</value>
    </property>
</bean>

admin-views.xml配置文件中,您可以通过设置类名称和属性来将每个视图声明为普通的 Spring bean。 例如

<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="home" class="org.springframework.web.servlet.view.JstlView">
        <property name="url" value="/WEB-INF/jsp/home.jsp" />
    </bean>

    <bean id="admin/home" class="org.springframework.web.servlet.view.JstlView">
        <property name="url" value="/WEB-INF/jsp/admin/home.jsp" />
    </bean>

    <bean id="logOffRedirect" class="org.springframework.web.servlet.view.RedirectView">
        <property name="url" value="home" />
    </bean>
</beans>

上面配置中的前两个 bean 非常明显。 逻辑视图名称home映射到/WEB-INF/jsp/home.jsp,而admin / home映射到/WEB-INF/jsp/admin/home.jsp

第三个 bean 不映射任何物理视图文件,而是将请求重定向到 URL home,该 URL 实际上由 URL/home的控制器处理。 无论控制器将返回什么逻辑名称,都将在 bean 映射中查找该视图,然后获取实际的视图文件。

如果有什么需要更多的解释的话,请问我。

祝您学习愉快!