關於重定向RedirectAttributes的用法

剛纔作項目,遇到了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方法體中能夠獲取到參數值。

相關文章
相關標籤/搜索