public interface View接口和public interface ViewResolver接口介绍

在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文件。

posted @   文采杰出  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示