Spring MVC RedirectAttributes的用法解决办法

RedirectAttributes是Spring mvc 3.1版本以后出来的一个功能,专门用于重定向以后还能带参数跳转的
他有两种带参的方式:
第一种: 
attr.addAttribute("param", value);  
这种方式就至关于重定向以后,在url后面拼接参数,这样在重定向以后的页面或者控制器再去获取url后面的参数就能够了,但这个方式由于是在url后面添加参数的方式,因此暴露了参数,有风险
例:session

1mvc

2url

3spa

4code

<br>对象

attr.addFlashAttribute("name""123");  <br>ci

attr.addFlashAttribute("success""success");<br>io

return "redirect:/index";<br>table


这样就至关于:return "redirect:/index?name=123&success=success"

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

1

2

3

4

<br>

attr.addFlashAttribute("status","999");<br>

attr.addFlashAttribute("message","登陆失败");<br>

return "redirect:/toLogin";<br>

这种方式确实能重定向带参,可是有个问题,这个只能重定向到页面上,也就是说重定向的这个页面视图,能用el表达式直接获取你带参的值,好比status 和message ,都能获取。 但是我重定向到另外一个Controller的时候,这个控制器里面无法获取这两个参数 我如今有个需求:登陆成功,直接重定向其余页面,登陆失败,又得重定向到登陆页面,直接return的还不行,可是又要带状态码和提示等参数,因此想到用RedirectAttributes的addFlashAttribute 方式。可是重定向到/toLogin这个控制器里面的时候,获取不到addFlashAttribute 当初添加的属性。

相关文章
相关标签/搜索