闪存属性
闪存属性提供了一种方式,让一个请求存储用于另一个请求的属性。这在重定向时最常需要,例如,Post-Redirect-Get 模式。闪存属性在重定向之前临时保存(通常在会话中),以便在重定向后对请求可用,并且会立即删除。
Spring MVC 在支持闪存属性方面有两个主要抽象。FlashMap
用于保存闪存属性,而 FlashMapManager
用于存储、检索和管理 FlashMap
实例。
闪存属性支持始终“开启”,无需显式启用。但是,如果未使用,它永远不会导致 HTTP 会话创建。在每个请求中,都有一个“输入”FlashMap
,其中包含从先前请求(如果有)传递的属性,以及一个“输出”FlashMap
,其中包含要保存以供后续请求使用的属性。这两个 FlashMap
实例都可以通过 RequestContextUtils
中的静态方法从 Spring MVC 中的任何地方访问。
带注释的控制器通常不需要直接使用 FlashMap
。相反,@RequestMapping
方法可以接受类型为 RedirectAttributes
的参数,并使用它为重定向场景添加闪存属性。通过 RedirectAttributes
添加的闪存属性会自动传播到“输出”FlashMap。类似地,在重定向之后,来自“输入”FlashMap
的属性会自动添加到为目标 URL 提供服务的控制器的 Model
中。