zoukankan      html  css  js  c++  java
  • Model、ModelMap、ModelAndView的作用及区别

    ##Model、ModelMap、ModelAndView的作用及区别 对于MVC框架,控制器controller执行业务逻辑 用于产生模型数据Model 视图view用来渲染模型数据

    Model和ModelAndView这两个类在spring的视图解析时作用及区别

    1、Model是用来传输数据的,不会进行业务的寻址

    2、ModelAndView可以进行业务寻址(就是设置对应的要请求的静态文件,静态文件类似于jsp文件)

    最大的区别:Model每一次请求可以自动创建,ModelAndView是需要我们自己去new的

    Model方法

    如果在控制层上的方法声明了注解@ResponseBody,则会直接将返回值输出到页面,Model是一个接口,实现类为ExtendModelMap,继承了ModelMap类。

    public class ExtendModelMap extends ModelMap implements Model
    

    model可以用来接收各种类型的数据,如果用来接收一组数据list,那么这个时候的model实际上是ModelMap

    ModelMap方法

    ModelMap对象主要用于传递控制方法处理数据到结果页面(也就是把结果页面上需要的数据放到ModelMap对象中就可以了)

    作用类似于request对象的setAttribute方法的作用:在一个请求过程中传递处理的数据

    ModelMap本身不能设置页面跳转的URL地址名或者物理跳转地址,此时可以通过控制器方法的字符串返回值来设置跳转URL地址别名或者物理跳转地址

    ModelAndView方法

    添加模型数据用addObject;
    设置视图setViewName;

    ModelAndView 对象有两个作用:

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

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

    或者通过setViewName方式:

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

    (2)将控制器方法中处理的结果数据传递到结果页面(也就是把在结果页面上需要的数据放到ModelAndView对象中即可)

    其作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。通过以下方法向页面传递参数:

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

    在jsp中:也是可以通过el表达式语言attributeName或者C标签库的{name } 来获取并展示ModelAndView中的数据。

    ModelAndView的实例是需要我们手动new的,这也是和ModelMap的一个区别。
    而且,ModelAndView 可以自己寻址,只需要return 返回其对象即可。

    记住有一个需要返回对象,一个需要返回的是地址路径。

  • 相关阅读:
    SpringBoot初识日志
    SpringBoot配置文件(2)
    SpringBoot配置文件(1)
    java8新特性之stream流
    java8新特性之Lambda表达式
    Java入门——第一个Java程序HelloWorld(Dos命令窗口)
    Invalid bound statement (not found): com.xxx.xxx.dao.ShopMapper.insertShop
    2019总结过去,规划未来
    进程和线程的区别
    python(tuple元组、scalar types:数字类型、字符类型、类型转换)
  • 原文地址:https://www.cnblogs.com/zly123/p/10479172.html
Copyright © 2011-2022 走看看