實際發生位置不同,地址欄不同
轉發是發生在服務器的
轉發是由服務器進行跳轉的,細心的朋友會發現,在轉發的時候,瀏覽器的地址欄是沒有發生變化的,在我訪問Servlet111的時候,即使跳轉到了Servlet222的頁面,瀏覽器的地址還是Servlet111的。也就是說瀏覽器是不知道該跳轉的動作,轉發是對瀏覽器透明的。通過上面的轉發時序圖我們也可以發現,實現轉發只是一次的http請求,一次轉發中request和response對象都是同一個。這也解釋了,為什么可以使用request作為域對象進行Servlet之間的通訊。
重定向是發生在瀏覽器的
重定向是由瀏覽器進行跳轉的,進行重定向跳轉的時候,瀏覽器的地址會發生變化的。曾經介紹過:實現重定向的原理是由response的狀態碼和Location頭組合而實現的。這是由瀏覽器進行的頁面跳轉實現重定向會發出兩個http請求,request域對象是無效的,因為它不是同一個request對象轉發和重定向的區別
轉發和重定向使用哪一個?根據上面說明了轉發和重定向的區別也可以很容易概括出來。轉發是帶著轉發前的請求的參數的。重定向是新的請求。
典型的應用場景:
轉發: 訪問 Servlet 處理業務邏輯,然后 forward 到 jsp 顯示處理結果,瀏覽器里 URL 不變
重定向: 提交表單,處理成功后 redirect 到另一個 jsp,防止表單重復提交,瀏覽器里 URL 變了
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73323.html
請求轉發:request.getRequestDispatcher(跳轉頁面).forward(request,response);重定向:response.sendRedirect(跳轉頁面); 區別showImg(https://segmentfault.com/img/bVbpx8n?w=583&h=295); 請求轉發的流程 showImg(https://segmentfault....
摘要:二請求轉發與響應重定向中路徑參數區別假設通過請求到達該方法所屬的。請求轉發參數可以指定為相對路徑或絕對路徑。同理提交表單給路徑問題頁面提交表單給時,路徑的寫法要格外注意。 轉自:http://blog.sina.com.cn/s/blo... 一、請求轉發與響應重定向的種類 有兩種方式獲得Servlet轉發對象(RequestDispatcher):一種是通過HttpServletRe...
摘要:瀏覽器的中文數據提交給服務器,以編碼對中文編碼,當我在讀取數據的時候,拿到的當然是亂碼。接下來使用方式傳遞中文數據,把表單的方式改成即可當我們訪問的時候,又出現亂碼了于是我按照上面的方式,把對象設置編碼為試試結果還是亂碼。 什么是HttpServletRequest HttpServletRequest對象代表客戶端的請求,當客戶端通過HTTP協議訪問服務器時,HTTP請求頭中的所有信...
閱讀 762·2019-08-29 12:49
閱讀 3550·2019-08-29 11:32
閱讀 3433·2019-08-26 10:43
閱讀 2401·2019-08-23 16:53
閱讀 2047·2019-08-23 15:56
閱讀 1695·2019-08-23 12:03
閱讀 2767·2019-08-23 11:25
閱讀 2084·2019-08-22 15:11