转自:http://blog.csdn.net/liujiakunit/article/details/51733211

1. Model

Model 是一个接口, 其实现类为ExtendedModelMap,继承了ModelMap类。

public class ExtendedModelMap extends ModelMap implements Model

2.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地址别名或者物理跳转地址。

3.ModelAndView

ModelAndView对象有两个作用: 
(1). 设置转向地址,这也是ModelAndView和ModelMap的主要区别.设置方式如下所示:

ModelAndView view = new ModelAndView("path:ok");

  或者通过setViewName方式:

public void setViewName(String viewName){...}

(2). 将控制器方法中处理的结果数据传递到结果页面,也就是把在结果页面上需要的数据放到ModelAndView对象中即可,其作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。通过以下方法向页面传递参数:

public ModelAndView addObject(String attributeName, Object attributeValue){...}
public ModelAndView addObject(Object attributeValue){...}

在页面上也是可以通过el表达式语言$attributeName等系列数据展示标签获取并展示ModelAndView中的数据。

4. 使用方式如下:

(1) ModelMap 
ModelMap的实例是spirng mvc框架自动创建并作为控制器方法参数传入,用户无需自己创建。

public String xxxxmethod(String someparam,ModelMap model)
{
//省略方法处理逻辑若干
//将数据放置到ModelMap对象model中,第二个参数可以是任何java类型
model.addAttribute("key",someparam);
......
//返回跳转地址
return "path:handleok";
}

(2) 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的区别的更多相关文章

  1. Spring框架中ModelAndView、Model、ModelMap区别

    原文地址:http://www.cnblogs.com/google4y/p/3421017.html SPRING框架中ModelAndView.Model.ModelMap区别   注意:如果方法 ...

  2. Spring框架中ModelAndView、Model、ModelMap区别 (转)

    原文地址:http://www.cnblogs.com/google4y/p/3421017.html SPRING框架中ModelAndView.Model.ModelMap区别   注意:如果方法 ...

  3. SPRING框架中ModelAndView、Model、ModelMap区别及详细分析

    转载内容:http://www.cnblogs.com/google4y/p/3421017.html 1. Model Model 是一个接口, 其实现类为ExtendedModelMap,继承了M ...

  4. Spring 框架中 ModelAndView、Model、ModelMap 的区别

    Model Model 是一个接口, 其实现类为ExtendedModelMap,继承了ModelMap类. public class ExtendedModelMap extends ModelMa ...

  5. springboot中model,modelandview,modelmap的区别与联系

    springboot 中Model,ModelAndView,ModelMap的区别与联系 Model是一个接口,它的实现类为ExtendedModelMap,继承ModelMap类 public c ...

  6. 细说shiro之五:在spring框架中集成shiro

    官网:https://shiro.apache.org/ 1. 下载在Maven项目中的依赖配置如下: <!-- shiro配置 --> <dependency> <gr ...

  7. 【Spring】8、Spring框架中的单例Beans是线程安全的么

    看到这样一个问题:spring框架中的单例Beans是线程安全的么? Spring框架并没有对单例bean进行任何多线程的封装处理.关于单例bean的线程安全和并发问题需要开发者自行去搞定.但实际上, ...

  8. Spring5源码解析-Spring框架中的单例和原型bean

    Spring5源码解析-Spring框架中的单例和原型bean 最近一直有问我单例和原型bean的一些原理性问题,这里就开一篇来说说的 通过Spring中的依赖注入极大方便了我们的开发.在xml通过& ...

  9. Spring 框架中Http请求处理流程

    Spring Web http request请求流程: 首先介绍这边你需要知道的继承体系,DispacherServlet继承自FrameworkServlet,FrameworkServlet继承 ...

随机推荐

  1. 【转】有关onpropertychange事件

    <div style="border:1px solid #fc0;height:24px;width:300px;" id="target">&l ...

  2. scope的四种作用域的使用

    如何使用spring的作用域: <bean id="role" class="spring.chapter2.maryGame.Role" scope=& ...

  3. 查看flash的版本

    查看当前浏览器的flash版本: http://www.adobe.com/swf/software/flash/about/flashAbout_info_small.swf 针对谷歌浏览器 chr ...

  4. Zookeep启动异常:Error contacting service. It is probably not running.

    异常提示: [root@hadoop bin]# ./zkServer.sh status JMX enabled by default Using config: /usr/local/zk/bin ...

  5. Positioning-Based Photo Retrieval

    MMAI 2015 FINAL PROJECT   To Know Where We Are: Positioning-based Photo Retrieval   2015/12/16 Updat ...

  6. 【luoguP1996】【luogu-original】约瑟夫问题

    先来看题目: P1996 约瑟夫问题 题目背景 约瑟夫是一个无聊的人!!! 题目描述 n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人 ...

  7. 【题解】洛谷P3205【HNOI2010】合唱队

    洛谷 P3205:https://www.luogu.org/problemnew/show/P3205 复习区间DPing 思路 把理想队列拆分成 第一个和后面几个 划分成求后面几个的理想队列 最后 ...

  8. Entity Framework 四

    实体框架支持三种类型的查询:1)LINQ to Entities,2)Entity SQL,3)Native SQL LINQ方法语法: LINQ查询语法: 实体SQL: 这种可以简单的了解,不必深入 ...

  9. 動態SQL運用實例

    動態SQL運用實例 語法8.1.6之前: EXECUTE IMMEDIATE dynamic_sql_string [INTO {define_var1 [, define_var2] ... | p ...

  10. oracle日常监控语句

    oracle常用的性能监控SQL语句 一.查询历史SQL: ---正在执行的SQL语句: select a.username, a.sid,b.SQL_TEXT, b.SQL_FULLTEXT fro ...