Model,ModelMap和ModelAndView之间有什么区别?

以下Spring框架类的主要区别是什么?

  • Model
  • ModelMap
  • ModelAndView

使用Model.put(String,Object)我们可以访问.jsp文件中的值,但是ModelMap.addAttribute(String,Object)也做同样的事情。 我不明白这些类之间的区别。

Model是一个接口,而ModelMap是一个类。

ModelAndView只是一个ModelMap和一个视图对象的容器。 它允许一个控制器作为一个单一的值返回。

Model,ModelMap和ModelAndView之间的区别

模型:它是一个接口。 它为模型属性定义了一个持有者,主要是为了向模型添加属性而devise的。

例:

 @RequestMapping(method = RequestMethod.GET) public String printHello(Model model) { model.addAttribute("message", "Hello World!!"); return "hello"; } 

ModelMap:在构build用于UI工具的模型数据时使用的Map的实现。支持链式调用和模型属性名称的生成。

例:

 @RequestMapping("/helloworld") public String hello(ModelMap map) { String helloWorldMessage = "Hello world!"; String welcomeMessage = "Welcome!"; map.addAttribute("helloMessage", helloWorldMessage); map.addAttribute("welcomeMessage", welcomeMessage); return "hello"; } 

ModelAndView:这个类仅仅是为了让控制器可以返回一个返回值中的模型和视图。

例:

 @RequestMapping("/welcome") public ModelAndView helloWorld() { String message = "Hello World!"; return new ModelAndView("welcome", "message", message); } 

Model :是一个包含四个addAttribute和一个merAttribute方法的接口。

ModelMap :实现Map接口。 它也包含Map方法。

ModelAndView :正如Bart解释的那样,它允许一个控制器作为一个单一的值返回。