使用RedirectAttributes将数据传入重定向的页面
有时候咱们可能会遇到需要将数据传入重定向的页面当中的情形,比如登录成功后重定向到项目主页,并显示提示信息。这时就需要将登录验证中得到的验证结果传入重定向之后的页面。
使用<kbd>RedirectAttributes </kbd>可以达到我们想要的效果,他是专门用于重定向携带参数跳转的的工具类,它有两种实现方式:
第一种:
使用<kbd>redirectAttributes.addAttributie(“param”,value); </kbd>
这种方法相当于在重定向链接地址追加传递的参数。
<mark>注意</mark>:这种方法会将传递的参数直接暴露在链接地址上,很不安全。
url会变成:xxx/main?param=value
public String xxx(RedirectAttributes redirectAttributes) {
redirectAttributes.addAttributie("param",value);
return:"redirect:main"
}
第二种:
使用<kbd>redirectAttributes.addFlashAttributie(“param”,value);</kbd>
这种方法隐藏了参数,但是能且只能在重定向的 “页面” (如jsp页面)中获取param参数值。
<mark>原理</mark>:该属性值被放到session中,session在跳到页面后马上移除对象。若是重定向到controller中,则获取不到该属性值。除非在controller中用(@RequestParam(value = “param”)String param)注解
在controller中取得param的方法:
public String xxx(RedirectAttributes redirectAttributes) {
redirectAttributes.addAttributie("param",value);
return:"redirect:yyy"
}
@RequestMapping("/yyy")
public Map<Object,Object> forYYY(@RequestParam(value = "pparam")String param, ...){
System.out.println(param);
//your code
}
参考博文:
[1].关于重定向RedirectAttributes的用法