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会为它们生成默认的名称----string和reservationList。如果你不喜欢这些名称,可以显式地指定它们。
构造完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 的 Web 应用程序接收到 http://localhost:8080/hello.do(事实上请求路径是 /hello.do) 的请求后, Spring 将这个请求交给一个名为 helloController ...
Spring+Mybatis框架 ModelAndView 例子
关于springmvc中的ModelAndView的详细代码,可以更好的了解spring。
《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及解析器 7...
主控制器调用Controller方法处理请求,(对DB操作可以调用DAO组件),方法执行后返回一个ModelAndView对象结果 d.ModelAndView里包含了响应View和数据信息,主控制器调用ViewResolver视图解析器根据ModelAndView的内容...
Spring mvc ModelAndView Serviceresponse ibatis
《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及...
Spring为展现层提供了一个优秀的Web框架——Spring MVC。和众多其它Web框架一样,它基于MVC设计理念,此外,由于它采用了松散耦合可插拔组件结构,具有比其它MVC框架更多的扩展性和灵活性。 Spring MVC框架围绕...
Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发...
1)Demo 学习要点简介: 1.Spring MVC ModelAndView 2.数据库DAO基类的模式 2)Demo 导入说明: 1.Eclipse Encoding:UTF-8 2.内附Oracle建表等可执行语句
Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servlet会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、本地化、时区与主题渲染等,甚至还能支持文件上传。...
并返回一个ModelAndView对象(包含模型数据、逻辑视图名); 5、 ModelAndView的逻辑视图名交给ViewResolver解析器, ViewResolver解析器把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术...
Controller 将处理用户请求,Controller 处理完用户请求,则返回 ModelAndView 对象给 DispatcherServlet 前端控制器。 从宏观角度考虑,DispatcherServlet 是整个 Web 应用的控制器;从微观考虑,Controller 是单个...
弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...
spring,mvc,例题和所需要的包<!-- 视图解析器,经返回的逻辑视图解析为物理视图 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> ...
1.spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。 2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller. 3....
Spring MVC通过@RequestMapping注解将请求引导到处理方法上,并可以将请求消息绑定到方法的参数上。将请求绑定到方法上只是处理的第一步,方法还要执行相应的逻辑运算,产生模型数据,导向到特定视图。 将模型数据...
myEclipse2013+spring-mvc+mybatis3.2.2实现增删改查简单完整版,可在myEclipse2013自带的Tomcat 7上运行,weblogic上可能有问题,有ModelMap 和ModelAndView的简单使用比较,ModelMap用起来更方便简洁。也使用到了c...
弹簧 @Controller @RequestMapping @RequestParam,模型和ModelAndView Spring MVC实践
一个最简单的例子,对构建SpringMVC的基本步骤有个直观的认识。跟struts做了一些比较。