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)
- ExtendedModelMap extends ModelMap implements Model
/* Map(interface(jdk)) Model(interface(spring)) * || // * ||extends // * \/ //implements * ModelMap(class) // * \\ // * \\extends // * ExtendedModelMap * || * ||extends * \/ * BindingAwareModelMap * */