zoukankan      html  css  js  c++  java
  • Spring框架中ModelAndView、Model、ModelMap的区别

    转自: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;
    }
    

      

  • 相关阅读:
    【Oracle】dba_jobs字段说明
    【工作杂记】一次修改表字段名操作导致的报表缺失了2个小时的数据
    【SAP BO】无法识别账户信息:无法访问CMS。计算机上的CMS由于某个严重错误而停止。(FWM 20031)
    【虚拟机】在VMware中安装Server2008之后配置网络连接的几种方式
    vlc for android 编译过程
    ubuntu19更新源
    nginx错误Too many open files
    mp4流化
    编译ffmpeg的时候出现ERROR: libx264 not found
    nginx中Lua模块内置变量
  • 原文地址:https://www.cnblogs.com/donghb/p/7650510.html
Copyright © 2011-2022 走看看