web開發(三)之頁面跳轉的問題

2021-07-14 18:46:32 字數 1217 閱讀 5484

jsp 跳轉方式大約有三種:

1. response.sendredirect(「newurl」);

– 此語句前不允許有out.flush(),如果有,會有異常:

–跳轉後瀏覽器位址列變化

–如果要跳到不同主機下,跳轉後,此語句後面的語句會繼續執行,如同新開了執行緒,但是對response的操作已經無意義了

如果要跳到相同主機下,此語句後面的語句執行完成後才會跳轉;

2. response.setheader(「location」,」newurl」);

這種使用方式要結合 setstatus(302), 302 這個狀態碼就是告訴瀏覽器要重定向了。

此語句前不允許有out.flush(),如果有,頁面不會跳轉。

跳轉後瀏覽器位址列變化

此語句後面的語句執行完成後才會跳轉

3. < jsp:forward page=」newurl」 />

此語句前不允許有out.flush(),如果有,會有異常:

跳轉後瀏覽器位址列不變,但是只能跳到當前主機下

此語句後面的語句執行完成後才會跳轉

跳轉後得路徑變為當前路徑,不是絕對路徑將無法顯示。

對於jsp 而言, 就需要嚼一嚼redirect 和 forward 的差別了。

就字面意思而已: redirect 翻譯成重定向, forward翻譯成**。

兩者的區別是:

重定向是客戶端行為,**是伺服器行為

重定向過程:客戶瀏覽器傳送http請求——》web伺服器接受後傳送302狀態碼響應及對應新的location給客戶瀏覽器——》客戶瀏覽器發現是302響應,則自動再傳送乙個新的http請求,請求url是新的location位址——》伺服器根據此請求尋找資源並傳送給客戶。在這裡location可以重定向到任意url,既然是瀏覽器重新發出了請求,則就沒有什麼request傳遞的概念了。在客戶瀏覽器路徑欄顯示的是其重定向的路徑,客戶可以觀察到位址的變化的。重定向行為是瀏覽器做了至少兩次的訪問請求的。

**過程:客戶瀏覽器傳送http請求——》web伺服器接受此請求——》呼叫內部的乙個方法在容器內部完成請求處理和**動作——》將目標資源傳送給客戶;在這裡,**的路徑必須是同乙個web容器下的url,其不能轉向到其他的web路徑上去,中間傳遞的是自己的容器內的request。在客戶瀏覽器路徑欄顯示的仍然是其第一次訪問的路徑,也就是說客戶是感覺不到伺服器做了**的。**行為是瀏覽器只做了一次訪問請求。

WEB開發中的頁面跳轉方法總結

頁面跳轉可能是由於使用者單擊鏈結 按鈕等觸發的,也可能是系統自動產生的。頁面自動跳轉在web開發中經常用到,而且根據需求可以採用不同的跳轉方式,比如提示操作資訊後延時跳轉等,本文總結了web開發中常見的幾種頁面跳轉方法。當然,實際開發中我們可以把後面兩種方式整合到php中去,便於適用各種跳轉需求。當...

遇到的頁面跳轉問題

color darkblue size medium 做乙個公司內部用的周報表。已經做了將近半個月了吧。邊學邊做,經理指導步驟。剛做了乙個使用者登入的ui,乙個admin登入後的檢視,乙個普通user登入後的檢視。共三個mxml檔案。想實現三個mxml檔案之間的跳轉,主要是從登入頁到首面。已經在網上...

Android開發 頁面間的跳轉

如果不同的頁面間只有背景,顏色,文字不同,則可以直接使用切換layout的方式切換頁面,舉個例子 上面的例子是通過子函式的使用,實現了layout的切換,以實現頁面切換的效果,但是上述方法有很大的侷限性,如需要交付activity的主動權,這個方法就不能實現。介紹另外乙個方法,即使用intent實現...