在Spring MVC中,public interface View 和 public interface ViewResolver 是两个相互关联但功能不同的接口。它们共同在视图解析和渲染过程中发挥作用,但各自承担的责任不同。
-
View 接口
View 接口定义了如何渲染一个特定的视图。它通常包含一个 render 方法,该方法接受一个 ModelMap(或类似的模型数据)和一个 HttpServletRequest/HttpServletResponse 对,然后生成响应的内容。Spring MVC 提供了许多 View 接口的实现,例如 JstlView 用于 JSP,RedirectView 用于重定向,FreeMarkerView 用于 FreeMarker 模板等。 -
ViewResolver 接口
ViewResolver 接口则定义了如何将逻辑视图名称解析为 View 对象的规则。在Spring MVC中,当Controller处理完请求并返回一个逻辑视图名称(通常是一个字符串)时,DispatcherServlet 会使用配置的 ViewResolver 来解析这个逻辑视图名称,并找到对应的 View 对象。然后,DispatcherServlet 会调用该 View 对象的 render 方法来渲染视图。
Spring MVC 同样提供了多种 ViewResolver 的实现,例如 InternalResourceViewResolver 用于解析JSP视图,FreeMarkerViewResolver 用于解析FreeMarker模板等。你也可以实现自定义的 ViewResolver 以满足特殊需求。
示例
假设你有一个Controller方法,它返回一个字符串 "home" 作为逻辑视图名称:
@Controller
public class MyController {
@RequestMapping("/")
public String home() {
return "home";
}
}
在Spring MVC的配置中,你可能配置了一个 InternalResourceViewResolver,它会将 "home" 解析为JSP文件路径(如 /WEB-INF/views/home.jsp):
xml
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
在这个例子中,InternalResourceViewResolver 就是 ViewResolver 的一个实现,它将逻辑视图名称 "home" 解析为一个 JstlView(或类似的 View 实现),该 View 知道如何渲染 /WEB-INF/views/home.jsp JSP文件。
标签:视图,ViewResolver,接口,interface,home,public,View From: https://www.cnblogs.com/DuWenjie/p/18308671