RedirectAttributes是Spring mvc 3.1版本之后出来的一个功能,专门用于重定向之后还能带参数跳转的
- 第一种:
attr.addAttribute("param", value);
@RequestMapping("/save")
public String save(User user, RedirectAttributes redirectAttributes) {
redirectAttributes.addAttribute("param", "value1");
return "redirect:/index";
}
请求 /save 后,跳转至/index,并且会在url拼接 ?param=value1。
这种方式就相当于重定向之后,在url后面拼接参数,这样在重定向之后的页面或者控制器再去获取url后面的参数就可以了,但这个方式因为是在url后面添加参数的方式,所以暴露了参数,有风险
这样就相当于:return “redirect:/index?name=123&success=success”
- 第二种:
attr.addFlashAttribute("param", value);
@RequestMapping("/save")
public String save(User user, RedirectAttributes redirectAttributes) {
redirectAttributes.addFlashAttribute("param", "value1");
return "redirect:/index";
}
请求 /save 后,跳转至 /index,并且可以在 index 对应的模版中通过表达式,比如 jsp 中 jstl 用 ${param},获取返回值。该值其实是保存在 session ## 标题 ##中的,并且会在下次重定向请求时删除。
这种方式也能达到重新向带参,而且能隐藏参数,其原理就是放到session中,session在跳到页面后马上移除对象。所以你刷新一下后这个值就会丢掉