企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# Spring MVC `XmlViewResolver`配置示例 > 原文: [https://howtodoinjava.com/spring-mvc/spring-mvc-xmlviewresolver-configuration-example/](https://howtodoinjava.com/spring-mvc/spring-mvc-xmlviewresolver-configuration-example/) 在基于 Spring MVC 的应用程序中,请求处理的最后一步是返回逻辑视图名称。 这里`DispatcherServlet`必须将控制委派给视图模板,以便呈现信息。 该视图模板根据返回的逻辑视图名称决定应呈现哪个视图。 这些视图模板是在 Web 应用程序上下文中声明的一个或多个视图解析器 bean。 这些 bean 必须实现`DispatcherServlet`的`ViewResolver`接口才能自动检测到它们。 Spring MVC 附带了几个`ViewResolver`实现。 在此示例中,我们将查看这样的视图解析器模板,即[`XmlViewResolver`](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/view/XmlViewResolver.html)。 与[`InternalResourceViewResolver`](https://howtodoinjava.com/spring/spring-mvc/spring-mvc-internalresourceviewresolver-configuration-example/)相反,其中每个逻辑视图名称都直接映射到视图的物理位置,在`XmlViewResolver`的情况下,视图被声明为 Spring bean。 您可以在与 Web 应用程序上下文相同的配置文件中声明视图 Bean,但最好将它们隔离在单独的配置文件中。 默认情况下, `XmlViewResolver`从`/WEB-INF/views.xml`加载视图 bean,但是可以通过**位置**属性覆盖此位置。 ```java <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。 例如 ```java <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 映射中查找该视图,然后获取实际的视图文件。 如果有什么需要更多的解释的话,请问我。 **祝您学习愉快!**