springMVC ModelAndView 作用与功能解析

Spring mvc视图机制

所有的web应用的mvc框架都有它定位视图的方式。Spring提供了视图解析器供你在浏览器中显示模型数据,而不必被拘束在特定的视图技术上。

Spring的控制器Controller会返回一个ModelAndView的实例。Spring根据ModelAndView实例中的View和Model把信息反馈给用户。Spring中的视图是以名字为标识的,ViewResolver是通过名字来解析view的。Spring提供了多种视图和视图解析器。

A、ModelAndView

org.springframework.web.servlet.ModelAndView

public class ModelAndView extends Object

ModelAndView如其名称所示,它代表了Spring Web MVC中呈现画面时所使用的Model与View,由于Java一次只能返回一个物件,所以ModelAndView的作用封装这两个物件,以方便您一次返回Model与View这两个物件。

构造方法

ModelAndView(String viewName)

Convenient constructor when there is no model data to expose.

最简单的ModelAndView是只有View的名称,之后View名称被View resolver,也就是org.springframework.web.servlet.View的实例解析,例如 InternalResourceView或JstlView等等。

ModelAndView(String viewName, Map model)

Creates new ModelAndView given a view name and a model.

如果您要返回呈现画面时所需的Model资料,则可以使用Map来收集呈现View时所需的资料,然后在建构ModelAndView作为建构时的参数。

ModelAndView(String viewName, String modelName, Object modelObject)

Convenient constructor to take a single model object.

返回单个model时使用。

B、ViewResolver(视图解析器)

org.springframework.web.servlet.ViewResolver

public interface ViewResolver

现在我们有了view名称,也有了显示时需要的model资料,那么我们如何显示view了。这就需要用到ViewResolver,它提供了从视图名称到实际视图的映射。

(例如我们得到的view名称为test,通过ViewResolver我们把它映射到/WEB-INF/jsp/test.jsp的资源上,当然也可以把test映射到test.pdf的资源上,这部分工作由ViewResolver来完成,但是具体如何显示test.jsp或test.pdf,就需要View来实现了)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是关于 Spring MVC 的 ModelAndView 的中文回答: Spring MVC 的 ModelAndView 是一个用于存储模型数据和视图信息的类。它将数据和视图名封装在一起,以便将它们传递给控制器的处理方法,然后由控制器将模型数据渲染到视图中。 具体而言,ModelAndView 由两个部分组成:模型(model)和视图(view)。模型部分是一个 Map 对象,用于存储要传递给视图的数据。视图部分是一个字符串,表示要渲染的视图的名称。 在控制器的处理方法中,可以使用 ModelAndView 对象来设置模型数据和视图名称。例如: ``` @RequestMapping("/home") public ModelAndView home() { ModelAndView modelAndView = new ModelAndView("home"); modelAndView.addObject("message", "欢迎访问我的网站!"); return modelAndView; } ``` 在上面的例子中,我们创建了一个 ModelAndView 对象,将视图名称设置为 "home",并向模型中添加了一条消息数据。然后,我们将 ModelAndView 对象返回给 Spring MVC,它将使用配置的视图解析器将视图名称转换为实际的视图,并将模型数据渲染到该视图中。 在视图中,可以使用 EL 表达式来访问模型数据。例如,在 JSP 中,可以像这样访问消息数据: ``` <h1>${message}</h1> ``` 总的来说,ModelAndView 是一个很方便的类,可以用于封装控制器处理方法的返回结果,包括模型数据和视图名称,从而使得编写控制器方法更加简单和清晰。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值