Spring boot 项目中controller之间传参数,例如在两个独立系统传token/cookie

在项目里我们往往会从前端传数据给后端,或者从后端传数据给前端,那么怎么在两个控制器之间传参输呢?

这里需要两个东西

1.RedirectAttributes:专门用于重定向之后还能带参数跳转的的工具类

第一种:
addAttribute(“param”, value);
这种方式就相当于重定向之后,在url后面拼接参数,这样在重定向之后的页面或者控制器再去获取url后面的参数就可以了,但这个方式因为是在url后面添加参数的方式,所以暴露了参数,有风险

例:
attr.addAttribute("name", "123");
attr.addAttribute("success", "success");
return "redirect:/index";
这样就相当于:return “redirect:/index?name=123&success=success”

第二种:
addFlashAttribute(“param”, value);
这种方式也能达到重新向带参,而且能隐藏参数,其原理就是放到session中,session在跳到页面后马上移除对象。所以你刷新一下后这个值就会丢掉
例:
attr.addFlashAttribute("status","999");
attr.addFlashAttribute("message","登录失败");
return "redirect:/toLogin";

详情推荐这篇博客:Spring MVC RedirectAttributes的用法解决办法_废弃的root的博客-CSDN博客_redirectattributes

2.@ModelAttribute

用法1:用在入参

运用在参数上,会将客户端传递过来的参数按名称注入到指定对象中,并且会将这个对象自动加入ModelMap中,便于View层使用;

用在方法的入参上依次做如下操作:

  • 从隐含对象中获取隐含的模型数据
  • 将请求参数绑定到隐含对象中
  • 将隐含对象传入到入参
  • 将入参绑定到Model

用法2:用在方法上

被@ModelAttribute注释的方法会在此controller的每个方法执行前被执行 ,如果有返回值,则自动将该返回值加入到ModelMap中。因此对于一个controller映射多个URL的用法来说,要谨慎使用。我们编写控制器代码时,会将保存方法独立成一个控制器也是如此。

详情推荐这篇博客:@ModelAttribute运用详解_Hai-Yang-code的博客-CSDN博客_modelattribute

那么现在来实操一下:

例如我现在想从sso认证中心将token传给子系统system1

首先对于sso

 采用addFlashAttributes将参数拼接到重定向的url中去

对于子系统System1

 ModelAttribute根据token关键字读取token值

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值