类型
Spring提供了以下几种方式传递模型数据:
ModelAndView
:当action方法返回值类型为ModelAndView时,可以通过这个对象添加模型数据并指定视图名。
Map、Model:
用法基本一致,Model以及Map都可以直接在参数列表中声明,获取到request中的数据,并通过键值对形式存储或取出。
@SessionAttributes
:
将模型中的某个属性暂存到 HttpSession 中,以便多个请求之间可以共享这个属性
@ModelAttribute
:
方法入参标注该注解后, 入参的对象就会放到数据模型中,也可
用于重命名参数数据。
用法
ModelAndView:
@RequestMapping(value="/case" , method = RequestMethod.GET)
public ModelAndView case1(){
ModelAndView mav = new ModelAndView("res.jsp");
mav.addObject("sex", "boy");
return mav;
}
ModelAndView能够指定视图的路径,并通过addObject设置键值对数据,通过方法返回此对象即可。内部其实就是个ModelMap和View对象,ModelMap用于存放数据,View用来指定跳转的路径。
Model、Map:
@RequestMapping(value="/case2" , method = RequestMethod.GET)
public String case2(Model model){
model.addAttribute("key", "value");
return "res.jsp";
}
@RequestMapping(value="/case3" , method = RequestMethod.GET)
public String case3(Map<String, Object> map){
map.put("key", "value");
return "res.jsp";
}
作用其实都一样,都是为了存储数据模型并跳转,ModelAndView能够实现,Model和Map也能够实现,两者在控制层的区别只体现在返回值这里。