`

spring MVC之构造ModelAndView对象

 
阅读更多

spring MVC之构造ModelAndView对象

----------

 

构造ModelAndView对象

 

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

 

 

当你只有一个模型属性要返回时,可以在构造器中指定该属性来构造ModelAndView对象:

package com.apress.springrecipes.court.web;
...
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
public class WelcomeController extends AbstractController{
	public ModelAndView handleRequestInternal(HttpServletRequest request,
		HttpServletResponse response)throws Exception{
		Date today = new Date();
		return new ModelAndView("welcome","today",today);
	}
}

 

 

如果有不止一个属性要返回,可以先将它们传递到一个Map中再来构造ModelAndView对象。

package com.apress.springrecipes.court.web;
...
import org.springframework.web.servlet.ModelAndView;
import org. springframework.web.servlet.mvc.AbstractController;
public class ReservationQueryController extends AbstractController{
	...
	public ModelAndView handleRequestInternal(HttpServletRequest request,
		HttpServletResponse response)throws Exception{
		...
		Map<String,Object> model = new HashMap<String,Object>();
		if(courtName != null){
			model.put("courtName",courtName);
			model.put("reservations",reservationService.query(courtName));
		}
		return new ModelAndView("reservationQuery",model);
	}
}

 

 

Spring也提供了ModelMap,这是java.util.Map实现,可以根据模型属性的具体类型自动生成模型属性的名称。 

package com.apress.springrecipes.court.web;
...
import org.springframework.ui.ModelMap;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
public class ReservationQueryController extends AbstractController{
	...
	public ModelAndView handleRequestInternal(HttpServletRequest request,
		HttpServletResponse response)throws Exception{
		...
		ModelMap model = new ModelMap();
		if(courtName != null){
			model.addAttribute("courtName",courtName);
			model.addAttribute("reservations",reservationService.query(courtName));
		}
		return new ModelAndView("reservationQuery",model);
	}
}

由于这两个模型属性的类型为String和List<Reservation>,ModelMap会为它们生成默认的名称----stringreservationList。如果你不喜欢这些名称,可以显式地指定它们

 

 

构造完ModelAndView对象之后,仍然可以利用addobject()方法为它添加模型属性。这个方法返回ModelAndView对象

本身,因此可以在一个语句中构造ModelAndView对象。请注意,你也可以省略addObject()方法的属性名称。在这种情况下,这个方法会与ModeMap生成相同的属性名称。

package com.apress.springrecipes.court.web;
...
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
public class ReservationQueryController extends AbstractController{
	...
	public ModelAndView handleRequestInternal(HttpServletRequest request,
		HttpServletResponse response)throws Exception{
		....
		List<Reservation> reservations = null;
		if(courtName != null){
			reservations = reservationService.query(courtName);
		}
		return new ModelAndView("reservationQuery","courtName",courtName)
			.addObject("reservations",reservations);
	}
}

事实上,返回的模型和视图都是可选的。在有些情况下,你只返回视图,模型中没有任何属性。或者只返回模型,让Spring MVC根据请求URL来决定视图。有时候,如果让控制器直接处理HttpServletResponse对象,甚至可以返回null,例如在将二进制文件返回给用户的时候。

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Spring MVC 入门实例

    首先, 我需要在你心里建立起 Spring MVC 的基本概念. 基于 Spring 的 Web 应用程序接收到 http://localhost:8080/hello.do(事实上请求路径是 /hello.do) 的请求后, Spring 将这个请求交给一个名为 helloController ...

    Spring+Mybatis框架 ModelAndView

    Spring+Mybatis框架 ModelAndView 例子

    springmvc关于modelAndView的使用详细

    关于springmvc中的ModelAndView的详细代码,可以更好的了解spring。

    Spring MVC 3.0实战指南.ppt

    《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及解析器 7...

    java spring mvc

    主控制器调用Controller方法处理请求,(对DB操作可以调用DAO组件),方法执行后返回一个ModelAndView对象结果 d.ModelAndView里包含了响应View和数据信息,主控制器调用ViewResolver视图解析器根据ModelAndView的内容...

    Spring ModelAndView

    Spring mvc ModelAndView Serviceresponse ibatis

    Spring3MVC注解教程.ppt

    《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及...

    Spring MVC 员工管理系统

    Spring为展现层提供了一个优秀的Web框架——Spring MVC。和众多其它Web框架一样,它基于MVC设计理念,此外,由于它采用了松散耦合可插拔组件结构,具有比其它MVC框架更多的扩展性和灵活性。 Spring MVC框架围绕...

    springmvc demo

    Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发...

    Spring MVC+Spring+Hibernate+Oracle 框架集成用户登录注册Demo工程

    1)Demo 学习要点简介: 1.Spring MVC ModelAndView 2.数据库DAO基类的模式 2)Demo 导入说明: 1.Eclipse Encoding:UTF-8 2.内附Oracle建表等可执行语句

    spring mvc 思维导图

    Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servlet会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、本地化、时区与主题渲染等,甚至还能支持文件上传。...

    Spring MVC 学习笔记

    并返回一个ModelAndView对象(包含模型数据、逻辑视图名); 5、 ModelAndView的逻辑视图名交给ViewResolver解析器, ViewResolver解析器把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术...

    Spring MVC数据校验.docx

    Controller 将处理用户请求,Controller 处理完用户请求,则返回 ModelAndView 对象给 DispatcherServlet 前端控制器。 从宏观角度考虑,DispatcherServlet 是整个 Web 应用的控制器;从微观考虑,Controller 是单个...

    spring_MVC源码

    弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...

    Spring-mvc,例题

    spring,mvc,例题和所需要的包&lt;!-- 视图解析器,经返回的逻辑视图解析为物理视图 --&gt; &lt;bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt; ...

    Spring面试题

    1.spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。 2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller. 3....

    基于框架的Web开发-处理数据模型、转发和重定向.docx

    Spring MVC通过@RequestMapping注解将请求引导到处理方法上,并可以将请求消息绑定到方法的参数上。将请求绑定到方法上只是处理的第一步,方法还要执行相应的逻辑运算,产生模型数据,导向到特定视图。 将模型数据...

    myEclipse2013+spring-mvc+mybatis3.2.2实现增删改查简单完整版

    myEclipse2013+spring-mvc+mybatis3.2.2实现增删改查简单完整版,可在myEclipse2013自带的Tomcat 7上运行,weblogic上可能有问题,有ModelMap 和ModelAndView的简单使用比较,ModelMap用起来更方便简洁。也使用到了c...

    springmvc:@Controller @RequestMapping @RequestParam,模型和ModelAndView Spring MVC实践

    弹簧 @Controller @RequestMapping @RequestParam,模型和ModelAndView Spring MVC实践

    Spring MVC的学习

    一个最简单的例子,对构建SpringMVC的基本步骤有个直观的认识。跟struts做了一些比较。

Global site tag (gtag.js) - Google Analytics