原文: https://howtodoinjava.com/spring-mvc/spring-mvc-xmlviewresolver-configuration-example/
在基于 Spring MVC 的应用程序中,请求处理的最后一步是返回逻辑视图名称。 这里DispatcherServlet
必须将控制委派给视图模板,以便呈现信息。 该视图模板根据返回的逻辑视图名称决定应呈现哪个视图。 这些视图模板是在 Web 应用程序上下文中声明的一个或多个视图解析器 bean。 这些 bean 必须实现DispatcherServlet
的ViewResolver
接口才能自动检测到它们。 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 映射中查找该视图,然后获取实际的视图文件。
如果有什么需要更多的解释的话,请问我。
祝您学习愉快!