zoukankan      html  css  js  c++  java
  • ModelAndView类

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

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

    1. package org.springframework.web.servlet;  
    2. import Java.util.HashMap;  
    3. import Java.util.Map;  
    4. public class ModelAndView {  
    5.     private Object view;                //该属性用来存储返回的视图信息  
    6.     private Map model;                      //该属性用来存储处理后的结果数据  
    7.     //下面是一些参数不同的构造函数,用来创建ModelAndView实例  
    8.     public ModelAndView() {  
    9.     }  
    10.     public ModelAndView(View view) {  
    11.         this.view = view;  
    12.     }  
    13.     public ModelAndView(String viewName) {  
    14.         this.view = viewName;  
    15.     }  
    16.     public ModelAndView(View view, Map model) {  
    17.         this.view = view;  
    18.         this.model = model;  
    19.     }  
    20.     public ModelAndView(String viewName, Map model) {  
    21.         this.view = viewName;  
    22.         this.model = model;  
    23.     }  
    24.     public ModelAndView(View view, String modelName,
      Object modelObject) {  
    25.         this.view = view;  
    26.         addObject(modelName, modelObject);  
    27.     }  
    28.     public ModelAndView(String viewName, String modelName,
      Object modelObject)  {  
    29.         this.view = viewName;  
    30.         addObject(modelName, modelObject);  
    31.     }  
    32.  //view属性的getter、setter方法,可以看出view属性可以是一个View类的实例,也可以是一个String
    33.     public void setView(View view) {  
    34.         this.view = view;  
    35.     }  
    36.     public View getView() {  
    37.         return (this.view instanceof View ? (View) this.view : null);  
    38.     }  
    39.     public void setViewName(String viewName) {  
    40.         this.view = viewName;  
    41.     }  
    42.     public String getViewName() {  
    43.         return (this.view instanceof String ? (String) this.view : null);  
    44.     }  
    45.     public boolean isReference() {  
    46.         return (this.view instanceof String);  
    47.     }  
    48.     //下面的方法用来给model属性赋值、或者获取该属性的值,model是一个Map类型的属性  
    49.     protected Map getModelInternal() {  
    50.         return this.model;  
    51.     }  
    52.     public Map getModel() {  
    53.         if (this.model == null) {  
    54.             this.model = new HashMap(1);  
    55.         }  
    56.         return this.model;  
    57.     }  
    58.     public ModelAndView addObject(String modelName, Object modelObject) {  
    59.         getModel().put(modelName, modelObject);  
    60.         return this;  
    61.     }  
    62.     public ModelAndView addAllObjects(Map modelMap) {  
    63.         getModel().putAll(modelMap);  
    64.         return this;  
    65.     }  
    66.     ...  

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

  • 相关阅读:
    [转载]利用WCF共享ASP.NET session实现WCF服务端验证
    【转载】WCF REST 工作总结一
    [转载]分享WCF聊天程序WCFChat
    【转载】化零为整WCF(14) 事务(Transaction)
    poj2513
    poj2696
    poj2503
    poj2506
    poj2590
    实践案例丨云连接CC实现跨区域多VPC与线下IDC Server互联
  • 原文地址:https://www.cnblogs.com/workhard-no-hardwork/p/4138422.html
Copyright © 2011-2022 走看看