剛纔作項目,遇到了redirectAttributes使用的問題,上網找了找,看到一篇寫的很不錯的博客,解決我對於RedirectAttributes的困惑,也給你們推薦下。java
原文連接:href="https://zhuanlan.zhihu.com/p/21353217?refer=pengsong-java安全
RedirectAttributes 是Spring mvc 3.1版本以後出來的一個功能,專門用於重定向以後還能帶參數跳轉的的工具類session
它有兩種帶參的方式:mvc
redirectAttributes.addAttributie("prama",value); 這種方法至關於在重定向連接地址追加傳遞的參數,例如:app
redirectAttributes.addAttributie("prama1",value1); redirectAttributes.addAttributie("prama2",value2); return:"redirect:/path/list"
以上重定向的方法等同於 return:"redirect:/path/list?prama1=value1&prama2=value2 " ,注意這種方法直接將傳遞的參數暴露在連接地址上,很是的不安全,慎用。jsp
redirectAttributes.addFlashAttributie("prama",value); 這種方法是隱藏了參數,連接地址上不直接暴露,可是能且只能在重定向的 「頁面」 獲取prama參數值。工具
其原理就是放到session中,session在跳到頁面後立刻移除對象。若是是重定向一個controller中是獲取不到該prama屬性值的。除非在controller中用(@RequestPrama(value = "prama")String prama)註解,採用傳參的方式。spa
頁面獲值例如:code
redirectAttributes.addFlashAttributie("prama1",value1); redirectAttributes.addFlashAttributie("prama2",value2); return:"redirect:/path/list.jsp"
在以上參數都可在list.jsp頁面使用EL表達式獲取到參數值${prama*}對象
controller得到redirectAttributes重定向的值例如:
redirectAttributes.addFlashAttributie("prama1",value1); redirectAttributes.addFlashAttributie("prama2",value2); return:"redirect:/path/list/" @RequestMapping("list") public List<Student> list(@RequestPrama(value = "prama1")String prama1, @RequestPrama(value = "prama2")String prama2,... ){ //TODO //your code }
經過在controller中的list方法體中能夠獲取到參數值。