Spring MVC InternalResourceViewResolver配置示例

Spring MVC InternalResourceViewResolver配置示例

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

了解如何在 Spring MVC 应用程序中配置InternalResourceViewResolver,这有助于解析基于ViewResolver类实现以及前缀和后缀属性的视图名称。

1. 什么是视图解析器?

在基于 Spring MVC 的应用程序中,请求处理的最后一步是返回逻辑视图名称。 这里DispatcherServlet必须将控制委派给视图模板,以便呈现信息。 该视图模板根据返回的逻辑视图名称决定应呈现哪个视图。

这些视图模板是在 Web 应用程序上下文中声明的一个或多个视图解析器 bean。 这些 Bean 必须实现DispatcherServletViewResolver接口才能自动检测它们。 Spring MVC 带有几个ViewResolver实现。

在此示例中,我们将查看这种视图解析器模板,即InternalResourceViewResolver

2. Spring InternalResourceViewResolver

在大多数 Spring MVC 应用程序中,视图直接映射到模板的名称和位置。 InternalResourceViewResolver有助于映射逻辑视图名称以直接查看特定预配置目录下的文件。

2.1. InternalResourceViewResolver配置

要注册InternalResourceViewResolver,可以在 Web 应用程序上下文中声明此类型的 Bean。

<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 的有效配置。

@Bean
 public ViewResolver configureViewResolver() {
     InternalResourceViewResolver viewResolve = new InternalResourceViewResolver();
     viewResolve.setPrefix("/WEB-INF/jsp/");
     viewResolve.setSuffix(".jsp");

     return viewResolve;
 }

2.2. 视图解析器示例

完成上述配置后,InternalResourceViewResolver将以以下方式解析视图名称homeadmin/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"

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配置和示例有关。

学习愉快!