Spring 4 官方文档学习(十一)Web MVC 框架之Flash Attributes

接上一篇中的重定向。

 

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#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,推荐主要在重定向场景中使用!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值