JavaWeb基礎回顧:servlet或jsp中怎麼定義forward 和redirect及兩者區別詳解

前言:關於轉發和重定向的問題是JavaWeb後端開發面試中比較容易被問到的問題,有時候容易弄混淆,今天翻了翻之前的教課書,打算寫一篇博客來對這兩者的區別做一個比較詳細的講解,希望能夠幫助到閱讀的人!

轉發:request.getRequestDispatcher (“demo.jsp"). forward(request, response);

            (jsp中可以使用jsp動作指令來實現)<jsp:forward page="demo.jsp"></jsp:forward>

重定向:response.sendRedirect(“demo.jsp");

兩者的區別:

I.從瀏覽器的地址顯示上

forward方法屬於服務器端去請求資源,服務器直接訪問目標地址,並對該目標地址的相應內容進行讀取,再把讀取的內容發給瀏覽器,因此客戶端瀏覽器的地址不變;而redirect是告訴客戶端,使瀏覽器知道去請求哪一個地址,相當於客戶端重新請求一遍,所以地址顯示欄會變。

II.從數據共享來看

forward轉發的頁,以及轉發到的目標7頁面能夠共享request裏面的數據;而redirect轉發的頁及轉發到的目標頁面不能共享request裏面的數據。

III.從功能來看

redirect能夠重定向到當前應用程序的其他資源,還能重定向到同站點的其他應用程序的資源,甚至使用絕對url地址重定向到其他站點的資源;而forward只能在同一個Web應用程序內的資源之間轉發請求,可理解爲服務器內部的一種操作。

IV.從效率來看

forward效率較高,因爲跳轉僅發生在服務器端;redirect相對較低,因爲類似於再進行一次請求

 

尾聲:歡迎大家訪問本人的個人網站553影院以及LongBro博客,你的訪問是我最大的動力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章