第一種:
public string test1()
@responsebody
public string test2()
通過 test1() 方法中 return 「redirect:ccc」 就可以跳轉到 test2() 中繼續執行了
第二種:
public string test1()
@responsebody
public string test2()
通過 test1() 方法中 return 「forward:ccc」 就可以跳轉到 test2() 中繼續執行了
兩者區別:
1.瀏覽器 url 的顯示路徑
redirect::會改變;
就是說你在瀏覽器輸入127.0.0.1:8080/專案名/abc 回車瀏覽器位址會變成 127.0.0.1:8080/專案名/ccc
2.方法之間的資料資訊傳輸是否共享
redirect: 不共享;
結果頁面上顯示是空白的!
原因的因為使用 redirect 重定向時會產生兩個不同的 request , 因為這兩個 request 不是同乙個, 所以資料不共享。
@responsebody
public string test2(httpservletrequest request)
結果頁面上顯示 huang
原因的因為使用 forward **時只會產生乙個 request , 所以資料共享。
本質區別(我也不太懂, 所以附上別人家的解釋)
—————————————
**是伺服器行為,重定向是客戶端行為。為什麼這樣說呢,這就要看兩個動作的工作流程:
**過程:客戶瀏覽器傳送http請求--->web伺服器接受此請求--->呼叫內部的乙個方法在容器內部完成請求處理和**動作--->將目標資源 傳送給客戶;在這裡,**的路徑必須是同乙個web容器下的url,其不能轉向到其他的web路徑上去,中間傳遞的是自己的容器內的request。在客 戶瀏覽器路徑欄顯示的仍然是其第一次訪問的路徑,也就是說客戶是感覺不到伺服器做了**的。**行為是瀏覽器只做了一次訪問請求。
重定向過程:客戶瀏覽器傳送http請求--->web伺服器接受後傳送302狀態碼響應及對應新的location給客戶瀏覽器--->客戶瀏覽器發現 是302響應,則自動再傳送乙個新的http請求,請求url是新的location位址--->伺服器根據此請求尋找資源並傳送給客戶。在這裡 location可以重定向到任意url,既然是瀏覽器重新發出了請求,則就沒有什麼request傳遞的概念了。在客戶瀏覽器路徑欄顯示的是其重定向的 路徑,客戶可以觀察到位址的變化的。重定向行為是瀏覽器做了至少兩次的訪問請求的。
重定向,其實是兩次request:第一次,客戶端request a,伺服器響應,並response回來,告訴瀏覽器,你應該去b。這個時候ie可以看到位址變了,而且歷史的回退按鈕也亮了。重定向可以訪問自己web應用以外的資源。在重定向的過程中,傳輸的資訊會被丟失。
—————————————
js跳轉到另乙個頁面
1 本頁面跳 window.location.href location.href 2 color red 上一層頁面跳 parent.location.href color 3 最外層的頁面跳 top.location.href 舉例說明 如果a,b,c,d都是jsp,d是c的iframe,c是b...
乙個action跳轉到另乙個action如何傳參
畢業設計還在繼續,遇到問題,從乙個action跳轉到另乙個action如何傳參,也不算難題吧,就是以前沒有接觸過,上網搜搜,發現答案,request.setattribute 引數名 引數 request.getattribute 引數名 試了試,不可以。然後想了想,是否可以把它存在session裡...
把乙個範圍的數對映到另乙個範圍
如何將乙個範圍的數對映到另乙個範圍,這是乙個很簡單的問題。但是有時候8位微控制器對乘除法支援不是很好,會出現溢位,這樣你就不能很好地得到你想要的數。這裡我提供乙個簡單的演算法,可以對整型進行誤差較小的對映。目的 將200 1023 中的某個數對映到 20 160 上 原範圍 200 1023 目標範...