Spring Boot教程(9) – Model的用法

栏目: Java · 发布时间: 4年前

内容简介:你一定知道Model类,在控制器中,数据会存放到Model对象中,当需要生成HTML的时候,模板引擎会根据名字来定位数据,向下图这样。从广义上来说,Model指的是MVC中的M,即Model(模型)。从狭义上讲,Model就是个key-value集合。实际上,上图home方法得到的model对象就是一个往Model里放数据还有另外一种方式,使用ModelAndView。正如它的名字一样,ModelAndView将Model和视图名绑定在一起,作为请求处理方法的返回值。

你一定知道Model类,在控制器中,数据会存放到Model对象中,当需要生成HTML的时候,模板引擎会根据名字来定位数据,向下图这样。

Spring Boot教程(9) – Model的用法

从广义上来说,Model指的是MVC中的M,即Model(模型)。从狭义上讲,Model就是个key-value集合。实际上,上图home方法得到的model对象就是一个 java.util.Map ,你可以将Model类型替换为 Map<String, Object> ,或者ModelMap——一个实现了Model接口的 java.util.HashMap

往Model里放数据还有另外一种方式,使用ModelAndView。正如它的名字一样,ModelAndView将Model和视图名绑定在一起,作为请求处理方法的返回值。

Spring Boot教程(9) – Model的用法

有的人会倾向于这种写法。因为请求处理方法(上图的home方法)的参数,通常是带有“输入(input)”的含义的,比如我们之前介绍的@RequestParam和@PathVariable,比如我们没有介绍过的@RequestHeader和@CookieValue,他们都是一个请求的“输入”,通常不会变。如果将Model类作为请求处理方法的参数,并且去改变他,可能有点不太“合适”。

写法怎么来确定,每个人不同,只要你的选择在项目里始终如一就行。对于我来说,我选择将Model作为请求处理方法的参数,不仅是因为这种写法更新一点,简便一点,更因为它可以获取更多信息。我们知道Model是伴随一个请求的整个过程的,在请求处理方法执行之前,Model有可能已经有数据了,把Model作为参数,就可以看到方法执行之前的数据了。接下来,我们看看,在方法执行之前如何给Model里添加数据。

@ModelAttribute的用法

在所有的请求处理方法执行之前,你有机会往Model里面加数据:新建一个方法,加上@ModelAttribute注解和Model参数,就可以像下图这种样加数据了。

Spring Boot教程(9) – Model的用法

注意,每个请求处理方法在执行之前,都会执行一次fillData方法。虽然fillData不是@RequestMapping方法,不能指定请求路径,但是可以添加很多请求处理方法的参数,比如@RequestParam,@RequestHeader等。比如你的HTTP请求里有一个Header是自定义的,那么你可以在fillData方法里,获取到Header的信息,再根据它获取一些数据比如用户信息什么的,放到Model里。

如果fillData里的数据很少,只有一个对象,你可以直接把这个对象返回,它会自动被加入到Model里,相当于隐性执行了Model的 addAttribute(Object) 方法。下图中你可以看到,虽然你没有指明在Model中User对象的名字,但是Model自动给它了一个名字“user”,因为你不提供名字(即key)的话,框架会根据类名生成一个,规则是类名首字母小写(User->user)。这个key如果你想改,就给fillData方法的@ModelAttribute注解添加一个参数。

Spring Boot教程(9) – Model的用法

@ModelAttribute还有一种用途是作为请求处理方法的参数,如果你需要Model中某个对象,可以给参数添加@ModelAttribute注解:

Spring Boot教程(9) – Model的用法

如果Model中没有User对象,那么框架会创建一个,并放到Model中,也就是说user变量肯定不为空。然后呢,GET请求或者POST请求的参数,会跟user对象的成员(fields)名称进行对应,对的上的话就赋值给成员。这个过程也叫做数据绑定(Data Binding),一个典型的应用就是处理表单。因为这种用法太常见了,所以@ModelAttribute也是可以省略的,请求处理方法的参数,如果不是 框架能识别的类型 ,都会假定它用了@ModelAttribute。

文本不打算对数据绑定这一块儿进行说明,因为东西还挺多的,之后介绍表单处理的时候我们再详细解读。


以上所述就是小编给大家介绍的《Spring Boot教程(9) – Model的用法》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

天涯虚拟社区

天涯虚拟社区

刘华芹 / 民族出版社 / 2005-11 / 23.00元

网络空间很复杂,好多人并不完全了解或者只是了解到一些皮毛。比如说好多人对于见网友一事总是抱着浪漫或者暖昧的想法,而事实却并不总是想象的那样。作者在做虚拟社区研究甚至是在有这个想法之前并不常呆在网上,互联网对于作者来说就是查查资料、收发信年、看看新闻的工具。担是看着越来越多的人把时间花在网上,一处文化上的直觉告诉作者:有一种新的生活方式产生了。强烈的好奇心驱使着作者走到了网上,走到了天涯虚拟社区,并......一起来看看 《天涯虚拟社区》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具