SpringMVC学习 -- ModelAndView , Model , ModelMap , Map 及 @SessionAttributes 的使用

输出模型数据:

  • ModelAndView:处理方法返回值类型为 ModelAndView 时 , 其中包含视图和模型信息。方法体即可通过该对象添加模型数据 , 即 SpringMVC 会把 ModelAndView 中的 model 模型放入到 request 域对象中。
  • Map, Model, ModelMap:目标方法的入参中包含 Map, Model, ModelMap 类型的数据, 返回值是 String 类型,Spring MVC 会自动把 Map, Model, ModelMap转化成模型信息放入到 request 域对象中,把返回的 String 类型数据转化成视图信息。
  • @SessionAttributes:只能定义在 Class, interface , enum 上。@SessionAttributes 除了可以通过属性名指定需要放到会话中的属性外,还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中。Spring MVC 将在模型中对应的属性暂存到 HttpSession 中。
    1. value:指定的属性名。可以是 String[] 类型的数据。
    2. type:模型属性对应的类型。可以是 Class<?>[] 类型的数据。
  • @ModelAttribute:方法入参标注该注解后 , 入参的对象就会放到数据模型中(暂时不太懂)。
  1 package com.itdoc.springmvc.entities;
  2
  3 import org.springframework.stereotype.Controller;
  4 import org.springframework.ui.Model;
  5 import org.springframework.ui.ModelMap;
  6 import org.springframework.web.bind.annotation.*;
  7 import org.springframework.web.servlet.ModelAndView;
  8
  9 import java.util.Arrays;
 10 import java.util.Date;
 11 import java.util.List;
 12 import java.util.Map;
 13
 14 /**
 15  * @BLOG http://www.cnblogs.com/goodcheap
 16  * @DESCRIBE
 17  * @AUTHOR WángChéngDá
 18  * @DATE 2017-03-09 13:55
 19  */
 20 @Controller
 21 /**
 22  * @SessionAttributes 只能定义在 Class, interface , enum 上。
 23  * @SessionAttributes 除了可以通过属性名指定需要放到会话中的属性外,
 24  * 还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中。
 25  * Spring MVC 将在模型中对应的属性暂存到 HttpSession 中。
 26  * ?value:指定的属性名。可以是 String[] 类型的数据。
 27  * ?type:模型属性对应的类型。可以是 Class<?>[] 类型的数据。
 28  */
 29 //@SessionAttributes(value = {"time", "names"}, types = {String.class, User.class})
 30 public class TestModelAndView {
 31
 32     public static final String SUCCESS = "success";
 33
 34     @ModelAttribute
 35     public void getUser(@RequestParam(value = "id", required = false) Integer id,
 36                         Map map) {
 37         System.out.println("I am TestModelAndView‘s getUser method...");
 38         if (id != null) {
 39             //模拟从数据库获取对象
 40             User user = new User(1, "Tom", 12, "123456", "[email protected]");
 41             System.out.println("从数据库中获取一个对象: " + user);
 42             map.put("user", user);
 43         }
 44     }
 45
 46
 47     @RequestMapping(value = "/updateUser", method = RequestMethod.POST)
 48     public String updateUser(User user) {
 49         System.out.println("修改: " + user);
 50         return SUCCESS;
 51     }
 52
 53     @RequestMapping("/getModel")
 54     public String getModel(Model model) {
 55         model.addAttribute("names", Arrays.asList("Tom", "Jack", "Lucy", "Mark"));
 56         model.addAttribute("time", new Date());
 57         model.addAttribute("school", "东北财经大学");
 58         model.addAttribute("user", new User("Tom", 13));
 59         return SUCCESS;
 60     }
 61
 62     @RequestMapping("/getModelMap")
 63     public String getModelMap(ModelMap modelMap) {
 64         List<String> strings = Arrays.asList("Tom", "Jack", "Lucy", "Mark");
 65         modelMap.put("names", Arrays.asList("Tom", "Jack", "Lucy", "Mark"));
 66         modelMap.put("time", new Date());
 67         modelMap.put("school", "东北财经大学");
 68         modelMap.put("user", new User("Tom", 13));
 69         return SUCCESS;
 70     }
 71
 72     /**
 73      * 目标方法的入参中包含 Map, Model, ModelMap 类型的数据, 返回值是 String 类型,
 74      * Spring MVC 会自动把 Map, Model, ModelMap 转化成模型信息放入到 request 域对象中,
 75      * 把返回的 String 类型数据转化成视图信息。
 76      *
 77      * @param map
 78      * @return
 79      */
 80     @RequestMapping("/getMap")
 81     public String getMap(Map<String, Object> map, String name) {
 82         map.put("names", Arrays.asList("Tom", "Jack", "Lucy", "Mark"));
 83         map.put("time", new Date());
 84         map.put("school", "东北财经大学");
 85         map.put("user", new User("Tom", 13));
 86         return SUCCESS;
 87     }
 88
 89     /**
 90      * 目标的返回值是 ModelAndView, 其中包含视图和模型信息。
 91      * SpringMVC 会把 ModelAndView 中的 model 模型放入到 request 域对象中。
 92      *
 93      * @return
 94      */
 95     @RequestMapping("/testModelAndView")
 96     public ModelAndView testModelAndView() {
 97         String viewName = SUCCESS;
 98         ModelAndView mv = new ModelAndView(viewName);
 99         mv.addObject("names", Arrays.asList("Tom", "Jack", "Lucy", "Mark"));
100         mv.addObject("time", new Date());
101         mv.addObject("school", "东北财经大学");
102         mv.addObject("user", new User("Tom", 13));
103         System.out.println(mv);
104         return mv;
105     }
106 }
时间: 2024-10-12 15:45:45

SpringMVC学习 -- ModelAndView , Model , ModelMap , Map 及 @SessionAttributes 的使用的相关文章

springMVC数据模型model,modelmap,map,@ModelAttribute的相互关系

结论: a.注解方法中形参为model,modelmap,map一个或几个时,他们指向的引用对象相同即他们的值相同. b.当使用@ModelAttribute注解请求参数时,springmvc自动将该参数放入model,modelmap,map中. c.model,modelmap,map中put,request.setattribute(),b中@ModelAttribute以及modelandveiw.addObj()效果相同,return时都是将参数放request的attribute中.

spring学习之springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序

spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void.下面将对具体的一一进行说明:ModelAndView Java代码 @RequestMapping("/show1") publicModelAndView show1(HttpServletRequest request, HttpServletResponse response) throwsException { ModelA

springMVC:modelandview,model,controller,参数传递

转载:http://blog.csdn.net/wm5920/article/details/8173480 1.web.xml 配置: copy <> ></> ></> > >> ></> ></> > ></> </> <> ></> ></> </> 这样,所有的.htm的请求,都会被Dispatche

SpringMVC(二)--处理数据模型、ModelAndView、Model、Map、重定向、@ModelAttribute、

1.处理模型数据 Spring MVC 提供了以下几种途径输出模型数据: – ModelAndView:处理方法返回值类型为 ModelAndView 时, 方法体即可通过该对象添加模型数据 – Map 及 Model.ModelMap: 入参为 org.springframework.ui.Model.org.springframework.ui. ModelMap 或 java.uti.Map 时,处理方法返回时,Map 中的数据会自动添加到模型中. 无论返回值是String类型,还是Mod

springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序

springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序 http://www.360doc.com/content/14/0309/19/834950_359080244.shtml

SpringMVC学习资料

一.SpringMVC 1.helloworld 1.导包 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.0.2.RELEASE</version> </dependency> <dependency> <groupId>org.spr

【SpringMVC学习05】SpringMVC中的参数绑定总结

众所周知,springmvc是用来处理页面的一些请求,然后将数据再通过视图返回给用户的,前面的几篇博文中使用的都是静态数据,为了能快速入门springmvc,在这一篇博文中,我将总结一下springmvc中如何接收前台页面的参数,即springmvc中的参数绑定问题. 1. 参数绑定的过程 我们可以回忆一下,在struts2中,是通过在Action中定义一个成员变量来接收前台传进来的参数,而在springmvc中,接收页面提交的数据是通过方法形参来接收的.从客户端请求的key/value数据,经

springmvc学习(五)——处理模型数据

Spring MVC 提供了以下几种途径输出模型数据: ModelAndView: 处理方法返回值类型为 ModelAndView 时, 方法体即可通过该对象添加模型数据Map 及 Model: 入参为org.springframework.ui.Model.org.springframework.ui.ModelMap 或 java.uti.Map 时,处理方法返回时,Map 中的数据会自动添加到模型中.@SessionAttributes: 将模型中的某个属性暂存到HttpSession 中

SpringMVC 学习笔记(四) 处理模型数据

Spring MVC 提供了以下几种途径输出模型数据: – ModelAndView: 处理方法返回值类型为 ModelAndView时, 方法体即可通过该对象添加模型数据 – Map及Model:入参为org.springframework.ui.Model.org.springframework.ui.ModelMap 或 java.uti.Map 时,处理方法返回时,Map中的数据会自动添加到模型中. – @SessionAttributes: 将模型中的某个属性暂存到HttpSessio