資料輸出 --Model、Map和ModelMap
阿新 • • 發佈:2021-01-04
SpringMVC向頁面攜帶資料
除了使用原生API外(在方法上傳入request、session等),我們還可以通過其他方法將資料帶給頁面。
可以在方法處傳入Map或者Model或者ModelMap,這些引數裡儲存的資料,都會放在域中,可以在頁面獲取。
目錄
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)
- ExtendedModelMapextends ModelMap implements Model
/* Map(interface(jdk)) Model(interface(spring)) * || // * ||extends // * \/ //implements * ModelMap(class) // * \\ // * \\extends // * ExtendedModelMap * || * ||extends * \/ * BindingAwareModelMap * */