Spring 框架中 ModelAndView、Model、ModelMap 的区别
- Model
Model 是一个接口, 其实现类为ExtendedModelMap,继承了ModelMap类。 
public class ExtendedModelMap extends ModelMap implements Model
- ModelMap
ModelMap的声明格式: 
public class ModelMap extends LinkedHashMap<String, Object>
ModelMap对象主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可,他的作用类似于request对象的setAttribute方法的作用:用来在一个请求过程中传递处理的数据。ModelMap或者Model通过addAttribute方法向页面传递参数,其中addAttribute方法参数有多种方式:
public ModelMap addAttribute(String attributeName, Object attributeValue){...}
public ModelMap addAttribute(Object attributeValue){...}
public ModelMap addAllAttributes(Collection<?> attributeValues) {...}
public ModelMap addAllAttributes(Map<String, ?> attributes){...}
在页面上可以通过el表达式语言$attributeName等系列数据展示标签获取并展示modelmap中的数据。
modelmap本身不能设置页面跳转的url地址别名或者物理跳转地址,那么我们可以通过控制器方法的字符串返回值来设置跳转url地址别名或者物理跳转地址。
- ModelAndView
ModelAndView对象有两个作用: 
- 设置转向地址,这也是ModelAndView和ModelMap的主要区别。设置方式如下所示:
 
ModelAndView view = new ModelAndView("path:ok");
或者通过setViewName方式:
public void setViewName(String viewName){...}
- 将控制器方法中处理的结果数据传递到结果页面,也就是把在结果页面上需要的数据放到ModelAndView对象中即可,其作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。通过以下方法向页面传递参数:
 
public ModelAndView addObject(String attributeName, Object attributeValue){...}
public ModelAndView addObject(Object attributeValue){...}
在页面上也是可以通过el表达式语言$attributeName等系列数据展示标签获取并展示ModelAndView中的数据。
- 使用方式如下:
 
- ModelMap
ModelMap的实例是spirng mvc框架自动创建并作为控制器方法参数传入,用户无需自己创建。 
public String xxxxmethod(String someparam,ModelMap model)
{
     //省略方法处理逻辑若干
     //将数据放置到ModelMap对象model中,第二个参数可以是任何java类型
      model.addAttribute("key",someparam);
         ......
     //返回跳转地址
      return "path:handleok";
}
- ModelAndView
ModelAndView的实例是由用户手动创建的,这也是和ModelMap的一个区别。 
public ModelAndView xxxxmethod(String someparam)
{
     //省略方法处理逻辑若干
      //构建ModelAndView实例,并设置跳转地址
      ModelAndView view = new ModelAndView("path:handleok");
      //将数据放置到ModelAndView对象view中,第二个参数可以是任何java类型
      view.addObject("key",someparam);
    ......
     //返回ModelAndView对象view
      return view;
}
												
											Spring 框架中 ModelAndView、Model、ModelMap 的区别的更多相关文章
- Spring框架中ModelAndView、Model、ModelMap区别
		
原文地址:http://www.cnblogs.com/google4y/p/3421017.html SPRING框架中ModelAndView.Model.ModelMap区别 注意:如果方法 ...
 - Spring框架中ModelAndView、Model、ModelMap区别 (转)
		
原文地址:http://www.cnblogs.com/google4y/p/3421017.html SPRING框架中ModelAndView.Model.ModelMap区别 注意:如果方法 ...
 - SPRING框架中ModelAndView、Model、ModelMap区别及详细分析
		
转载内容:http://www.cnblogs.com/google4y/p/3421017.html 1. Model Model 是一个接口, 其实现类为ExtendedModelMap,继承了M ...
 - Spring框架中ModelAndView、Model、ModelMap的区别
		
转自:http://blog.csdn.net/liujiakunit/article/details/51733211 1. Model Model 是一个接口, 其实现类为ExtendedMode ...
 - springboot中model,modelandview,modelmap的区别与联系
		
springboot 中Model,ModelAndView,ModelMap的区别与联系 Model是一个接口,它的实现类为ExtendedModelMap,继承ModelMap类 public c ...
 - 细说shiro之五:在spring框架中集成shiro
		
官网:https://shiro.apache.org/ 1. 下载在Maven项目中的依赖配置如下: <!-- shiro配置 --> <dependency> <gr ...
 - 【Spring】8、Spring框架中的单例Beans是线程安全的么
		
看到这样一个问题:spring框架中的单例Beans是线程安全的么? Spring框架并没有对单例bean进行任何多线程的封装处理.关于单例bean的线程安全和并发问题需要开发者自行去搞定.但实际上, ...
 - Spring5源码解析-Spring框架中的单例和原型bean
		
Spring5源码解析-Spring框架中的单例和原型bean 最近一直有问我单例和原型bean的一些原理性问题,这里就开一篇来说说的 通过Spring中的依赖注入极大方便了我们的开发.在xml通过& ...
 - Spring 框架中Http请求处理流程
		
Spring Web http request请求流程: 首先介绍这边你需要知道的继承体系,DispacherServlet继承自FrameworkServlet,FrameworkServlet继承 ...
 
随机推荐
- Oracle11g温习-第五章:数据字典
			
1.数据字典(Data dictionary)的功能 1) central of oracle database 每个oracle数据库的核心 2) descr ...
 - PKU Judge Online 安装指南
			
一 安装 JDK 1.5 1 下载 到 Sun 官方网站( http://java.sun.com/j2se/1.5.0 /download.jsp )下载 j2sdk ,注意下载为 JDK 5.0 ...
 - JavaScript 运行机制详解:Event Loop——续
			
转自:http://www.ruanyifeng.com/blog/2014/10/event-loop.html 五.定时器 除了放置异步任务的事件,"任务队列"还可以放置定时事 ...
 - 管道pipe与dup结合使用
			
前面的例子中,子进程可以直接共享父进程的文件描述符.但是如果子进程调用exec函数执行另一个应用程序时,就不能再共享了. 这种情况下可以将子进程中的文件描述符重定向到标准输入,当新执行的程序从标准输入 ...
 - 管道的创建与读写pipe
			
1.管道的创建 #include <unistd.h> int pipe(int pipefd[2]); linux下创建管道可以通过函数pipe来完成.该函数如果调用成功,数组中将包含两 ...
 - kill prefix extra,endo out 1
			
1●extra 超过外面的, 以外的,外面 的 2●endo 内部
 - BZOJ1652 [Usaco2006 Feb]Treats for the Cows
			
蒟蒻许久没做题了,然后连动规方程都写不出了. 参照iwtwiioi大神,这样表示区间貌似更方便. 令f[i, j]表示i到j还没卖出去,则 f[i, j] = max(f[i + 1, j] + v[ ...
 - WEB-WELCOME-FILE-LIST
			
当用户在浏览中输入的UTL不包含某个servlet 名或JSP页面的时候,welecome-file-list元素可以指定默认的文件. (即也就是输入:http://hostip:port/webAp ...
 - QRCodeHelper 二维码生成
			
QRCodeHelper 二维码生成 using System; using System.Drawing; using ThoughtWorks.QRCode.Codec; using System ...
 - 数据结构(C语言)关于树、二叉树、图的基本操作。
			
1) 编写算法函数int equal(tree t1, tree t2),判断两棵给定的树是否等价: int equal(tree t1,tree t2) { int k; if(t1==NULL&a ...