数据响应:Model、ModelMap、Map
SpringMVC提供多种方式向视图传递数据,三种方式本质相同。
Model方式
Model是Spring提供的接口,用于存储模型数据。
Java
@Controller
public class DemoController {
@RequestMapping("/model")
public String model(Model model) {
model.addAttribute("msg", "Hello Model");
model.addAttribute("user", new User(1, "张三"));
return "success";
}
}
ModelMap方式
ModelMap继承LinkedHashMap,具有Map的全部功能。
Java
@Controller
public class DemoController {
@RequestMapping("/modelMap")
public String modelMap(ModelMap modelMap) {
modelMap.addAttribute("msg", "Hello ModelMap");
modelMap.put("count", 100);
return "success";
}
}
Map方式
直接使用Map接口接收数据。
Java
@Controller
public class DemoController {
@RequestMapping("/map")
public String map(Map<String, Object> map) {
map.put("msg", "Hello Map");
map.put("list", Arrays.asList("A", "B", "C"));
return "success";
}
}
三者对比
| 类型 | 继承关系 | 特点 |
|---|---|---|
| Model | 接口 | 轻量级,方法简洁 |
| ModelMap | 继承LinkedHashMap | 兼具Map功能 |
| Map | 标准接口 | 最通用形式 |
三种方式底层实现相同,数据最终存入request域,视图可直接通过key获取。
要点总结
- Model、ModelMap、Map本质相同,底层都是向request域存数据
- Model:Spring接口,使用最广泛
- ModelMap:继承Map,功能更丰富
- Map:标准接口,通用性强
📝 发现内容有误?点击此处直接编辑