/**

* SpringMVC除过在方法上传入原生的request和session外还能怎么样把数据带给页面

*

 * 四大域:

*  pageContext:${pageScope.msg }<br/>

reqest:${requestScope.msg }<br/>

session:${sessionScope.msg }-${sessionScope.haha}<br/>

application:${applicationScope.msg }<br/>

需要知道一点SpringMVC在调用方法前会创建一个隐含的数据模型,作为模型数据的存储容器, 成为”隐含模型”。也就是说在每一次的前后台请求的时候会随带这一个背包,不管你用没有,这个背包确实是存在的,用来盛放我们请求交互传递的值;

*

 * 1)、可以在方法处传入Map、或者Model或者ModelMap。

*          给这些参数里面保存的所有数据都会放在请求域中。可以在页面获取reqest:${requestScope.msg }<br/>

*   关系:

*         Map,Model,ModelMap:最终都是BindingAwareModelMap在工作;

*         相当于给BindingAwareModelMap中保存的东西都会被放在请求域中;

*

*          Map(interface(jdk))      Model(interface(spring))

*                 ||                                               //

*          LinkedHashMap(实现类class)                  //

*                 ||                                          //

*          ModelMap(class)                     //

*                               \\                         //

*                                \\             //

*                               ExtendedModelMap(实现类class)

*                                             |

*                                             ||

*                               BindingAwareModelMap(class)

ExtendedModelMap:

Model(org.springframework.ui.Model)
Model是一个接口,包含addAttribute方法,其实现类是ExtendedModelMap。
ExtendedModelMap继承了ModelMap类,ModelMap类实现了Map接口。

如下:

*

 * 2)、方法的返回值可以变为ModelAndView类型;

*                 既包含视图信息(页面地址)也包含模型数据(给页面带的数据);

*                 而且数据同样是放在请求域中;

*                 request、session、application;

*

 * 3)、SpringMVC提供了一种可以临时给Session域中保存数据的方式;

*   使用一个注解      @SessionAttributes(只能标在类上)

*   @SessionAttributes(value="msg"):

*          给BindingAwareModelMap中保存的数据,或者ModelAndView中的数据,

*          的同时给session中放一份;

*          value指定保存数据时要给session中放的数据的key;

*

*   value={"msg"}:只要保存的是这种key的数据,给Session中放一份

*   types={String.class}:只要保存的是这种类型的数据,给Session中也放一份

*

*  后来推荐@SessionAttributes就别用了,可能会引发异常;

*                 给session中放数据请使用原生API;

【串线篇】SpringMvc数据传出的更多相关文章

  1. 《Java从入门到放弃》入门篇:springMVC数据传递

    springMVC中的数据传递方式与JSP和Struts2相比,更加的简单.具体有什么样的区别呢?我们通过下面这张图来对比就知道了. 随手画的,有些错别字,不用太在意..... 接下来,进入正题,sp ...

  2. 【串线篇】实现一个RestfulCRUD

    一.概述 利用SpringMVC做一个CRUD(增删改查)符合Rest风格的: C:Create:创建 R:Retrieve:查询 U:Update:更新 D:Delete:删除 <%@tagl ...

  3. 解剖SQLSERVER 第二篇 对数据页面头进行逆向(译)

    解剖SQLSERVER 第二篇  对数据页面头进行逆向(译) http://improve.dk/reverse-engineering-sql-server-page-headers/ 在开发Orc ...

  4. SpringMVC数据验证

    SpringMVC数据验证——第七章 注解式控制器的数据验证.类型转换及格式化——跟着开涛学SpringMVC 资源来自:http://jinnianshilongnian.iteye.com/blo ...

  5. iOS开发网络篇—JSON数据的解析

    iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...

  6. 项目中整合第三方插件与SpringMVC数据格式化关于ip地址

    一.Bootstrap 响应式按钮 <div calss="col-sm-2"> <button class="btn btn-default btn- ...

  7. SpringMVC数据格式化

    SpringMVC数据格式化 1. 使用Formatter格式化数据 Converter可以将一种类型转换成另一种类型,是任意Object之间的类型转换. Formatter则只能进行String与任 ...

  8. mysql第四篇:数据操作

    第四篇:数据操作 一.数据操作介绍 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作 1.INSERT实现数据的插入 2.UPDATE实现数据的更新 3.DELETE实现数据的 ...

  9. mysql第四篇:数据操作之多表查询

    mysql第四篇:数据操作之多表查询 一.多表联合查询 #创建部门 CREATE TABLE IF NOT EXISTS dept ( did int not null auto_increment ...

随机推荐

  1. ubuntu 开启ftp服务

    一. 检查是否已安装 vsftpd vsftpd -v 二. 安装 vsftpd apt-get install vsftpd 三.  检查是否已安装好 vsftpd vsftpd -v system ...

  2. C#高级编程笔记 (1至6章节)数组,类/方法/泛型

    2.3变量 var 类型推断 type 类的分类 如:type nametype = name.GetType(); //取变量name的类型 const 常量  const int painame ...

  3. 磁盘I/O工作原理

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11524947.html TODO Reference https://time.geekbang.or ...

  4. 25-Node.js学习笔记-express-app.locals对象

    app.locals对象 将变量设置到app.locals对象下面,这个数据在所有的模板中都可以获取到 app.locals.users=[{ name:'柠檬不酸', age:20 },{ name ...

  5. 英语单词escapes

    escapes 来源 [root@centos7 ~]# help echo echo: echo [-neE] [arg ...] Write arguments to the standard o ...

  6. 在Developerkit开发板上运行blink例程

    本文将介绍怎么样在VScode环境下,将AliOS Tings提供的blink例程在Developerkit开发板上运行起来. DeveloperKit开发板   在例程中分别用到两个led和一个按钮 ...

  7. window使用

    运行命令 regedit #注册表编译器 firewall.cpl #打开防火墙配置 powershell #打开powershell control #打开控制面版 cnpa.cpl #打开网络设置 ...

  8. [CSU1806]Toll

    题目:Toll 传送门:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1806 题目简述:给定n个点m条有向边的有向图,每条边的花费是$b_i ...

  9. SQL各种JOIN

    JOIN(= INNER JOIN):返回匹配的结果,没有匹配则没结果: LEFT JOIN(= LEFT OUTER JOIN):返回匹配的与左表的所有数据: RIGHT JOIN(= RIGHT ...

  10. (转)springboot应用启动原理(一) 将启动脚本嵌入jar

    转:https://segmentfault.com/a/1190000013489340 Spring Boot Takes an opinionated view of building prod ...