springMVC-ModeAndView

来源:互联网 发布:建筑工程业的现状数据 编辑:程序博客网 时间:2024/06/03 05:30

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/