SpringMVC redirect重定向傳值

2021-09-18 06:12:15 字數 3881 閱讀 5448

spring mvc框架controller間跳轉,需重定向。有幾種情況:不帶引數跳轉,帶引數拼接url形式跳轉,帶引數不拼接引數跳轉,頁面也能顯示。 

首先先來介紹一下不帶引數的重定向: 

我在後台乙個controller跳轉到另乙個controller,為什麼有這種需求呢,是這樣的。我有乙個列表頁面,然後我會進行新增操作,新增在後台完成之後我要跳轉到列表頁面,不需要傳遞引數,列表頁面預設查詢所有的。 

方式一:使用modelandview(這是spring 2.0的時候所用到的方法) 

return new modelandview("redirect:/tolist"); 

這樣可以重定向到tolist這個方法 

方式二:返回string 

return "redirect:/ tolist "; 

然後,在說一下帶引數的重定向 

第二種情況,列表頁面有查詢條件,跳轉後我的查詢條件不能丟掉,這樣就需要帶引數的了,帶引數可以拼接url 

方式一:自己手動拼接url 

new modelandview("redirect:/tolist?param1="+value1+"¶m2="+value2); 

這樣有個弊端,就是傳中文可能會有亂碼問題。 

方式二:用redirectattributes,這個是發現的乙個比較好用的乙個類 

這裡用它的addattribute方法,這個實際上重定向過去以後你看url,是它自動給你拼了你的url。 

使用方法: 

public string test(redirectattributes attributes) 

這樣在tocontroller這個方法中就可以通過獲得引數的方式獲得這個引數,再傳遞到頁面。過去的url還是和方式一一樣的。如果你細心的看重定向之後的url位址的話,你就會發現其實和上面的位址是一樣的,這樣也會出現上面那個方法出現的問題。 

重點來了,咱們介紹乙個不會出現中文亂碼,而且不會在你的url上出現你所要傳遞的資料的,這樣就可以保證你在傳遞資料的安全 

public string red(redirectattributes attributes) 

用上面的方法進行資料傳遞你就會發現不會再url上出現你要傳遞的資料,那麼資料放到**去了,我們就來看看這是spring 3.0新出現的特性,attributes.addflashattribute("test", "hello")實際儲存的屬性在flashmap,那麼flashmap又是什麼呢? 

flash 屬性 和 redirectattribute:通過flashmap儲存乙個請求的輸出,當進入另乙個請求時作為該請求的輸入,典型場景如重定向(post-redirect-get模式,1、post時將下一次需要的資料放在flashmap;2、重定向;3、通過get訪問重定向的位址,此時flashmap會把1放到flashmap的資料取出放到請求中,並從flashmap中刪除;從而支援在兩次請求之間儲存資料並防止了重複表單提交)。 

spring web mvc提供flashmapmanager用於管理flashmap,預設使用sessionflashmapmanager,即資料預設儲存在session中 

既然知道了怎麼回事,那麼我們就可以把它提取出來,怎麼提取呢,很多人會說,既然存在session中,那就從session中獲取,結果發現沒有,那怎麼辦? 

下面我就給大家提供兩個方法讓大家把addflashattribute中的資料提取出來 

方法一:利用httpservletrequest 

方法二:利用spring提供的標籤@modelattribute 

public string test2(@modelattribute("test") string str) 

以上兩種方法是在後台controller層獲取值的方法,如果是在前台頁面的話,就會比較簡單,直接利用el表示式就可以取到資料。

spring mvc框架controller間跳轉,需重定向。有幾種情況:不帶引數跳轉,帶引數拼接url形式跳轉,帶引數不拼接引數跳轉,頁面也能顯示。 

首先先來介紹一下不帶引數的重定向: 

我在後台乙個controller跳轉到另乙個controller,為什麼有這種需求呢,是這樣的。我有乙個列表頁面,然後我會進行新增操作,新增在後台完成之後我要跳轉到列表頁面,不需要傳遞引數,列表頁面預設查詢所有的。 

方式一:使用modelandview(這是spring 2.0的時候所用到的方法) 

return new modelandview("redirect:/tolist"); 

這樣可以重定向到tolist這個方法 

方式二:返回string 

return "redirect:/ tolist "; 

然後,在說一下帶引數的重定向 

第二種情況,列表頁面有查詢條件,跳轉後我的查詢條件不能丟掉,這樣就需要帶引數的了,帶引數可以拼接url 

方式一:自己手動拼接url 

new modelandview("redirect:/tolist?param1="+value1+"¶m2="+value2); 

這樣有個弊端,就是傳中文可能會有亂碼問題。 

方式二:用redirectattributes,這個是發現的乙個比較好用的乙個類 

這裡用它的addattribute方法,這個實際上重定向過去以後你看url,是它自動給你拼了你的url。 

使用方法: 

public string test(redirectattributes attributes) 

這樣在tocontroller這個方法中就可以通過獲得引數的方式獲得這個引數,再傳遞到頁面。過去的url還是和方式一一樣的。如果你細心的看重定向之後的url位址的話,你就會發現其實和上面的位址是一樣的,這樣也會出現上面那個方法出現的問題。 

重點來了,咱們介紹乙個不會出現中文亂碼,而且不會在你的url上出現你所要傳遞的資料的,這樣就可以保證你在傳遞資料的安全 

public string red(redirectattributes attributes) 

用上面的方法進行資料傳遞你就會發現不會再url上出現你要傳遞的資料,那麼資料放到**去了,我們就來看看這是spring 3.0新出現的特性,attributes.addflashattribute("test", "hello")實際儲存的屬性在flashmap,那麼flashmap又是什麼呢? 

flash 屬性 和 redirectattribute:通過flashmap儲存乙個請求的輸出,當進入另乙個請求時作為該請求的輸入,典型場景如重定向(post-redirect-get模式,1、post時將下一次需要的資料放在flashmap;2、重定向;3、通過get訪問重定向的位址,此時flashmap會把1放到flashmap的資料取出放到請求中,並從flashmap中刪除;從而支援在兩次請求之間儲存資料並防止了重複表單提交)。 

spring web mvc提供flashmapmanager用於管理flashmap,預設使用sessionflashmapmanager,即資料預設儲存在session中 

既然知道了怎麼回事,那麼我們就可以把它提取出來,怎麼提取呢,很多人會說,既然存在session中,那就從session中獲取,結果發現沒有,那怎麼辦? 

下面我就給大家提供兩個方法讓大家把addflashattribute中的資料提取出來 

方法一:利用httpservletrequest 

方法二:利用spring提供的標籤@modelattribute 

public string test2(@modelattribute("test") string str) 

以上兩種方法是在後台controller層獲取值的方法,如果是在前台頁面的話,就會比較簡單,直接利用el表示式就可以取到資料。

MVC redirect重定向跳轉傳值

數拼接url形式跳轉,帶引數不拼接引數跳轉,頁面也能顯示。首先先來介紹一下不帶引數的重定向 我在後台乙個controller跳轉到另乙個controller,為什麼有這種需求呢,是這樣的。我有乙個列表頁面,然後我會進行新增操作,新增在後台完成之後我要跳轉到列表頁面,不需要傳遞引數,列表頁面預設查詢所...

SpringMVC 重定向跳轉傳值

spring mvc框架controller間跳轉,需重定向。有幾種情況 不帶引數跳轉,帶引數拼接url形式跳轉,帶引數不拼接引數跳轉,頁面也能顯示。首先先來介紹一下不帶引數的重定向 我在後台乙個controller跳轉到另乙個controller,為什麼有這種需求呢,是這樣的。我有乙個列表頁面,然...

重定向頁面傳參與普通頁面傳參

1.普通頁面傳參 定義model model 傳值model.addattribute 跳轉return new modelandview 2.重定向頁面傳參 定義redirectattributes redirect 傳值redirect.addflashattribute 跳轉return ne...