虽然看完了视频里讲解springmvc,但是一接触到实际的项目又不会用springmvc里的内置参数了所以今天做个笔记整理一下
首先说明Model每一次请求都会自动创建,而ModelAndView需要我们手动new
Model和ModelMap
继承关系
ExtenedModelMap继承了ModelMap,ModelMap继承了LinkedHashMap
ExtenedModelMap还实现了Model接口
区别
暂时没发现大区别。。。查看ModelMap的源码发现和子类的差不多,估计是增强方法了吧
使用方法
在控制器的方法参数列表里定义出来ModelMap类型的参数,我们就可以获取到了
public String adminlogin(ModelMap model){
model.addAttribute("adminid",admin.getid());
}
常用的几个方法
public ModelMap addAttribute(String attributeName, Object attributeValue){...}
public ModelMap addAttribute(Object attributeValue){...}
public ModelMap addAllAttributes(Collection<?> attributeValues) {...}
public ModelMap addAllAttributes(Map<String, ?> attributes){...}
作用
- 可以将结果数据传递到视图中(类似于request.setattribute)
- 可以将属性存入@SessionAttribute中(类似session)
@SessionAttributes(value = {"adminId"}, types = {Integer.class})//控制器上面声明注解
model.addAttribute("adminId", admin.getId());
ModelAndView
使用方法
@RequestMapping("/testReturnModelAndView")
public ModelAndView testReturnModelAndView() {
ModelAndView mv = new ModelAndView();
mv.addObject("username", "张三");
mv.setViewName("success");
return mv;
}
作用
ModelAndView不仅包含Model部分还包含View部分,也就是说它可以完成对视图的寻址功能。