<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. CSS中的cursor属性

    css中的cursor这个属性是用来设置光标形状的. 这个属性定义了鼠标指针放在一个元素边界范围内时所用的光标的形状. 默认值:auto 继承性:yes 出现版本:css2 JavaScript语法: ...

  2. nginx php-fpm安装配置 CentOS编译安装php7.2

    CentOS编译安装php7.2 介绍: 久闻php7的速度以及性能那可是比php5系列的任何一版本都要快,具体性能有多好,建议还是先尝试下再说.如果你是升级或新安装,那你首先需要考虑php7和程序是 ...

  3. Keyframe类-动画中关键帧概念

    package com.loaderman.customviewdemo; import android.animation.Animator; import android.animation.Ke ...

  4. rf笔记

    1.使用robot 用例绝对路径 可执行用例 2.robot --h 可以查看命令用法 3. 创建字典 *** Settings *** Library         Collections *** ...

  5. 123457123457#0#-----com.yimeng.TouNaoWangZhe--前拼后广--brain游戏one

    com.yimeng.TouNaoWangZhe--前拼后广--brain游戏one

  6. 123467123456#1#-----com.twoapp.DaDiShuGame01--前拼后广--现实打地鼠游戏jiemei

    com.twoapp.DaDiShuGame01--前拼后广--现实打地鼠游戏jiemei

  7. Lombok子类与父类的@Builder注解冲突

    解决方法之一:去掉父类的@builder 缺点:父类不能使用Builder构造器模式 来源:https://www.cnblogs.com/lori/p/10266508.html

  8. centos6.8 ssh 问题

    xshell用ROOT不能登录 需要把 /etc/ssh/sshd_config 中的端口新建一个 不能用默认的

  9. sonar:windows重启sonar

    登录后操作

  10. 使用GDAL进行波段分离

    波段分离一般最常用的还是OpenCV,使用OpenCV的split方法可以直接对波段分离,并且效果不错,但是有一个问题是只能处理有限波段的数据,比如波段超过一定的数目就无法完成波段分离工作,或者数据有 ...