<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. legend3---17、如何抽象和复用控制器中的方法

    legend3---17.如何抽象和复用控制器中的方法 一.总结 一句话总结: 比如不同的控制器中都用了检查手机号是否已经注册,是否没注册这样的功能,我应该如何抽象和复用方法 新建一个处理手机号码的模 ...

  2. php实现excel单元格合并,字体加粗居中等操作

    使用的是phpexcel,基本用的原生语法,所见即所得,直接复制下面代码,即可: // 引用phpexcel类 $this->load->library('PHPExcel'); // 创 ...

  3. PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo)--续

    2.PHP与Mysqli扩展,面向过程.对象 <?php $mysql_conf = array( 'host' => '127.0.0.1:3306', 'db' => 'test ...

  4. js刷新页面location.reload()用法

    转: js刷新页面location.reload()用法 2018年05月10日 10:23:28 大灰狼的小绵羊哥哥 阅读数 31359更多 分类专栏: [前端面试点滴知识 ]   本文介绍了js刷 ...

  5. 自定义string类

    #include <iostream> #include <cstring> using namespace std; class String; class Data{ // ...

  6. 一百四十:CMS系统之使用flask-paginate实现分页功能

    官方文档:https://pythonhosted.org/Flask-paginate/ 安装:pip install flask-paginate 在没有分页的情况下,默认会加载所有内容 在con ...

  7. MySQL创建及删除临时表

    示例SQL: drop temporary table if exists testdb.tmp_test_table; create temporary table testdb.tmp_test_ ...

  8. 基于MSP430F2618的程控电压源

    基于MSP430F2618的程控电压源 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 系列博客说明:此系列博客属于作者在大三大四阶段所储备的关于电子电路设计 ...

  9. mysql 查询结果为null 或 空字符串时,返回指定字符串

    直接上代码, 亲测可用: SELECT IF ( ifnull( 字段, '' ) = '', '返回的字符串', 字段) AS 别名(或者不要也可以) FROM table

  10. go json解析Marshal和Unmarshal

    Decoder: package main import ( "encoding/json" "fmt" "io" "log&qu ...