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