/**

* 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. AI比医生更好地发现皮肤癌,未来计算机技术可渗透医院

    未来机器人将取代医生?这可能是事实.为什么这么多年轻人选择计算机行业,因为这是一个趋势.据法新社报道,研究人员周二称,一项计算机技术比人类皮肤科医生在检测皮肤癌方面的表现要好得多,因为这项研究是为了寻 ...

  2. 多线程模拟生产者消费者示例之BlockQueue

    public class Test { public static void main(String[] args){ //创建一个阻塞队列,边界为1 BlockingQueue<String& ...

  3. CSU 1503: 点到圆弧的距离(计算几何)

    题目描述 输入一个点 P 和一条圆弧(圆周的一部分),你的任务是计算 P 到圆弧的最短距离.换句话 说,你需要在圆弧上找一个点,到 P点的距离最小. 提示:请尽量使用精确算法.相比之下,近似算法更难通 ...

  4. && 和 || 逻辑运算符的短路运算

    &&和||的短路运算,是指如果在进行前面的表达式的运算过程,通过判断已经明确的知道整个表达式的结果,那么就不会进行后面表达式的运算判断. 表达式1 || 表达式2 || 表达式3... ...

  5. python练习题之全选框全不选反选

    功能 实现分为两大部分: 第一body 部分,1,通过<li>无序列表标签实现选项的基本样式,通过input的checkbox标签实现里面的复选框功能.用到了标签的嵌套.然后选项的js方法 ...

  6. KMP算法中next数组的构建

    记得初学$kmp$的时候 老师让大家把它直接背下来 然而不理解的话 不仅调试起来比较慢 很多题目也难往$kmp$上想 ----------------------------------------- ...

  7. 测开之路四十一:常用的jquery函数

    jQuery选择器菜鸟教程:https://www.runoob.com/jquery/jquery-selectors.html 引用jquery2.1.1标签:<script src=&qu ...

  8. 记录MNIST实现与理解

    之前半个月的时间几乎都在看理论书籍,最近两天开始撸代码,一个跟Hello World同级别的教程例子就出来了,那就是MNIST.实现代码应该很多地方都有: #!/usr/bin/env python ...

  9. JetBrains.dotPeek

    Free .NET Decompiler and Assembly Browser Decompile .NET assemblies to C# dotPeek is a free-of-charg ...

  10. Html5 学习笔记 【PC固定布局】 实战3 热门旅游展示区

    最终效果图: html 代码: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta char ...