基于重定向RedirectAttributes的用法解析
重定向RedirectAttributes的用法
剛才做項(xiàng)目,遇到了redirectAttributes使用的問題,上網(wǎng)找了找,看到一篇寫的很不錯的博客,解決我對于RedirectAttributes的困惑,也給大家推薦下。
RedirectAttributes 是Spring mvc 3.1版本之后出來的一個功能,專門用于重定向之后還能帶參數(shù)跳轉(zhuǎn)的的工具類
它有兩種帶參的方式
第一種:
redirectAttributes.addAttributie("prama",value); 這種方法相當(dāng)于在重定向鏈接地址追加傳遞的參數(shù),例如: redirectAttributes.addAttributie("prama1",value1); redirectAttributes.addAttributie("prama2",value2); return:"redirect:/path/list"
以上重定向的方法等同于 return:"redirect:/path/list?prama1=value1&prama2=value2 " ,注意這種方法直接將傳遞的參數(shù)暴露在鏈接地址上,非常的不安全,慎用。
第二種:
redirectAttributes.addFlashAttributie("prama",value);
這種方法是隱藏了參數(shù),鏈接地址上不直接暴露,但是能且只能在重定向的 “頁面” 獲取prama參數(shù)值。
其原理就是放到session中,session在跳到頁面后馬上移除對象。如果是重定向一個controller中是獲取不到該prama屬性值的。除非在controller中用(@RequestPrama(value = "prama")String prama)注解,采用傳參的方式。
頁面獲值
例如:
redirectAttributes.addFlashAttributie("prama1",value1); redirectAttributes.addFlashAttributie("prama2",value2); return:"redirect:/path/list.jsp"
在以上參數(shù)均可在list.jsp頁面使用EL表達(dá)式獲取到參數(shù)值${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方法體中可以獲取到參數(shù)值。
RedirectAttributes詳解
RedirectAttributes 的兩個方式的獲取總結(jié):
1、addFlashAttribute
@RequestMapping (value= "hello" ) public String test(RedirectAttributes ra){ ra.addFlashAttribute( "test" , "test" ); return "redirect:/test" ; } @RequestMapping (value= "test" ) public String test( @ModelAttribute ( "test" )String test){ System.out.println(test); return "redirect:/hello" ; }
2、addAttribute
@RequestMapping (value= "hello" ) public String test(RedirectAttributes ra){ ra.addAttribute( "test" , "test" ); return "redirect:/test" ; } @RequestMapping (value= "test" ) public String test(HttpServletRequest request ){ String test = request.getParameter( "test" ); System.out.println(test); return "redirect:/hello" ; }
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java設(shè)計模式之代理模式_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java設(shè)計模式之代理模式,本文詳細(xì)的介紹了什么事代理模式和相關(guān)的類和接口,有興趣的可以了解一下2017-08-08Mybatis實(shí)現(xiàn)查詢相冊數(shù)據(jù)列表流程講解
這篇文章主要介紹了Mybatis實(shí)現(xiàn)查詢相冊數(shù)據(jù)列表流程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-12-12解決MyBatis返回結(jié)果類型為Boolean的問題
這篇文章主要介紹了解決MyBatis返回結(jié)果類型為Boolean的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11Mybatis-plus操作json字段實(shí)戰(zhàn)教程
這篇文章主要介紹了Mybatis-plus操作json字段實(shí)戰(zhàn)教程,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-02-02Java文件讀寫IO/NIO及性能比較詳細(xì)代碼及總結(jié)
這篇文章主要介紹了Java文件讀寫IO/NIO及性能比較詳細(xì)代碼及總結(jié),具有一定借鑒價值,需要的朋友可以參考下。2017-12-12Java中Collection、List、Set、Map之間的關(guān)系總結(jié)
今天小編就為大家分享一篇關(guān)于Java中Collection、List、Set、Map之間的關(guān)系總結(jié),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02Java編程實(shí)現(xiàn)對象克?。◤?fù)制)代碼詳解
這篇文章主要介紹了Java編程實(shí)現(xiàn)對象克隆(復(fù)制)代碼詳解,涉及了克隆的原因,如何實(shí)現(xiàn)克隆,克隆的一般步驟,深克隆與淺克隆的介紹等相關(guān)內(nèi)容,具有一定借鑒價值,需要的朋友可以參考下。2017-11-11