Springboot中如何在重定向时携带数据呢?
下文笔者讲述SpringBoot时,携带数据的方法分享,如下所示
方式1: 借助session 方式2: 借助RedirectAttributes提供数据临时存储和自动清除
RedirectAttributes简介
`RedirectAttributes`是Spring MVC框架中一个接口 用于在重定向时传递参数 它提供数据的临时存储 并且这些数据会在目标控制器处理完成后自动清除
RedirectAttributes功能
- 临时存储: `RedirectAttributes` 允许 你在重定向时将数据存储到会话中(Flash Attributes) 并在目标控制器处理完成后自动清除。 - 避免重复提交: 由于数据是临时存储 因此可以有效避免因页面刷新导致的数据重复提交问题。
RedirectAttributes常用方法
- addAttribute(String name, Object value) 将参数添加到 URL 中(作为查询字符串的一部分) - addFlashAttribute(String name, Object value) 将参数存储在会话中(Flash Attributes) 适用于重定向场景 目标控制器处理完成后自动清除例
import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.servlet.mvc.support.RedirectAttributes; @Controller public class RedirectController { @PostMapping("/redirect") public String handleRedirect(RedirectAttributes redirectAttributes) { // 使用 addFlashAttribute 存储临时数据 redirectAttributes.addFlashAttribute("message", "重定向成功!"); // 重定向到另一个请求 return "redirect:/target"; } @GetMapping("/target") public String target(Model model) { // 从模型中获取数据 String message = (String) model.getAttribute("message"); System.out.println(message); // 输出: 重定向成功! return "targetPage"; } }
RedirectAttributes注意事项
- Flash Attributes生命周期: Flash Attributes 数据仅在下一次请求中可用 之后会被自动清除。 - 区别于addAttribute: `addAttribute`方法会将参数附加到URL 的查询字符串中 而`addFlashAttribute`则将数据存储在会话中 不会暴露在URL中
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。