Springboot中如何在重定向时携带数据呢?

欣喜 SpringBoot 发布时间:2025-04-24 09:44:37 阅读数:10498 1
下文笔者讲述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中
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/SpringBoot/202504/8441.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者