博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Model、ModelMap、ModelAndView的作用及区别
阅读量:5874 次
发布时间:2019-06-19

本文共 1418 字,大约阅读时间需要 4 分钟。

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 返回其对象即可。

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

转载于:https://www.cnblogs.com/zly123/p/10479172.html

你可能感兴趣的文章
20160222.CCPP体系具体解释(0032天)
查看>>
Java面试必问,ThreadLocal终极篇
查看>>
Arduino
查看>>
hostPath Volume - 每天5分钟玩转 Docker 容器技术(148)
查看>>
php数组时按值传递还是按地址传递
查看>>
js向一个数组中插入元素的几个方法-性能比较
查看>>
Tensorflow代码解析(一)
查看>>
容器相关源加速以及k8s官方资源镜像下载
查看>>
Zombie进程
查看>>
asp.netmvc 三层搭建一个完整的项目
查看>>
sql server 生成随机数 rand函数
查看>>
CSS魔法堂:Transition就这么好玩
查看>>
【OpenStack】network相关知识学习
查看>>
centos 7下独立的python 2.7环境安装
查看>>
[日常] 算法-单链表的创建
查看>>
用ASP.NET Core 2.1 建立规范的 REST API -- 保护API和其它
查看>>
前端工程化系列[01]-Bower包管理工具的使用
查看>>
使用 maven 自动将源码打包并发布
查看>>
Redis 的源码分析
查看>>
ES6 对象的扩展
查看>>