3.2.4 Model和ModelMap
3.2.4 Model和ModelMap
在请求处理方法中可出现和返回的参数类型中,最重要的就是Model
和ModelAndView
了。
控制器产生模型数据 视图渲染模型数据
对于MVC
框架,控制器(Controller
)执行业务逻辑,用于产生模型数据(Model
),而视图(view
)则用于渲染模型数据。
传递模型数据的途径
如何将模型数据传递给视图是Spring MVC
框架的一项重要工作, Spring MVC
提供了多种途径输出模型数据,如:
Model
和ModelMap
ModelAndView
@ModelAttribute
@SessionAttributes
下面将重点介绍Model
、 ModelMap
以及ModelAndView
,@SessionAttributes
将在3.11节中重点介绍;@ModeLAttribute
将在3.12节中重点介绍.
Model
Spring MVC
在内部使用了一个org.springframework.ui.Model
接口存储模型数据,它的功能类似java.util.Map
接口,但是比Map
易于使用。org.springframework.ui.ModelMap
接口实现了Map
接口。Spring MVC
在调用处理方法之前会创建一个隐含的模型对象,作为模型数据的存储容器。
如果处理方法的参数为Model
或ModelMap
类型,则Spring MVC
会将隐含模型的引用传递给这些参数。
在处理方法内部,开发者可以通过这个参数对象访问模型中的所有数据,也可以向模型中添加新的属性数据。
添加模型数据
在处理方法中, Model
和ModelMap
对象都可以使用如下方法添加模型数据addAttribute(String attributeName,Object attributeValue)
示例 Model和ModelMap的使用
1 | package org.fkit.controller; |
在modelTest
方法中创建了一个自定义的User
对象,并且给username
属性赋值。使用Model
对象的addAttribute("user",user)
方法将User
对象添加到Model
当中,即JSP
的request Scope
当中
modelMapTest
方法的代码功能与此类似,只是存储对象由Model
改成了ModelMap