Spring MVC中ModelAndView的Model是什么?
有这个基本function
protected ModelAndView handleRequestInternal(...) { ... return new ModelAndView("welcomePage", "WelcomeMessage", message); }  我知道这将返回modelandView。 我知道welcomePage是我的viewname,所以这意味着welcomePage就会被调用。 
 但是我对什么是模型部分感到困惑。 什么是WelcomeMessage和message以及模型如何在这种情况下工作? 
该模型提供了一个占位符来保存要在视图上显示的信息。 它可能是一个string,这是你的上面的例子,或者它可能是一个包含一堆属性的对象。
例1
如果你有…
 return new ModelAndView("welcomePage","WelcomeMessage","Welcome!"); 
…然后在你的jsp中,显示这个消息,你会这样做:
 Hello Stranger! ${WelcomeMessage} // displays Hello Stranger! Welcome! 
例2
如果你有…
 MyBean bean = new MyBean(); bean.setName("Mike!"); bean.setMessage("Meow!"); return new ModelAndView("welcomePage","model",bean); 
然后在你的jsp中,你可以这样做:
 Hello ${model.name}! {model.message} // displays Hello Mike! Meow! 
这一切都由javadoc为构造函数解释。 这是一个便利的构造函数,用一个属性/值对填充模型。
所以…
  new ModelAndView(view, name, value); 
相当于:
  Map model = ... model.put(name, value); new ModelAndView(view, model); 
新的ModelAndView(“welcomePage”,“WelcomeMessage”,消息);
是速记
 ModelAndView mav = new ModelAndView(); mav.setViewName("welcomePage"); mav.addObject("WelcomeMessage", message); 
看上面的代码,你可以看到视图名称是“welcomePage”。 你的ViewResolver(通常在… / WEB-INF / spring-servlet.xml中设置)将把它转换成View。 代码的最后一行在你的模型中设置一个属性(addObject(“WelcomeMessage”,message))。 这就是模型的作用。
 在这种情况下,我们在Methodland ModelandView中有3个参数。 
 根据这个问题,第一个参数很容易从问题中理解。 它表示将显示给客户的视图 。 
 另外两个参数就像指针和持有者 
 因此,你可以这样总结 
ModelAndView( View,Pointer,Holder );
指针只是指出持有人的信息
 当Controller使用这个信息绑定View时,在上述过程中,可以使用JSP页面中的指针来访问存储在Holder中的信息,以将相关的信息显示给客户端。 
  这是受尊重的过程的视觉描绘。 
 return new ModelAndView("welcomePage", "WelcomeMessage", message); 
  
 
那么,WelcomeMessage只是消息的variables名称(实际的数据模型)。 基本上,你在这里绑定的模型与welcomePage。 模型(消息)将作为WelcomeMessage在welcomePage.jsp中可用。 这是一个更简单的例子:
 ModelAndView("hello","myVar", "Hello World!"); 
在这种情况下,我的模型是一个简单的string(在应用程序中,这将是一个POJO,为数据库或其他来源提供数据)。 我将它分配给myVar,我的视图是hello.jsp。 现在,myVar在hello.jsp中可用,我可以用它来显示。
在视图中,您可以访问数据:
 ${myVar} 
同样,您将能够通过WelcomeMessagevariables访问模型。
ModelAndView:名称本身解释了它是包含Model和View数据的数据结构。
 Map() model=new HashMap(); model.put("key.name", "key.value"); new ModelAndView("view.name", model); // or as follows ModelAndView mav = new ModelAndView(); mav.setViewName("view.name"); mav.addObject("key.name", "key.value"); 
如果模型只包含单个值,我们可以写成如下:
 ModelAndView("view.name","key.name", "key.value"); 
- servlet中的<mvc:annotation-driven />和<context:annotation-config />有什么区别?
- 如何在弹簧容器之外使用Spring Data JPA?
- 如何在spring mvc 3中通过注释设置头文件不caching
- Spring Security中angular色与授权的区别
- Spring @Autowired如何工作
- 不区分大小写使用Spring CrudRepository进行查询
- Spring3.2和jboss 7
- javax.servlet.ServletException不能在spring web app中parsing为types
- 如何自定义由Spring Boot隐式使用的Jackson JSON映射器?