spring MVC之构造ModelAndView对象

spring MVC之构造ModelAndView对象

----------

 

构造ModelAndView对象

 

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

 

 

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

Java代码  

  1. package com.apress.springrecipes.court.web;  
  2. ...  
  3. import org.springframework.web.servlet.ModelAndView;  
  4. import org.springframework.web.servlet.mvc.AbstractController;  
  5. public class WelcomeController extends AbstractController{  
  6.     public ModelAndView handleRequestInternal(HttpServletRequest request,  
  7.         HttpServletResponse response)throws Exception{  
  8.         Date today = new Date();  
  9.         return new ModelAndView("welcome","today",today);  
  10.     }  
  11. }  

 

 

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

Java代码  

  1. package com.apress.springrecipes.court.web;  
  2. ...  
  3. import org.springframework.web.servlet.ModelAndView;  
  4. import org. springframework.web.servlet.mvc.AbstractController;  
  5. public class ReservationQueryController extends AbstractController{  
  6.     ...  
  7.     public ModelAndView handleRequestInternal(HttpServletRequest request,  
  8.         HttpServletResponse response)throws Exception{  
  9.         ...  
  10.         Map<String,Object> model = new HashMap<String,Object>();  
  11.         if(courtName != null){  
  12.             model.put("courtName",courtName);  
  13.             model.put("reservations",reservationService.query(courtName));  
  14.         }  
  15.         return new ModelAndView("reservationQuery",model);  
  16.     }  
  17. }  

 

 

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

Java代码  

  1. package com.apress.springrecipes.court.web;  
  2. ...  
  3. import org.springframework.ui.ModelMap;  
  4. import org.springframework.web.servlet.ModelAndView;  
  5. import org.springframework.web.servlet.mvc.AbstractController;  
  6. public class ReservationQueryController extends AbstractController{  
  7.     ...  
  8.     public ModelAndView handleRequestInternal(HttpServletRequest request,  
  9.         HttpServletResponse response)throws Exception{  
  10.         ...  
  11.         ModelMap model = new ModelMap();  
  12.         if(courtName != null){  
  13.             model.addAttribute("courtName",courtName);  
  14.             model.addAttribute("reservations",reservationService.query(courtName));  
  15.         }  
  16.         return new ModelAndView("reservationQuery",model);  
  17.     }  
  18. }  

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

 

 

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

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

Java代码  

  1. package com.apress.springrecipes.court.web;  
  2. ...  
  3. import org.springframework.web.servlet.ModelAndView;  
  4. import org.springframework.web.servlet.mvc.AbstractController;  
  5. public class ReservationQueryController extends AbstractController{  
  6.     ...  
  7.     public ModelAndView handleRequestInternal(HttpServletRequest request,  
  8.         HttpServletResponse response)throws Exception{  
  9.         ....  
  10.         List<Reservation> reservations = null;  
  11.         if(courtName != null){  
  12.             reservations = reservationService.query(courtName);  
  13.         }  
  14.         return new ModelAndView("reservationQuery","courtName",courtName)  
  15.             .addObject("reservations",reservations);  
  16.     }  
  17. }  

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

时间: 2024-09-24 11:54:10

spring MVC之构造ModelAndView对象的相关文章

spring mvc前端传json,后端怎么直接对象获取

问题描述 在项目中碰到问题了就是我前端ajax传一个json过了, 我后端用在spring mvc怎么直接用对象去接收? 解决方案 可以在ajax里面填写$.ajax({ url: "/spring-mvc-json/rest/cont/person", type: 'POST', dataType: 'json', data: "{"name":"hmkcode","id":2}", contentTyp

Spring MVC 数据库绑定对象的对象

问题描述 Spring MVC 数据库绑定对象的对象 例如对象public class Boss { private int name; private Car car;} 数据库语句为<select id=""select"" resultType=""Boss"">select b.* c.* from Boss b Car c where ...</select> 怎么把查出来的c.*与 Boss

Spring mvc 接收json对象_javascript技巧

本文通过代码实例介绍spring mvc 接收json数据的方法,具体详情如下所示: 接收JSON 使用 @RequestBody 注解前台只需要向 Controller 提交一段符合格式的 JSON,Spring 会自动将其拼装成 bean. 1)在上面的项目中使用第一种方式处理返回JSON的基础上,增加如下方法: Java代码 @RequestMapping(value="/add",method=RequestMethod.POST, headers = {"conte

利用 FormData 对象和 Spring MVC 配合实现Ajax文件下载功能

Ajax文件下载 利用 FormData 对象和 Spring MVC 配合可以实现Ajax文件上载功能: 步骤 1.导入组件并准备静态脚本 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.2</version> </dependency> &l

hibernate+spring mvc, 解决hibernate 对象懒加载 json序列化问题

引用地址 在使用Spring MVC时,@ResponseBody 注解的方法返回一个有懒加载对象的时候出现了异常,以登录为例:   Java代码   @RequestMapping("login")       @ResponseBody       public Object login(@RequestParam String username,@RequestParam String password){           List<User> list=user

spring MVC 导出excel

原文地址:http://liuzidong.iteye.com/blog/1071823 参考资料  1 用spring MVC 生成Excel和PDF http://blog.csdn.net/linlzk/archive/2008/11/27/3389925.aspx 2 Spring MVC export data to Excel file via AbstractExcelView http://www.mkyong.com/spring-mvc/spring-mvc-export-d

深入整体分析Spring MVC framework

在当今的MVC framework里,似乎Webwork2逐渐成为主流, Webwork2+SpringFramework的组合变得越来越流行.这似乎意味着Spring自带的MVC framework远比Webwork2差,所以大家纷纷用Webwork2来代替.确实,Spring的MVC framework不算是整个Spring的核心部件,但它的威力却超过了很多人的想象.很多人包括xiecc认为Spring的MVC framework是非常优秀的,甚至比Webwork2更优秀. 下面列举一下Sp

Spring MVC 开发快速入门

快速入门 这篇文章将教你快速地上手使用 Spring 框架,如果你手上有一本<Spring in Action>, 那么你最好从第三部分"Spring 在 Web 层的应用--建立 Web 层"开始看, 否则那将是一场恶梦! 首先, 我需要在你心里建立起 Spring MVC 的基本概念. 基于 Spring 的 Web 应用程序接收到 http://localhost:8080/hello.do(事实上请求路径是 /hello.do) 的请求后, Spring 将这个请求

深入Spring MVC framework之总体分析

在当今的MVC framework里,似乎Webwork2逐渐成为主流, Webwork2+SpringFramework的组合变得越来越流行.这似乎意味着Spring自带的MVC framework远比Webwork2差,所以大家纷纷用Webwork2来代替.确实,Spring的MVC framework不算是整个Spring的核心部件,但它的威力却超过了很多人的想象.很多人包括xiecc认为Spring的MVC framework是非常优秀的,甚至比Webwork2更优秀. 下面列举一下Sp