跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

Spring中Model、ModelMap、ModelAndView怎么用?区别在哪?

大家好,我是林译川,今天我们来聊聊Spring中Model、ModelMap、ModelAndView这三个小家伙,它们虽然名字相似,但作用却各不相同。别急,听我慢慢道来。

首先,什么是隐含模型?

SpringMVC在每次请求前都会创建一个隐含的数据模型,就像一个背包,用来存放我们请求交互传递的值。这个背包是自动创建的,不管你用不用,它都在那里。

那么,Model和ModelMap有什么区别呢?

Model和ModelMap其实都是用来存放数据的,它们底层都是使用BindingAwareModelMap。简单来说,Model是一个接口,它的实现类为ExtendedModelMap,继承ModelMap类;而ModelMap继承自LinkedHashMap。所以,它们基本没什么区别,都是用来存放数据的。

ModelAndView又是啥?

ModelAndView顾名思义,就是模型和视图的集合。它既包含模型,又包含视图。ModelAndView的实例是开发者自己手动创建的,这是和ModelMap的主要不同点之一。

ModelAndView有两个作用,一个是指定返回页面,另一个是在返回页面的同时添加属性。

下面,我们来举个例子看看它们怎么用。

package com.apress.springrecipes.court.web;  
...  
import org.springframework.web.servlet.ModelAndView;  
import org.springframework.web.servlet.mvc.AbstractController;  
public class WelcomeController extends AbstractController{  
    public ModelAndView handleRequestInternal(HttpServletRequest request,  
        HttpServletResponse response)throws Exception{  
        Date today = new Date();  
        return new ModelAndView(
                            

相关文章