1. 程式人生 > 其它 >資料輸出 --Model、Map和ModelMap

資料輸出 --Model、Map和ModelMap

技術標籤:SpringMVCspringmvc

SpringMVC向頁面攜帶資料

除了使用原生API外(在方法上傳入request、session等),我們還可以通過其他方法將資料帶給頁面。

可以在方法處傳入Map或者Model或者ModelMap,這些引數裡儲存的資料,都會放在域中,可以在頁面獲取。


目錄

1、Map

2、Model

3、ModelMap

4、總結


1、Map

@RequestMapping(value = "/handle04")
    public String handle04(Map<String,Object> map){
        map.put("msg","你好");
        return "result";
    }
<body>
    pageContext:${pageScope.msg}<br>
    request:${requestScope.msg}<br>
    session:${sessionScope.msg}<br>
    application:${applicationScope.msg}<br>
</body>

結果:

說明:Map的資訊會放在request域中


2、Model

是Spring framework下的介面。

@RequestMapping(value = "/handle05")
    public String handle05(Model model){
       model.addAttribute("msg","這好嗎?");
        return "result";
    }

結果:

說明:Model的資訊也會放在request域中


3、ModelMap

    @RequestMapping(value = "/handle06")
    public String handle06(ModelMap modelMap){
        modelMap.addAttribute("msg","來偷襲");
        return "result";
    }

說明:ModelMap的資訊也會放在request域中


4、總結

共同點:

1、Map、Model、ModelMap的資料都會傳給請求域requestScope

2、最終實現類相同:org.springframework.validation.support.BindingAwareModelMap

相當於給BindingAwareModelMap中儲存的資料都會請求域中

區別:

1、關係

  • Map(interface jdk)
  • Model(interface spring)
  • ModelMap(class extends LinkedHashMap)
  • BindingAwareModelMap(class extends ExtendedModelMap)
  • ExtendedModelMap\succextends ModelMap implements Model
/*
     Map(interface(jdk))                  Model(interface(spring))
*           ||                                //
*           ||extends                        //
*           \/                              //implements
*       ModelMap(class)                    //
*                    \\                   //
*                     \\extends          //
*                       ExtendedModelMap
*                               ||
*                               ||extends
*                               \/
*                       BindingAwareModelMap
* */