ModelAndView是SpringMVC视图机制
所有的web应用的mvc框架都有它定位视图的方式。Spring提供了视图解析器供你在浏览器中显示模型数据,而不必被拘束在特定的视图技术上。
Spring的控制器Controller会返回一个ModelAndView的实例。Spring根据ModelAndView实例中的View和Model把信息反馈给用户。
Spring中的视图是以名字为标识的,ViewResolver是通过名字来解析view的。
ModelAndView如其名称所示,它代表了Spring Web MVC中呈现画面时所使用的Model与View,由于Java一次只能返回一个物件,所以ModelAndView的作用封装这两个物件,以方便您一次返回Model与View这两个物件。
如果您要返回呈现画面时所需的Model资料,则可以使用Map来收集呈现View时所需的资料,然后在建构ModelAndView作为建构时的参数。
现在我们有了view名称,也有了显示时需要的model资料,那么我们如何显示view了。这就需要用到ViewResolver(视图解析器),它提供了从视图名称到实际视图的映射。
//返回的是一个包含模型和视图的ModelAndView对象;
public ModelAndView objectList(){
ModelAndView modelAndView = new ModelAndView("/user/index");
// ModelAndView modelAndView = new ModelAndView();
//往modelAndView中添加值
mv.addObject("time",new Date());
//mv.setViewName("/user/index");
return mv;
}
/**
* Model一个模型对象,
* 主要包含spring封装好的model和modelMap,以及java.util.Map,
* 当没有视图返回的时候视图名称将由requestToViewNameTranslator决定;
* @return
*/
@RequestMapping(value="/index",method=RequestMethod.GET)
public Map<String, String> index(){
Map<String, String> map = new HashMap<String, String>();
map.put("name", "张三");
//map.put相当于request.setAttribute方法
return map;
}
返回String
//通过model进行使用
@RequestMapping(value="/index",method = RequestMethod.GET)
public String index(Model model) {
String str = "user/index";
User user = new User();
user.setName("XXX");
model.addAttribute("user", user);
return str;
}
原文:http://blog.163.com/fly_sky_java/blog/static/140422234201471911823491/