企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# Spring MVC `InternalResourceViewResolver`配置示例 > 原文: [https://howtodoinjava.com/spring-mvc/spring-mvc-internalresourceviewresolver-configuration-example/](https://howtodoinjava.com/spring-mvc/spring-mvc-internalresourceviewresolver-configuration-example/) 了解如何在 Spring MVC 应用程序中配置`InternalResourceViewResolver`,这有助于解析基于`ViewResolver`类实现以及前缀和后缀属性的视图名称。 ## 1\. 什么是视图解析器? 在基于 Spring MVC 的应用程序中,请求处理的最后一步是返回**逻辑视图名称**。 这里`DispatcherServlet`必须将控制委派给视图模板,以便呈现信息。 该**视图模板**根据返回的逻辑视图名称决定应呈现哪个视图。 这些视图模板是在 Web 应用程序上下文中声明的一个或多个**视图解析器** bean。 这些 Bean 必须实现`DispatcherServlet`的`ViewResolver`接口才能自动检测它们。 Spring MVC 带有几个`ViewResolver`实现。 在此示例中,我们将查看这种视图解析器模板,即[`InternalResourceViewResolver`](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/view/InternalResourceViewResolver.html)。 ## 2\. Spring `InternalResourceViewResolver` 在大多数 [**Spring MVC**](https://howtodoinjava.com/spring-mvc-tutorial/) 应用程序中,视图直接映射到模板的名称和位置。 `InternalResourceViewResolver`有助于**映射逻辑视图名称以直接查看特定预配置目录**下的文件。 #### 2.1. `InternalResourceViewResolver`配置 要注册`InternalResourceViewResolver`,可以在 Web 应用程序上下文中声明此类型的 Bean。 ```java <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> ``` 可以通过以下方式在 **Java 配置**中编写类似的配置。 这也是 [**SpringBoot**](https://howtodoinjava.com/spring-boot-tutorials/) 的有效配置。 ```java @Bean public ViewResolver configureViewResolver() { InternalResourceViewResolver viewResolve = new InternalResourceViewResolver(); viewResolve.setPrefix("/WEB-INF/jsp/"); viewResolve.setSuffix(".jsp"); return viewResolve; } ``` #### 2.2. 视图解析器示例 完成上述配置后,`InternalResourceViewResolver`将以以下方式解析视图名称`home`和`admin/home`等。 | 逻辑视图名称 | 实际视图文件 | | --- | --- | | `home` | `/WEB-INF/jsp/home.jsp` | | `admin/home` | `/WEB-INF/jsp/admin/home.jsp` | | `report/main` | `/WEB-INF/jsp/report/main.jsp` | #### 2.3. 映射不同的视图类型 默认情况下,如果在类路径中存在 JSTL 库(即`jstl.jar`),则`InternalResourceViewResolver`将视图名称解析为`JstlView`类型的视图对象。 因此,如果您的视图是带有 JSTL 标签的 JSP 模板,则可以省略`viewClass`属性。 否则,如果您的视图基于图块,则需要提供匹配的`viewClass`,即`org.springframework.web.servlet.view.tiles2.TilesView`。 ## 3\. 如何从控制器返回视图名称 控制器类应以**字符串**形式或`<string>ModelAndView</string>`类的实例的形式返回视图名称。 例如,在给定的控制器类中,它的返回视图名称为`"home"`。 ```java public class HomepageController extends AbstractController{ @Override protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView model = new ModelAndView("home"); return model; } } ``` 将您的查询添加到评论中 - 与 Spring MVC `InternalResourceViewResolver`配置和示例有关。 学习愉快!