<a href="<%=request.getContextPath()%>/responseData/response_1">使用原生的作用域</a>

    <a href="<%=request.getContextPath()%>/responseData/response_2">ModelAndView</a>

    <a href="<%=request.getContextPath()%>/responseData/response_3">Model,Map,ModelMap</a>

controller

package com.shyroke.controller;

import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; @Controller
@RequestMapping(value = "/responseData")
public class ResponseDataController {
@Autowired
private HttpServletRequest request;
@Autowired
private HttpServletResponse response;
@Autowired
private HttpSession session;
@Autowired
private ServletContext servletContext; @RequestMapping(value = "/response_1")
public String response_1() throws Exception {
this.request.setAttribute("req_key", "Request作用域"); this.session.setAttribute("session_key", "Session作用域"); this.servletContext.setAttribute("app_key", "Application作用域"); return "responseData";
} @RequestMapping(value = "/response_2")
public ModelAndView response_2() throws Exception {
/**
* ModelAndView中的数据只保存在Request中。
*/
ModelAndView mv = new ModelAndView();
mv.addObject("mv_1", "ModelAndView中的数据1");
mv.addObject("mv_2", "ModelAndView中的数据2"); mv.setViewName("responseData"); return mv;
} /**
* Model,Map,ModelMap中放入相同的数据,会前后覆盖。
*
*
* ModelAndView与上述3个放入相同的数据,最后起作用是ModelAndView中的数据。
*/
@RequestMapping(value = "/response_3")
public ModelAndView response_3(Model model, Map map, ModelMap modelMap)
throws Exception {
System.out.println("response_3方法"); ModelAndView mv = new ModelAndView();
mv.addObject("mv_1", "ModelAndView中的数据1");
mv.addObject("common", "ModelAndView中放入的"); model.addAttribute("model_1", "Model中的数据");
model.addAttribute("model_2", "Model中的数据2"); map.put("map_1", "Map中的数据1");
map.put("map_2", "Map中的数据2"); modelMap.addAttribute("modelMap_1", "ModelMap中的数据");
modelMap.put("modelMap_2", "ModelMap中的数据2");
modelMap.addAttribute("common", "ModelMap中放入的");
map.put("common", "Map中放入的");
model.addAttribute("common", "Model中放入的"); mv.setViewName("responseData");
return mv;
// return "responseData";
} }
  • ModelAndView中的数据只保存在Request中。
  •  Model,Map,ModelMap中放入相同的数据,会前后覆盖。
  •  ModelAndView与上述3个放入相同的数据,最后起作用是ModelAndView中的数据。

结果:

(六)springmvc之ModelAndView、Model、Map、ModelMap的更多相关文章

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

    输出模型数据: ModelAndView:处理方法返回值类型为 ModelAndView 时 , 其中包含视图和模型信息.方法体即可通过该对象添加模型数据 , 即 SpringMVC 会把 Model ...

  2. SpringMVC ModelAndView、Map、Model、ModelMap

    目标方法返回值可以是ModelAndView .Map.Model.ModelMap类型,但最根本还都是ModelAndView. 其中可以包含试图和模型信息. SpringMVC 会把ModelAn ...

  3. SpringMVC中Map、Model、ModelMap、ModelAndView之间的关系及区别

    首先,在了解这三者之前,需要知道一点:SpringMVC在调用方法前会创建一个隐含的数据模型(Model),作为模型数据的存储容器, 成为”隐含模型”. 如果controller方法的参数为Moedl ...

  4. SpringMVC Model,ModelMap ModelAndView

    SpringMVC 调用方法之前会创一个隐含的模型对象(即Model,ModelMap ModelAndView) //@ModelAttribute 先于login方法执行 @ModelAttrib ...

  5. SpringMVC 向页面传值-Map、Model和ModelMap

    除了使用ModelAndView方式外.还可以使用Map.Model和ModelMap来向前台页面传值 使用后面3种方式,都是在方法参数中,指定一个该类型的参数.例如: Java代码 @Request ...

  6. Spring中Model、ModelMap及ModelAndView之间的区别

    Spring中Model.ModelMap及ModelAndView之间的区别   1. Model(org.springframework.ui.Model)Model是一个接口,包含addAttr ...

  7. Spring中Model、ModelMap及ModelAndView之间的区别+传递参数

    org.springframework.ui.Model(接口)传递数据,Spring框架自动创建它的一个实现类,如BindingAwareModelMap org.springframework.u ...

  8. Spring MVC 向页面传值-Map、Model和ModelMap

    原文链接:https://www.cnblogs.com/caoyc/p/5635878.html Spring MVC 向页面传值-Map.Model和ModelMap 除了使用ModelAndVi ...

  9. Spring MVC-学习笔记(2)DispatcherServlet、@Controller、@RequestMapping、处理方法参数类型、可返回类型、Model、ModelMap、ModelAndView

    1.前端控制器org.springframework.web.servlet.DispatcherServlet 所有的请求驱动都围绕这个DispatcherServlet来分派请求.springMV ...

随机推荐

  1. Socket函数详解

    #include <sys/types.h>; #include <sys/socket.h>; --------------------------------------- ...

  2. Hallelujah Leonard Cohen

      Hallelujah 歌词   Leonard Cohen   Now I've heard there was a secret chord   我听说有一个隐秘的弦音   That David ...

  3. 123457123457#0#-----com.cym.shuXueWangGuo1--前拼后广--儿童数学

    123456123456#1#-----com.cym.shuXueWangGuo1--前拼后广--儿童数学

  4. MySQL5.7查看数据存储位置

    在MySQL客户端执行如下命令查看MySQL的数据存放位置: mysql> show global variables like "%datadir%"; +-------- ...

  5. Qt598x64vs2017.跨线程传递std::string

    1.Qt编译的时候 提示 str::string 需要在main(...)中注册什么的(大概是这个意思,记不清了),于是 在main(...)中调用了 “qRegisterMetaType<st ...

  6. 最新 美柚java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿. 美柚等10家互联网公司的校招Offer,因为某些自身原因最终选择了 美柚.6.7月主要是做系统复习.项目复盘.LeetCo ...

  7. 滑动窗口协议(Sliding Window Protocol)

    滑动窗口协议(Sliding Window Protocol),属于TCP协议的一种应用,用于网络数据传输时的流量控制,以避免拥塞的发生.该协议允许发送方在停止并等待确认前发送多个数据分组.由于发送方 ...

  8. 基于.Net Standard开发的微信服务端开源库

    一直想做一个开源库, 为社区贡献一份力量, 同时提高一下自己 一年来在给公司做一款微信小程序, 于是突发奇想用.Net Standard做一整套微信开发服务端类库 地址: https://gitee. ...

  9. 平衡树B树B+树红黑树

    二叉树与二叉查找树的操作是必须要熟练掌握的,接下来说的这些树实现起来很困难,所以我们重点去了解他们的特点. 一.平衡二叉查找树与红黑树 平衡树AVL:追求绝对的高度平衡,它具有稳定的logn的高度,因 ...

  10. Centos6.5镜像下载

    CentOS6.5系统安装 1.首先打开网易开源镜像站: http://mirrors.163.com/ 当然,大家也可以使用阿里开源镜像站:http://mirrors.aliyun.com/ 2. ...