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