SpringMVC 重定向跳轉傳值

2022-04-30 18:45:08 字數 1917 閱讀 2923

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

Servlet重定向跳轉

重定向是一種伺服器指導客戶端的行為。客戶端發出第乙個請求,被伺服器接收,經過處理伺服器 進行響應,與此同時,伺服器給客戶端乙個位址 下次請求的位址 resp.sendredirect url 當客 戶端接收到響應後,立刻 馬上 自動根據伺服器給的位址進行第二個請求的傳送,伺服器接收請求並 作出響應,...

spring mvc 請求重定向

1 我在後台乙個controller跳轉到另乙個controller 方式一 使用modelandview return new modelandview redirect tolist 這樣可以重定向到tolist這個方法 方式二 返回string return redirect tolist 其...