1. 程式人生 > >jsp頁面跳轉請求轉發和請求重定向的區別

jsp頁面跳轉請求轉發和請求重定向的區別

jsp實質上就是一個servlet,在完成多頁面跳轉的時候有倆種方式1.請求轉發2.請求重定向
用servlet來舉列子實現(現把三個Servlet在專案的web.xml中初始化和對映哦)
列子思路:寫好一個介面,裡面有請求轉發實現的servlet(圖中:ForwardServlet),和請求重定向的servlet(圖中:RedirectServlet).通過點選介面的超連結來實現不同的跳轉方式,跳轉到TestServlet。這個過程來看倆種方式的不同
寫一個one.jsp來開始跳轉實驗吧
在這裡插入圖片描述
那麼倆次Servlet怎麼來驗證倆種跳轉方式的不同呢?我們看他們原始碼
在這裡插入圖片描述
在這裡插入圖片描述
倆者將要跳轉到的TestServlet程式碼
在這裡插入圖片描述


驗證解說:用request.setAttribute()方法丟進去一個值,在通過跳轉去取,檢視控制檯值能不能在跳轉後的TestServlet中取到,同時檢視倆者的位址列變化
執行結果:值能順利的傳過去的
在這裡插入圖片描述
說明在最終的Servlet中,request物件和中轉的那個request是同一物件
執行結果:值不能順利的傳過去的
在這裡插入圖片描述
說明在最終的Servlet中,request物件和中轉的那個request不是同一物件

執行好的介面
在這裡插入圖片描述
請求跳轉位址列為初次請求的地址
在這裡插入圖片描述
請求重定向位址列為最後響應請求的地址
在這裡插入圖片描述
我再把程式碼改下,看能不能跳轉到百度的網頁上
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
請求轉發方式報錯了,說明跳轉的範圍資源只能是整個專案範圍內的資源
在這裡插入圖片描述


成功了耶,說明重定向可以調到所有的資源哇
得出結論:
請求轉發:位址列是初次發出請求的地址,最終的Servlet中,request物件和中轉的那個request是同一物件,跳轉的範圍資源只能是整個專案範圍內的資源。
請求重定向:位址列是最後響應請求的地址,最終的Servlet中,request物件和中轉的那個request不是同一物件,說明重定向可以調到所有的資源。
圖片解釋
在這裡插入圖片描述
圖中servlet1對應的是Redirectservlet
圖中servlet2對應的是Testservlet
在這裡插入圖片描述
本人是新手,所以肯定有很多知識方面的不足,可能還有錯誤鬧笑話,各位大佬有好的建議可以在下面留言哦。