从名字上看ModelAndView中的Model代表模型,View代表视图,这个名字就很好地解释了该类的作用。业务处理器调用模型层处理完用户请求后,把结果数据存储在该类的model属性中,把要返回的视图信息存储在该类的view属性中,然后让该ModelAndView返回该Spring MVC框架。框架通过调用配置文件中定义的视图解析器,对该对象进行解析,最后把结果数据显示在指定的页面上。
下面看ModelAndView.Java的代码,如下所示。
package org.springframework.web.servlet;
import Java.util.HashMap;
import Java.util.Map;
public class ModelAndView {
private Object view; //该属性用来存储返回的视图信息
private Map model; //该属性用来存储处理后的结果数据
//下面是一些参数不同的构造函数,用来创建ModelAndView实例
public ModelAndView() {
}
public ModelAndView(View view) {
this.view = view;
}
public ModelAndView(String viewName) {
this.view = viewName;
}
public ModelAndView(View view, Map model) {
this.view = view;
this.model = model;
}
public ModelAndView(String viewName, Map model) {
this.view = viewName;
this.model = model;
}
public ModelAndView(View view, String modelName,
Object modelObject) {
this.view = view;
addObject(modelName, modelObject);
}
public ModelAndView(String viewName, String modelName,
Object modelObject) {
this.view = viewName;
addObject(modelName, modelObject);
}
//view属性的getter、setter方法,可以看出view属性可以是一个View类的实例,也可以是一个String
public void setView(View view) {
this.view = view;
}
public View getView() {
return (this.view instanceof View ? (View) this.view : null);
}
public void setViewName(String viewName) {
this.view = viewName;
}
public String getViewName() {
return (this.view instanceof String ? (String) this.view : null);
}
public boolean isReference() {
return (this.view instanceof String);
}
//下面的方法用来给model属性赋值、或者获取该属性的值,model是一个Map类型的属性
protected Map getModelInternal() {
return this.model;
}
public Map getModel() {
if (this.model == null) {
this.model = new HashMap(1);
}
return this.model;
}
public ModelAndView addObject(String modelName, Object modelObject) {
getModel().put(modelName, modelObject);
return this;
}
public ModelAndView addAllObjects(Map modelMap) {
getModel().putAll(modelMap);
return this;
}
...
}
通过上面的代码可以看出,ModelAndView创建了两个属性view和model,并且创建了获取这两个属性以及给这两个属性赋值的一些方法。view属性可以是View接口的一个实例,也可以是一个String类型的值,所有的视图类都必须实现View接口,在后面的内容中将会讲到;model属性是一个Map类型的值,所以其每一个元素都是一个Key-Value对。
分享到:
相关推荐
Spring+Mybatis框架 ModelAndView 例子
JS当中不能接收ModelAndView的返回值吗?一定要在JSP页面中才能接收吗? 1 方法一 【有效】 可以的,跟el表达式访问方式一样。 示例代码,一个数据展示请求的Action中存入一个userId: @RequestMapping(value="/...
Spring mvc ModelAndView Serviceresponse ibatis
本博客https://blog.csdn.net/qq_40634846有零基础入门SpringMVC,有兴趣的朋友可关注本博客
如果控制器的处理方法返回的是ModelAndView对象,方法体可以向这个对象中添加模型数据和视图。例如之前的例子: @RequestMapping(path="/detail/{userName}") public ModelAndView showDetail(@PathVariable(...
ModelAndView中的模型书不是必须的,根据实际情况决定,如果视图需要数据则可以在ModelAndView添加模型数据 6.下列关于@RequestParam绑定请求参数值的说法正确的是()。 (选择一项) A: Controller方法入参时...
关于springmvc中的ModelAndView的详细代码,可以更好的了解spring。
SSM笔记-处理模型数据 处理模型数据之ModelAndView + 处理模型数据之ModelAttribute + 处理模型数据之 SessionAttributes
SpringMVC将服务器处理后的结果返回并带给浏览器
主要介绍了springmvc处理模型数据ModelAndView过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
弹簧 @Controller @RequestMapping @RequestParam,模型和ModelAndView Spring MVC实践
SpringMVC ModelAndView、Model及Map、@SessionAttributes场景与应用
本次实践内容包括RequestMapping关键字修饰类和方法(请求方式、请求参数&请求头、Ant风格路径)、PathVariable注解、HiddenHttpMethodFilter 过滤器(将Get请求转换成PUT、DELETE请求)、RequestParam 注解、...
ModelAndView详解1
– ModelAndView: 处理方法返回值类型为 ModelAndView时, 方法体即可通过该对象添加模型数据 – Map及Model: 入参为org.springframework.ui.Model、org.springframework.ui.ModelMap 或 Java.uti.Map 时,处理...
Spring的模型-视图-控制器(MVC)框架是...•(6)(7)处理视图映射并返回模型: DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图。 •(8) Http响应:视图负责将结果显示到客户端。
今天小编就为大家分享一篇SpringMVC的ModelAndView传值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
/*ModelAndView view = new ModelAndView("result"); view.addObject("name", request.getParameter("name")); view.addObject("result", "sucess");*/ return new ModelAndView("/Login") ; } }
主要介绍了SpringMVC ModelAndView的用法使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
下面小编就为大家分享一篇浅谈在页面中获取到ModelAndView绑定的值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧