springmvc重定向之后取值的几种办法以及优劣比较

来源:互联网 发布:什么牌的网络机顶盒好 编辑:程序博客网 时间:2024/05/16 02:11

第一种:

通过RedirectAttributes自动封装参数到地址栏

redirectAttributes.addAttribute("param", value);  


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

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

1
2
3
attr.addFlashAttribute("status","999");
attr.addFlashAttribute("message","登录失败");
return "redirect:/toLogin";
这种方式确实能重定向带参,取值的时候需要注意,
1)重定向到页面上,也就是说重定向的这个 页面视图,能用el表达式直接获取你带参的值,比如status 和message ,都能获取。 
2)重定向到另一个Controller的时候,使用redirectAttributes.getFlashAttributes();没法获取这两个参数
需要使用httpServletRequest 来获取参数
Map
<String, ?> map = RequestContextUtils.getInputFlashMap(request);if (map != null) {System.out.println(map.get("flashParams") + "这次终于取到啦");}
原创粉丝点击