首页 > 宠物生活

modelandview?ModelAndView和response区别

modelandview构造方法和setviewname的区别

ModelAndView

的构造方法有7个。但是它们都是相通的。这里使用无参构造函数来举例说明如何构造ModelAndView

实例。

ModelAndView类别就如其名称所示,是代表了MVC Web程序中Model与View的对象,不过它只是方便您一次返回这两个对象的holder,Model与View两者仍是分离的概念。

最简单的ModelAndView是持有View的名称返回,之后View名称被view resolver,也就是实作org.springframework.web.servlet.View接口的实例解析,例如 InternalResourceView或JstlView等等:

ModelAndView(String viewName)

如果您要返回Model对象,则可以使用Map来收集这些Model对象,然后设定给ModelAndView,使用下面这个版本的ModelAndView:

ModelAndView(String viewName, Map model)

Map对象中设定好key与value值,之后可以在视图中取出,如果您只是要返回一个Model对象,则可以使用下面这个ModelAndView版本:

ModelAndView(String viewName, String modelName, Object modelObject)

藉由modelName,您可以在视图中取出Model并显示。

ModelAndView类别提供实作View接口的对象来作View的参数:

ModelAndView(View view)

ModelAndView(View view, Map model)

ModelAndView(View view, String modelName, Object modelObject)

J*a中ModelAndView是做什么的

这是MVC中的两个模块

Model是指数据模型

View是指UI视图

另外Control是指控制流

为什么要用MVC,目前凡是涉及到UI有界面的程序,最好采用MVC模式来设计。

View:我们要专门有一个模块,还存放所有的UI组件库,按钮,图片,文本框,列表,菜单等等,这些东西都是*的,没有内容。比方说文本框,你从组库中把文本框拿出来,默认里面没有任何文字。

Model:我们的数据模型,如果是面向对象的程序,那就是一个个的数据类。如学生,老师,汽车,职员等等。他们也可以理解成数据结构。我们必须有一个专门的模块来存放这些结构。结构也是*的,如果没有把他拿出来用,他就永远躺上该模块中。

Control:控制者,可以理解成一段代码,它会根据当前的程序状态机,将合适的数据模型中的数据填充到UI视图中。也可以反过来通过监听UI组件的变化,将一部分变化写回数据模型中。

举例:

用户注册界面,

有四个 UI组件 1。文本框提示用户一些注册信息 2。两个输入型文本框可以让用户输入帐号和密码 3。一个按钮。

这里,Model是用户资料

View就是这四个UI组件

而Control需要程序加上代码:

当按钮被按下,首先生成User的实例,其实从两个输入框中分别获取字符串,将user的id和password赋值。保存user实例或者发送到server端。

在这个过程中,三个模块各司其职,尽可能少地相互不干涉。特别是model和view之间不干涉,而control是桥梁。

以上是对j*a的MVC模式的广义解说。

MVC在j*a的web应用中还有狭义的解说,也就是B/S中常用的MVC架构,具体可以查询这方面资料。

j*a modelandview

j*a modelandview是什么,让我们一起了解一下?

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

ModelAndView的使用方法是怎样的?

添加模型数据用addObject,设置视图setViewName。

ModelAndView对象有两个作用:

1、设置转向地址,这也是ModelAndView和ModelMap的主要区别。设置方式如下所示:

ModelAndView view = new ModelAndView(“path:student”);

或者通过setViewName方式:

public void setViewName(String viewName){…}

2、将控制器方法中处理的结果数据传递到结果页面,也就是把在结果页面上需要的数据放到ModelAndView对象中即可,其作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。通过以下方法向页面传递参数:

public ModelAndView addObject(String attributeName, Object attributeValue){…} public ModelAndView addObject(Object attributeValue){…}

在jsp中:也是可以通过el表达式语言 a t t r i b u t e N a m e或者 C标签库的 attributeName或者C标签库的 attributeName或者C标签库的{name}来获取并展示ModelAndView中的数据。

实战*作,示例代码如下: package com.itmyhome;     import j*a.util.ArrayList;   import j*a.util.HashMap;   import j*a.util.List;   import j*a.util.Map;     import org.springframework.stereotype.Controller;   import org.springframework.web.bind.annotation.RequestMapping;   import org.springframework.web.servlet.ModelAndView;    @Controller   public class Login {        @RequestMapping(value=”login”)      public ModelAndView login(){          ModelAndView m* = new ModelAndView();          m*.setViewName(“welcome”); //返回的文件名                    m*.addObject(“message”,”hello kitty”);                    //List          List list = new ArrayList();          list.add(“j*a”);          list.add(“c++”);          list.add(“oracle”);          m*.addObject(“bookList”, list);                    //Map          Map map = new HashMap();          map.put(“zhangsan”, ”北京”);          map.put(“lisi”, ”上海”);          map.put(“wangwu”, ”深圳”);          m*.addObject(“map”,map);                    return m*;      }  }

本文链接:http://www.ahdhgm.com/html/87965834.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。