ModelAndView类

从名字上看ModelAndView中的Model代表模型,View代表视图,这个名字就很好地解释了该类的作用。业务处理器调用模型层处理完用户请求 后,把结果数据存储在该类的model属性中,把要返回的视图信息存储在该类的view属性中,然后让该ModelAndView返回该Spring MVC框架。框架通过调用配置文件中定义的视图解析器,对该对象进行解析,最后把结果数据显示在指定的页面上。

下面看ModelAndView.Java的代码,如下所示。

  1. package org.springframework.web.servlet;
  2. import Java.util.HashMap;
  3. import Java.util.Map;
  4. public class ModelAndView {
  5. private Object view;                //该属性用来存储返回的视图信息
  6. private Map model;                      //该属性用来存储处理后的结果数据
  7. //下面是一些参数不同的构造函数,用来创建ModelAndView实例
  8. public ModelAndView() {
  9. }
  10. public ModelAndView(View view) {
  11. this.view = view;
  12. }
  13. public ModelAndView(String viewName) {
  14. this.view = viewName;
  15. }
  16. public ModelAndView(View view, Map model) {
  17. this.view = view;
  18. this.model = model;
  19. }
  20. public ModelAndView(String viewName, Map model) {
  21. this.view = viewName;
  22. this.model = model;
  23. }
  24. public ModelAndView(View view, String modelName,

    Object modelObject) {
  25. this.view = view;
  26. addObject(modelName, modelObject);
  27. }
  28. public ModelAndView(String viewName, String modelName,

    Object modelObject)  {

  29. this.view = viewName;
  30. addObject(modelName, modelObject);
  31. }
  32. //view属性的getter、setter方法,可以看出view属性可以是一个View类的实例,也可以是一个String
  33. public void setView(View view) {
  34. this.view = view;
  35. }
  36. public View getView() {
  37. return (this.view instanceof View ? (View) this.view : null);
  38. }
  39. public void setViewName(String viewName) {
  40. this.view = viewName;
  41. }
  42. public String getViewName() {
  43. return (this.view instanceof String ? (String) this.view : null);
  44. }
  45. public boolean isReference() {
  46. return (this.view instanceof String);
  47. }
  48. //下面的方法用来给model属性赋值、或者获取该属性的值,model是一个Map类型的属性
  49. protected Map getModelInternal() {
  50. return this.model;
  51. }
  52. public Map getModel() {
  53. if (this.model == null) {
  54. this.model = new HashMap(1);
  55. }
  56. return this.model;
  57. }
  58. public ModelAndView addObject(String modelName, Object modelObject) {
  59. getModel().put(modelName, modelObject);
  60. return this;
  61. }
  62. public ModelAndView addAllObjects(Map modelMap) {
  63. getModel().putAll(modelMap);
  64. return this;
  65. }
  66. ...
  67. }

通过上面的代码可以看出,ModelAndView创建了两个属性view和model,并且创建了获取这两个属性以及给这两个属性赋值的一些方法。view属性可以是View接口的一个实例,也可以是一个String类型的值,所有的视图类都必须实现View接口,在后面的内容中将会讲到;model属性是一个Map类型的值,所以其每一个元素都是一个Key-Value对。

时间: 2024-08-28 08:08:07

ModelAndView类的相关文章

尴尬:原来java中有两个 ModelAndView类

先上图: Spring MVC框架下,请求一个jsp页面,总是报错,这个问题,是这个礼拜一还是礼拜二遇到的问题,当时就是找不到原因,试了各种办法,例如:把这个controller类复制到另一个包里,并仔仔细细地比对了报名以防报名写错,ModelAndView实例对象的方法又写了一遍,以防遇到那种重写一下就改好的未知bug... 上个代码图: 刚刚写代码时,看到ModelAndView类上有两个提示的导入信息.......正确的完整类路径应该是: org.springframework.web.s

SpringMVC核心类与接口

DispatcherServlet   -- 前置控制器 HandlerMapping接口 -- 处理请求的映射 HandlerMapping接口的实现类: SimpleUrlHandlerMapping  通过配置文件,把一个URL映射到Controller DefaultAnnotationHandlerMapping  通过注解,把一个URL映射到Controller类上 HandlerAdapter接口 -- 处理请求的映射 AnnotationMethodHandlerAdapter类

springMVC3学习(二)--ModelAndView对象

当控制器处理完请求时,一般会将包括视图名称或视图对象以及一些模型属性的ModelAndView对象返回到DispatcherServlet. 因此,常常须要在控制器中构造ModelAndView对象.ModelAndView类提供了几个重载的构造器和一些方便的方法, 让你能够依据自己的喜好来构造ModelAndView对象.这些构造器和方法以相似的方式支持视图名称和视图对象. 当你仅仅有一个模型属性要返回时,能够在构造器中指定该属性来构造ModelAndView对象 在上篇的基础上,仅仅改动Lo

Spring MVC学习------------核心类与接口

核心类与接口: 先来了解一下,几个重要的接口与类.现在不知道他们是干什么的没关系,先混个脸熟,为以后认识他们打个基础. DispatcherServlet   -- 前置控制器 HandlerMapping接口 -- 处理请求的映射 HandlerMapping接口的实现类: SimpleUrlHandlerMapping  通过配置文件,把一个URL映射到Controller DefaultAnnotationHandlerMapping  通过注解,把一个URL映射到Controller类上

springMVC3学习--ModelAndView对象(转)

原文链接:springMVC3学习(二)--ModelAndView对象 当控制器处理完请求时,通常会将包含视图名称或视图对象以及一些模型属性的ModelAndView对象返回到DispatcherServlet. 因此,经常需要在控制器中构造ModelAndView对象.ModelAndView类提供了几个重载的构造器和一些方便的方法, 让你可以根据自己的喜好来构造ModelAndView对象.这些构造器和方法以类似的方式支持视图名称和视图对象. 当你只有一个模型属性要返回时,可以在构造器中指

SPRING框架中ModelAndView、Model、ModelMap区别及详细分析

注意:如果方法声明了注解@ResponseBody ,则会直接将返回值输出到页面. 首先介绍ModelMap[Model]和ModelAndView的作用 Model 是一个接口, 其实现类为ExtendedModelMap,继承了ModelMap类. ModelMapModelMap对象主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可,他的作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据

控制器向视图传参ModelAndView、Model和Map

ModelAndView类 ModelAndView在spring-webmvc-4.3.18.RELEASE.jar包下,当然其他版本也有,所在包如下 创建controller,访问地址并传参http://localhost:8080/index?username=yanguobin 通过EL表达式在jsp中获取 Model接口 Model在spring-context-4.3.18.RELEASE.jar包下,当然其他版本也有,是一个接口,所在包如下 可以使用Model对象来完成模型数据的传

1.SpringMVC 概述

SpringMVC 简介 SpringMVC 也叫 Spring web mvc ,属于表现层的框架.SpringMVC 是 Spring框架的一部分,是在Spring3.0后发布的 第一个SpringMVC 程序 1.导入jar包 2.注册中央调度器 a)<load-on-startup/>  值大于等于0时,表示这个servlet随服务器启动 b)<url-pattern/>  不能写为 /*,最好也不要写为 /,建议写为 *.do的形式 c) 配置文件与名称(这里必须要设置一

SpringMVC配置实例

一.SpringMVC概述 MVCII模式实现的框架技术 Model--业务模型(Biz,Dao...) View--jsp及相关的jquery框架技术(easyui) Contraller--DispatcherServlet以及控制器组件 二.控制器组件 1).DispatherServlet 2).xxx-servlet.xml文件 3).转向模型ModelAndView类 4).相应的Aop组件和拦截器组件 三.springMvc的开发步骤 1.在当前工程引入spring组件包 2.编写