`

模型视图类ModelAndView(转载)

 
阅读更多
    从名字上看ModelAndView中的Model代表模型,View代表视图,这个名字就很好地解释了该类的作用。业务处理器调用模型层处理完用户请求后,把结果数据存储在该类的model属性中,把要返回的视图信息存储在该类的view属性中,然后让该ModelAndView返回该Spring MVC框架。框架通过调用配置文件中定义的视图解析器,对该对象进行解析,最后把结果数据显示在指定的页面上。

下面看ModelAndView.Java的代码,如下所示。

package org.springframework.web.servlet;  
import Java.util.HashMap;  
import Java.util.Map;  
public class ModelAndView {  
    private Object view;                //该属性用来存储返回的视图信息  
    private Map model;                      //该属性用来存储处理后的结果数据  
    //下面是一些参数不同的构造函数,用来创建ModelAndView实例  
    public ModelAndView() {  
    }  
    public ModelAndView(View view) {  
        this.view = view;  
    }  
    public ModelAndView(String viewName) {  
        this.view = viewName;  
    }  
    public ModelAndView(View view, Map model) {  
        this.view = view;  
        this.model = model;  
    }  
    public ModelAndView(String viewName, Map model) {  
        this.view = viewName;  
        this.model = model;  
    }  
    public ModelAndView(View view, String modelName,
Object modelObject) {  
        this.view = view;  
        addObject(modelName, modelObject);  
    }  
    public ModelAndView(String viewName, String modelName,
Object modelObject)  {  
        this.view = viewName;  
        addObject(modelName, modelObject);  
    }  
//view属性的getter、setter方法,可以看出view属性可以是一个View类的实例,也可以是一个String
    public void setView(View view) {  
        this.view = view;  
    }  
    public View getView() {  
        return (this.view instanceof View ? (View) this.view : null);  
    }  
    public void setViewName(String viewName) {  
        this.view = viewName;  
    }  
    public String getViewName() {  
        return (this.view instanceof String ? (String) this.view : null);  
    }  
    public boolean isReference() {  
        return (this.view instanceof String);  
    }  
    //下面的方法用来给model属性赋值、或者获取该属性的值,model是一个Map类型的属性  
    protected Map getModelInternal() {  
        return this.model;  
    }  
    public Map getModel() {  
        if (this.model == null) {  
            this.model = new HashMap(1);  
        }  
        return this.model;  
    }  
    public ModelAndView addObject(String modelName, Object modelObject) {  
        getModel().put(modelName, modelObject);  
        return this;  
    }  
    public ModelAndView addAllObjects(Map modelMap) {  
        getModel().putAll(modelMap);  
        return this;  
    }  
    ...  

通过上面的代码可以看出,ModelAndView创建了两个属性view和model,并且创建了获取这两个属性以及给这两个属性赋值的一些方法。view属性可以是View接口的一个实例,也可以是一个String类型的值,所有的视图类都必须实现View接口,在后面的内容中将会讲到;model属性是一个Map类型的值,所以其每一个元素都是一个Key-Value对。
分享到:
评论

相关推荐

    Spring+Mybatis框架 ModelAndView

    `ModelAndView` 是 Spring MVC 中的一个类,用于将处理结果(Model)和视图逻辑名(View)组合在一起。当控制器方法执行完毕,需要返回一个响应时,通常会创建一个 `ModelAndView` 对象,并添加数据到模型(Model)...

    使用SpringMVC的ModelAndView.zip

    SpringMVC通过`ModelAndView`提供了一种有效的方式来组织和传递模型数据,同时定义了要显示的视图。理解并熟练使用`ModelAndView`是掌握SpringMVC开发的关键步骤之一。在实际项目中,可以根据需求灵活地利用它来...

    Spring ModelAndView

    `ModelAndView` 类在处理完控制器逻辑后,用于存放模型数据和视图信息。模型数据是处理业务逻辑过程中生成的对象或值,它们会被传递到视图进行渲染。视图信息通常是一个视图解析器可以解析的字符串,比如JSP页面的...

    springmvc关于modelAndView的使用详细

    在Spring MVC框架中,ModelAndView是一个非常重要的类,它用于处理控制器(Controller)与视图(View)之间的数据传递。本篇文章将深入探讨ModelAndView的使用细节,帮助你更好地理解和运用Spring MVC。 首先,理解...

    springmvc处理模型数据ModelAndView过程详解

    ModelAndView是SpringMVC框架中的一种返回值类型,它可以用来封装模型数据和视图信息。下面是一个使用ModelAndView处理模型数据的示例代码: ```java @RequestMapping("/springmvc") @Controller public class ...

    SpringMVC-5 视图和视图解析器

    自定义视图需要实现View接口,至少包含`render`方法,该方法接收ModelAndView对象,从中提取数据并进行渲染。 4. **重定向操作** 在Spring MVC中,重定向是通过RedirectView或设置模型属性`redirectAttributes`...

    SpringMVC ModelAndView、Model及Map、@SessionAttributes场景与应用

    首先,`ModelAndView`是Spring MVC中用于封装模型数据和视图信息的对象。当你在控制器方法中创建一个`ModelAndView`实例时,可以向其中添加模型数据(即业务对象或数据),然后指定要跳转到的视图名称。例如: ```...

    Spring MVC--5.视图和视图解析器

    此外,Spring MVC还提供了一些高级特性,如ModelAndView对象,它允许控制器同时返回视图名和模型数据。另外,还有RedirectView和ForwardView等特殊视图,它们可以直接处理重定向和转发操作,简化了开发过程。 总的...

    ModelAndView command.docx

    在Spring MVC框架中,`ModelAndView`是一个关键的类,用于在处理完控制器方法后将模型数据和视图逻辑一起返回到视图层。在这个场景中,`command`概念是与`ModelAndView`紧密相关的,特别是在处理表单提交时。 `...

    ModelAndView详解1

    在Spring Boot应用中,ModelAndView是一个非常重要的类,主要用于处理HTTP请求并返回响应视图,同时携带处理结果数据。在本文中,我们将深入探讨ModelAndView的使用方式和它在Spring MVC框架中的作用。 首先,...

    浅谈js获取ModelAndView值的问题

    JS当中不能接收ModelAndView的返回值吗?一定要在JSP页面中才能接收吗? 1 方法一 【有效】 可以的,跟el表达式访问方式一样。 示例代码,一个数据展示请求的Action中存入一个userId: @RequestMapping(value="/...

    SpringMVC自定义多视图

    此外,Spring MVC还提供了`ModelAndView`类,可以用来同时返回多个视图。这在处理复杂的导航场景或需要一次性提供多种数据格式时非常有用。我们可以在`ModelAndView`中添加多个视图名,并设置相应的模型数据。 在...

    Spring MVC--4.处理模型数据

    视图模型(ViewModel)是另一种处理模型数据的方式,它是一个特殊的Java类,用于封装视图需要的所有数据。这种方式在复杂的应用中可以帮助保持代码的整洁。 总结来说,Spring MVC提供了一系列工具和机制来处理模型...

    SSM笔记-处理模型数据

    ModelAndView就是一个用来同时存储模型数据和视图名的对象。开发者可以在ModelAndView对象中添加属性(即模型数据),这些属性在请求转发或重定向到视图时会一并传递。例如,你可以这样创建和使用ModelAndView: ``...

    SpringMVC ModelAndView的用法使用详解

    业务处理器调用模型层处理完用户请求后,把结果数据存储在ModelAndView的model属性中,把要返回的视图信息存储在ModelAndView的view属性中,然后让该ModelAndView返回该Spring MVC框架。框架通过调用配置文件中定义...

    SpringMVC第8讲:多视图支持

    SpringMVC还提供了ModelAndView类,用于在控制器中返回视图和模型数据。例如: ```java @RequestMapping("/example") public ModelAndView handleRequest() { Map, Object> model = new HashMap(); model.put(...

    Spring_MVC_控制器方法返回值与视图的关系

    例如,控制器方法可以返回一个 ModelAndView 对象,其中包含名为 "index" 的视图和一个模型对象,该模型对象将被传递给视图。 void 类型返回值 如果控制器方法返回 void 类型的返回值,那么 Spring MVC 将会根据 ...

    springmvc:@Controller @RequestMapping @RequestParam,模型和ModelAndView Spring MVC实践

    `ModelAndView`是一个Spring MVC中的类,用于组合模型数据和视图名。在处理请求后,控制器方法通常会返回一个`ModelAndView`实例,其中包含了要展示的数据和对应的视图。例如,`new ModelAndView("success", ...

    手动模拟springMVC

    在模拟过程中,你可以创建一个简单的类来表示ModelAndView,包含一个Map对象存储模型数据和一个字符串表示视图名称。 4. **数据绑定**:Spring MVC支持自动将HTTP请求参数绑定到Controller方法的参数上,这得益于...

    springmvc 3.1 多视图

    在Spring MVC中,Controller方法通常会返回一个ModelAndView对象,其中包含了逻辑视图名和模型数据。你可以为每个视图类型创建不同的ModelAndView实例,这样就能实现多视图的切换。 **5. 多视图的切换策略** 在处理...

Global site tag (gtag.js) - Google Analytics