有时候咱们可能会遇到需要将数据传入重定向的页面当中的情形,比如登录成功后重定向到项目主页,并显示提示信息。这时就需要将登录验证中得到的验证结果传入重定向之后的页面。
使用RedirectAttributes 可以达到我们想要的效果,他是专门用于重定向携带参数跳转的的工具类,它有两种实现方式:
第一种:
使用redirectAttributes.addAttributie(“param”,value);
这种方法相当于在重定向链接地址追加传递的参数。
注意:这种方法会将传递的参数直接暴露在链接地址上,很不安全。
url会变成:xxx/main?param=value
public String xxx(RedirectAttributes redirectAttributes) {
redirectAttributes.addAttributie("param",value);
return:"redirect:main"
}
第二种:
使用redirectAttributes.addFlashAttributie(“param”,value);
这种方法隐藏了参数,但是能且只能在重定向的 “页面” (如jsp页面)中获取param参数值。
原理:该属性值被放到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的用法