Spring 4 官方文档学习(十一)Web MVC 框架之Flash Attributes
接上一篇中的重定向。
flash attributes提供了一种方式让一个请求保存attribute用于其他请求。这在重定向时很常见--例如,Post/Redirect/Get pattern。flash attributes会被临时的保存--在重定向之前,通常是保存在session中。
对于flash attributes的支持,Spring MVC有两个主要抽象。FlashMap用于hold flash attributes,FlashMapManager用于存储、获取以及管理FlashMap实例。
Flash attribute支持总是打开的,不需要显式的启用。每个请求,都有一个"input" FlashMap -- 带有从前一个请求传来的attributes(如果有),以及一个"output" FlashMap-- 带有将要存储给下一个请求使用的attributes。两个FlashMap实例都可以在任意地方使用RequestContextUtils中的静态方法来访问。
使用注解的controllers通常不需要直接使用FlashMap。相反,@RequestMapping method可以接受一个RedirectAttributes类型的参数,并使用其来添加用于重定向的flash attributes。通过RedirectAttributes添加的flash attributes会被自动传播到"output" FlashMap。 同样的,重定向之后,来自"input" FlashMap的attributes会被自动添加到controller的Model中,以服务目标URL。
匹配请求到flash attributes
flash attributes的概念存在于很多其他Web框架中,且被证明可能导致并发问题。这是因为,根据定义,flash attributes是被存储截止到下一个请求。然而,下一个请求,可能不是预期的接收者,而是另一个异步请求(例如,polling或资源请求),这种情况下,flash attributes会被过早的移除。
为了降低这种问题的可能性,RedirectView会自动给FlashMap实例们加一个印章 -- 带有目标重定向URL的path和query parameters。默认的FlashMapManager会匹配请求和该信息 -- 在查找"input" FlashMap时。
这不会完全消灭并发问题的可能性,但会很大程度上降低。因此,flash attributes,推荐主要在重定向场景中使用!!!
Spring 4 官方文档学习(十一)Web MVC 框架之Flash Attributes的更多相关文章
- Spring 4 官方文档学习(十一)Web MVC 框架之配置Spring MVC
		内容列表: 启用MVC Java config 或 MVC XML namespace 修改已提供的配置 类型转换和格式化 校验 拦截器 内容协商 View Controllers View Reso ... 
- Spring 4 官方文档学习(十一)Web MVC 框架之resolving views 解析视图
		接前面的Spring 4 官方文档学习(十一)Web MVC 框架,那篇太长,故另起一篇. 针对web应用的所有的MVC框架,都会提供一种呈现views的方式.Spring提供了view resolv ... 
- Spring 4 官方文档学习(十一)Web MVC 框架
		介绍Spring Web MVC 框架 Spring Web MVC的特性 其他MVC实现的可插拔性 DispatcherServlet 在WebApplicationContext中的特殊的bean ... 
- Spring 4 官方文档学习(十二)View技术
		关键词:view technology.template.template engine.markup.内容较多,按需查用即可. 介绍 Thymeleaf Groovy Markup Template ... 
- Spring Boot 官方文档学习(一)入门及使用
		个人说明:本文内容都是从为知笔记上复制过来的,样式难免走样,以后再修改吧.另外,本文可以看作官方文档的选择性的翻译(大部分),以及个人使用经验及问题. 其他说明:如果对Spring Boot没有概念, ... 
- Spring boot官方文档学习(一)
		个人说明:本文内容都是从为知笔记上复制过来的,样式难免走样,以后再修改吧.另外,本文可以看作官方文档的选择性的翻译(大部分),以及个人使用经验及问题. 其他说明:如果对Spring Boot没有概念, ... 
- Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion(二)
		接前一篇 Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 本篇主要内容:Spring Type Conver ... 
- Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion
		本篇太乱,请移步: Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 写了删删了写,反复几次,对自己的描述很不 ... 
- Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion(一)
		题外话:本篇是对之前那篇的重排版.并拆分成两篇,免得没了看的兴趣. 前言 在Spring Framework官方文档中,这三者是放到一起讲的,但没有解释为什么放到一起.大概是默认了读者都是有相关经验的 ... 
- Spring 4 官方文档学习(十一)Web MVC 框架之编码式Servlet容器初始化
		在Servlet 3.0+ 环境中,你可以编码式配置Servlet容器,用来代替或者结合 web.xml文件.下面是注册DispatcherServlet : import org.springfra ... 
随机推荐
- http连接优化
			http连接的性能优化 并行连接(能够同一时候和多台server建立HTTP连接) 持久连接 管道化连接 复用的连接 并行连接 长处: 并行连接能够在带宽资源充足的情况下同一时候建立多个HTTP连接, ... 
- spring boot 整合 redis
			自己开发环境需要安装 redis 服务,百度一下很多,下面主要说明Springboot 集成 redis 讲解 我的版本 java8 + redis3.0 + springboot 1.5.9. Sp ... 
- FBX BlendShape/Morph动画解析
			目前fbx 2015.1中支持三种变形器:skinDeformer,blendShapeDeformer,vertexCacheDeformer.定义在fbxdeformer.h中: enum EDe ... 
- Python 计算两个IP段之间的有效IP地址
			Can anyone think of an algorithm to put all of the addresses between two others and put them in a li ... 
- [svc] cisco router as ca server
			把cisco路由器配置成ca服务器 参考 clock set 10:00:00 Dec 23 2017 conf t crypto key generate rsa general-keys labe ... 
- SourceInsight自定义常用快捷键
			1.快速显示文件大纲,类似于eclipse中的Ctrl+O: “Options”-"Key Assignments"-"Symbol: Browse Local File ... 
- XMLHttpRequest使用详解
			1.什么是XMLHttpRequest XMLHttpRequest是一个浏览器接口,使得Javascript可以进行HTTP(S)通信,这就是我们熟悉的AJAX.早期,各个浏览器的实现都不同,HTM ... 
- C程序的内存布局
			1.代码段(code或text): 通常是指用来存放程序执行代码的一块内存区域.这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读. 某些架构也允许代码段为可写,即允许修改程序.在代码 ... 
- js判断字符是否存在汉字的方法
			<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ... 
- 关于一个页面的tab切换整体页面刷新而tab标签处是同一个文件怎么做焦点的问题
			解决方法,不能直接写点击效果就要在超链接中加一个参数,根据参数的值去给变焦点的效果,实现方法如下: <div class="vip_search"> ... 
