Model

  • Model是一个接口,包含addAttribute(),其实现类是ExtendedModelMap,它集成了ModelMap,而ModelMap实现了Map接口。
public class ExtendedModelMap extends ModelMap implements Model
  • Model只能传输数据,不能业务寻址,也就是不能跳转页面。
@RequestMapping("/helloWorld")
public String helloWorld(Model model){
    model.addAttribute("message","SpringMvc大爷你好!");
    return "helloWorld";
}
  • Model每一次请求都可以被自动创建, 但是ModelAndView需要我们自己new。

  • ModelMap和Model其实差不多,也是只能传输数据,把数据放到request中,而且也是被SpringMVC自动创建的。

public ModelMap addAttribute(String attributeName, Object attributeValue){...}
public ModelMap addAttribute(Object attributeValue){...}
public ModelMap addAllAttributes(Collection<?> attributeValues) {...}
public ModelMap addAllAttributes(Map<String, ?> attributes){...}
  • 示例:
public String xxxxmethod(String someparam,ModelMap model)
{
      //将数据放置到ModelMap对象model中,第二个参数可以是任何java类型
      model.addAttribute("key",someparam);
     //返回跳转地址
      return "path:handleok";
}

ModelAndView

  • ModelAndView既能传输数据,又能进行业务寻址,找到页面跳转过去。
  • 添加模型数据用addObject(),设置视图用setViewName()或调用构造器。