- 浏览: 18762 次
- 性别:
- 来自: 上海
最新评论
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)
一个例子是org.springframework.web.servlet.view.RedirectView,ModelAndView预设是使 用forward来转发请求结果至视图,使用RedirectView的话,则会使用redirect将请求重导至视图,例如:
…
public ModelAndView handleRequest(....) … {
....
return new ModelAndView(new RedirectView(this.getViewPage()));
}
....
在这边,viewPage的地址是从服务器网页根目录开始指定,而不是Web应用程序的根目录,所以您的getViewPage()传回的地址必须像是 /springapp/pages/index.htm这样的地址,其中springapp是您的Web应用程序目录。
使用forward的话,网址列上并不会出现被转发的目标地址,而且forward是在Web应用程序之内进行,可以访问Web应用程序的隐藏目录,像是WEB-INF,然而forward只能在Web应用程序中进行,不能指定至其它的Web应用程序地址。
使用redirect的话,是要求客户端浏览器重新发出一个指定的请求地址,因此网址列上会出现被重导的目录地址,重导的请求是由浏览器发出,所以不能 访问Web应用程序中的隐藏目录,像是WEB-INF,然而重导是重新要求一个网页,所以可以指定至其它的Web应用程序地址。
DispatcherServlet会根据传回的ModelAndView来解析View名称,并处理给予的Model。View名称的解析是委托给实 作org.springframework.web.servlet.ViewResolver接口的实例,ViewResolver接口定义如下:
public interface ViewResolver {
public view resolveViewName(String, Locale locale) throws ServletException;
}
ViewResolver的一个实例是InternalResourceViewResolver,名称解析完之后,实际的View绘制与Model转 换处理是交给实作org.springframework.web.servlet.View的实例,View接口如下:
public interface View {
public void render(Map model, HttpServletResquest resquest, HttpServletResponse response) throws ServletException, IOException;
}
View的实作之前用过org.springframework.web.servlet.view.InternalResourceView,另外也还有JstlView、TilesView、VelocityView等等的实作,分别进行不同的表现展处理 。
ModelAndView() 这个构造方法构造出来的ModelAndView不能直接使用,应为它没有指定view,也没有绑定对应的model对象。当然,model对象不是必须的,但是view确实必须的。
用这个构造方法构造的实例主要用来在以后往其中加view设置和model对象。
给ModelAndView实例设置view的方法有两个:setViewName(String viewName) 和 setView(View view)。前者是使用viewname,后者是使用预先构造好的View对象。其中前者比较常用。事实上View是一个接口,而不是一个可以构造的具体类,我们只能通过其他途径来获取View的实例。对于viewname,它既可以是jsp的名字,也可以是tiles定义的名字,取决于使用的ViewNameResolver如何理解这个view name。
如何获取View的实例以后再研究。
而对应如何给ModelAndView实例设置model则比较复杂。有三个方法可以使用:
addObject(Object modelObject)
addObject(String modelName, Object modelObject)
addAllObjects(Map modelMap)
ModelAndView
可以接收Object类型的对象,ModelAndView将它视为其众多model中的一个。当使用Object类型的对象的时候,必须指定一个名字。ModelAndView也可以接收没有明显名字的对象,原因在于ModelAndView将调用spring自己定义的Conventions 类的.getVariableName()方法来为这个model生成一个名字。显然,对model而言,名字是必须的。
Conventions.getVariableName()生成名字的规则是使用对象的类名的小写模式来作model名字。当这个model是集合或数组的时候,使用集合的第一个元素的类名加s来作model的名字。
ModelAndView也可以接收Map类型的对象,ModelAndView将这个Map中的元素视为model,而不是把这个Map本身视为model。但是其他的集合类可以用本身作为model对象。
实际上,ModelAndView对model的支持来自于类ModelMap,这个类继承自HashMap。
完整的例子:
public ModelAndView handleRequestInternal(
HttpServletRequest request,
HttpServletResponse response) throws Exception {
ModelAndView mav = new ModelAndView("hello");//实例化一个VIew的ModelAndView实例
mav.addObject("message", "Hello World!");//添加一个带名的model对象
return mav;
}
发表评论
-
JAVA进度条制作,让大家一起分享!
2011-12-16 21:44 1045import javax.swing.*;import jav ... -
MyEclipse6.5安装SVN插件的三种方法
2013-02-21 13:29 782一、安装方法: 方法一、如果可以上网可在线安装 1. ... -
中国通信号码段 正则
2013-02-21 13:30 719// 中国移动134.135.136.137.138.13 ... -
Java+XML+MVC 框架StrutsCX简介
2013-02-21 13:31 670学习中,有意者可联系我,共同研究...... ... -
log4j使用示例
2011-12-28 16:47 729PART 1 介绍log4j的好处在于:1.通过修改配置文 ... -
struts2完全捕获404错误的方法
2013-02-21 13:31 740目前在做一个网络应 ... -
spring cronExpression定时格式
2013-02-21 13:30 867一个 cronExpression 表达式有至少6个( ... -
浅析Java web程序之客户端和服务器端交互原理
2011-11-25 12:12 01. 协议 a. TCP/IP整体构架概述 TCP/ ... -
jstl 使用小结总结一下
2011-11-25 12:09 0JSTL标记库由以下标记组成: core:核心标签,流 ... -
文章列举了Java目前面临的几大问题
2011-11-25 12:05 01.业务需求以及改变,改变的地方非常多。开发者已经被语言限 ... -
《墨攻》理解IoC—Spring底层核心
2011-11-25 12:04 677概述 IoC(反向控制:Inverse of Con ... -
Java虚拟机
2009-09-07 08:23 563一种用于计算设备的规范,可用不同的方式(软件或硬件)加以实现。 ... -
Java工厂方法模式设计
2009-09-13 03:37 607一 、工厂方法(Factory Method)模式 工厂方法 ...
相关推荐
Spring MVC 是一个基于Java的轻量级Web应用框架,它为开发者提供了模型-视图-控制器(MVC)架构,使开发人员能够更好地组织和分离应用程序的业务逻辑、数据处理和用户界面。Spring MVC是Spring框架的一个核心组件,...
Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序而设计。它提供了模型-视图-控制器(MVC)架构,使开发者能够有效地分离业务逻辑、数据处理和用户界面。在"Spring MVC 4.2.3"版本中,我们看到了一系列的...
1)Demo 学习要点简介: 1.Spring MVC ModelAndView 2.数据库DAO基类的模式 2)Demo 导入说明: 1.Eclipse Encoding:UTF-8 2.内附Oracle建表等可执行语句
Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序提供模型-视图-控制器(MVC)架构。在Spring MVC 4.0版本中,它引入了许多改进和新特性,以提升开发效率和应用程序的性能。 1. **依赖注入**:Spring ...
Spring MVC 是一个强大的Java Web开发框架,它是Spring框架的一部分,专为构建高度可扩展和模块化的Web应用程序而设计。在2015年的版本中,Spring MVC 4已经相当成熟,提供了许多特性来简化开发流程并提高开发效率。...
此外,Spring MVC提供了ModelAndView类,它可以将处理结果(模型数据)和视图名组合在一起,方便返回给视图层进行渲染。`@ResponseBody`注解可以让方法的返回值直接写入HTTP响应体,常用于返回JSON或XML等格式的数据...
Spring MVC 和 MyBatis 是两个在Java Web 开发中广泛使用的框架。Spring MVC 作为Spring框架的一部分,负责处理HTTP请求并转发到相应的业务逻辑,而MyBatis则是一个轻量级的持久层框架,用于简化数据库操作。整合这...
Spring MVC 是一款基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要用于构建Web应用程序的后端控制器。在本实例中,我们有一个名为"spring-MVC.zip"的压缩包,里面包含了一个关于Spring MVC的开发...
3. `org.springframework.web.servlet-3.0.2.RELEASE.jar`:这是 Spring MVC 的核心模块,提供了控制器(Controller)、模型视图(ModelAndView)以及调度器Servlet(DispatcherServlet)等关键组件。...
标题中的"开发Spring MVC应用程序补充—程序源码下载.rar_spring_spring mvc_spring mvc 源码_sp"表明这是一个关于Spring MVC框架的开发教程,其中包含了源代码供学习者参考。Spring MVC是Spring框架的一个核心组件...
6. **ModelAndView**: 这是Spring MVC中用于在控制器和视图之间传递数据的类,包含了模型数据和视图信息。 7. **HandlerMapping**: 处理器映射器根据请求URL找到合适的处理器方法。 8. **HandlerAdapter**: 处理器...
在本项目中,我们主要探讨的是如何利用Spring MVC和Spring Security框架构建一个基本的无数据库登录系统。Spring MVC是Spring框架的一部分,用于处理Web应用程序的请求-响应模型,而Spring Security则是一个强大的...
### Spring MVC 教程知识点详解 #### Spring Web MVC 框架简介 Spring Web MVC 是 Spring Framework 的一个重要组成部分,主要用于构建基于 Java 的 Web 应用程序。它提供了一个灵活且强大的 MVC 实现,使得开发者...
Spring MVC 是一个基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要用于构建Web应用程序的后端控制器。这个"Spring MVC 基础实例源码01"的资源很可能是为了帮助初学者理解Spring MVC的核心概念和...
Spring MVC通过ModelAndView中的视图名,结合视图解析器来决定如何呈现结果。 9. **视图解析器(View Resolver)**:负责根据视图名解析出实际的视图,如JSP页面的路径。 10. **拦截器(Interceptor)**:Spring ...
在Spring MVC中,DispatcherServlet作为核心组件负责请求分发,Controller处理请求并返回ModelAndView对象,ViewResolver解析模型数据并渲染视图。 2. **配置与启动** 配置Spring MVC通常涉及web.xml文件中的...
4. **ModelAndView对象**: 这是Spring MVC中用于封装模型数据和视图名的对象。在Controller方法中,可以返回一个ModelAndView对象,指定返回的视图和传递给视图的数据。 5. **视图解析**: Spring MVC支持多种视图...
本书首先介绍了Spring MVC的基础知识,包括如何搭建Spring MVC环境,以及它的核心组件如DispatcherServlet、ModelAndView、HandlerMapping和HandlerAdapter等的工作原理。这些组件在Web请求处理过程中扮演着重要角色...