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中
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


