重定向與請求轉發的區別及什麼時候使用
重定向與請求轉發的區別
一
轉發是伺服器行為,重定向是客戶端行為。為什麼這樣說呢,這就要看兩個動作的工作流程:
轉發過程:客戶瀏覽器傳送http請求——》web伺服器接受此請求——》呼叫內部的一個方法在容器內部完成請求處理和轉發動作——》將目標資源傳送給客戶;在這裡,轉發的路徑必須是同一個web容器下的url,其不能轉向到其他的web路徑上去,中間傳遞的是自己的容器內的request。在客戶瀏覽器路徑欄顯示的仍然是其第一次訪問的路徑,也就是說客戶是感覺不到伺服器做了轉發的。轉發行為是瀏覽器只做了一次訪問請求。
重定向過程:客戶瀏覽器傳送http請求——》web伺服器接受後傳送302狀態碼響應及對應新的
重定向時瀏覽器上的網址改變
轉發是瀏覽器上的網址不變
二
重定向,其實是兩次request
第一次,客戶端request A,伺服器響應,並response回來,告訴瀏覽器,你應該去B。這個時候
例子:
response.sendRedirect("loginsuccess.jsp");
請求轉發是伺服器內部把對一個request/response的處理權,移交給另外一個
對於客戶端而言,它只知道自己最早請求的那個A,而不知道中間的B,甚至C、D。傳輸的資訊不會丟失。
例子:
RequestDispatcherdis=request.getRequestDispatcher(“loginsuccess.jsp”);
Dis.forward(request,response);
重定向實際上產生了兩次請求
轉發只有一次請求
重定向:
傳送請求 -->伺服器執行-->響應請求,返回給瀏覽器一個新的地址與響應碼-->瀏覽器根據響應碼,判定該響應為重定向,自動傳送一個新的請求給伺服器,請求地址為之前返回的地址-->伺服器執行-->響應請求給瀏覽器
轉發:
傳送請求 -->伺服器執行-->進行請求的重新設定,例如通過request.setAttribute(name,value)-->根據轉發的地址,獲取該地址的網頁-->響應請求給瀏覽器
三:
重定向時的網址可以是任何網址
轉發的網址必須是本站點的網址
重定向與請求轉發使用
前後兩個頁面 有資料傳遞 用請求轉發,沒有則用重定向。
比如servlet查詢了資料需要在頁面顯示,就用請求轉發。
比如servlet做了update操作跳轉到其他頁面,就用重定向。
相關推薦
重定向與請求轉發的區別及什麼時候使用
重定向與請求轉發的區別 一 轉發是伺服器行為,重定向是客戶端行為。為什麼這樣說呢,這就要看兩個動作的工作流程: 轉發過程:客戶瀏覽器傳送http請求——》web伺服器接受此請求——》呼叫內部的一個方法在容器內部完成請求處理和轉發動作——》將目標資源傳送給客戶;在這裡,轉發的
JavaWeb Filter 過濾器的機制 與使用 請求重定向與請求轉發的區別 跳轉過濾,過濾器dispatcher REQUEST與FORWARD區別
首先要清楚,過濾的是url 那麼所有頁面跳轉url都會變嗎?不會,比如請求轉發,前前後後都是一個url 首先要弄清請求重定向與請求轉發的區別; 舉例來說有兩個網頁index.jsp 然後分別通過兩種方式跳轉到main.jsp 請求轉發 伺
Servlet應用中重定向與請求轉發的區別
首先重定向和請求轉發的區別在大多數面試題裡面會考到,這篇文章是總結一下個人的理解。本文不講程式碼 第一,我們要明白這兩個東西的作用。Servlet在對客戶端請求的資料處理完成後,會向客戶端返回相應的響應結果(Servlet辦事兒)。 關於重定向
請求重定向與請求轉發
相信很多剛開始接觸jsp的同學會搞不清楚請求重定向和請求轉發的區別,這裡首先舉個栗子~~ 假設你去辦理某個護照 重定向:你去了A局,A局的人說:“這個事不歸我們管,你們應該去B局”,然後,你就從A局退了出來,自己又跑了一趟B局。 請求轉發:你去了A局,A局看了以後,知道這個
web中解決亂碼問題&&重定向和請求轉發區別
String ss = "珍珍"; String s8 = URLEncoder.encode(ss, "utf-8"); String so = URLDecoder.
javaweb中重定向和請求轉發(response.sendRedirect()和request.getRequestDispatcher(rul).forward(request,response)))的區別
客戶端 不起作用 這也 方法 cnblogs rect() 獲取url rec alt 先來兩張圖,方便理解: 可以看出,重定向時,是服務器向遊覽器重新發送了一個response命令,讓遊覽器再次向url2發送請求,以獲取url2的資源 而請求轉發時,類似於是服務器自己
HTTP中的重定向和請求轉發的區別
response 傳輸 觀察 web應用 ali jpg 處理 size 什麽 一、調用方式 我們知道,在servlet中調用轉發、重定向的語句如下:request.getRequestDispatcher("new.jsp").forward(request, resp
Jsp&Servlet 重定向、請求轉發與絕對路徑的問題
一、重定向:通知瀏覽器重新發送至xxx的請求。 1、發生場景: (1)response.sendRedirect("xxx"); (2)JSP頁面的 src 屬性; (3)JSP表單的 action 屬性; 2、引數問題: 重定向只是告訴瀏覽器傳送請求URL,沒有攜帶任何引數
深入淺出Java 重定向和請求轉發的區別
import java.text.*; import java.util.*; import java.io.*; import javax.servlet.http.*; import ja
Jsp&Servlet 重定向、請求轉發與絕對路徑的問題
一、重定向:通知瀏覽器重新發送至xxx的請求。 1、發生場景: (1)response.sendRedirect("xxx"); (2)JSP頁面的 src 屬性; (3)JSP表單的 action 屬性; 2、引數問題: 重定向只是告訴瀏覽器傳送請求URL,沒有攜帶任何引
模擬面試題目筆記-- 重定向和請求轉發的區別 資料庫的事物
請求轉發 重定向 總結 客戶首先發送一個請求到伺服器端,伺服器端發現匹配的servlet,並指定它去執行,當這個servlet執行完之後,它要呼叫getRequestDispacther
重定向和請求轉發,請求包含之間的聯絡和區別
一:重定向舉例+畫圖 你向10086客服人員打了個電話說,我這個月的工資怎麼還沒發呢? 然後客服人員給了你一句話:先生您好你的工資不由我們發(相當於先給你一個狀態碼),請您 撥打120向他們要去(再給你一個Location的響應頭,響應頭是鍵值對的形式,鍵是的location
請求重定向和請求轉發的區別
forward let request 在服務器 相同 服務 rdquo 傳遞 req 一個web資源收到客戶端請求後,通知服務器去調用另外一個web資源進行處理,稱之為請求轉發。一個web資源收到客戶端請求後,通知瀏覽器去訪問另外一個web資源,稱之為請求重定向。Requ
【Servlet】深入淺出Java重定向和請求轉發
列表 url地址 ssi 什麽 stack led 要去 處理 代碼 import java.text.*; import java.util.*; import java.io.*; import javax.servlet.http.*; i
請求重定向和請求轉發的關系
cti 愛好 ima 重定向 3-9 req 應該 用戶名 action 測試response.sendRedirect方法 先將index.jsp中的action頁面修改成為response.jsp 然後再response.jsp頁面中執行response.sendR
springMVC中的重定向和請求轉發的使用
請求轉發 controller 方法提供了一個 String 型別返回值之後, 它需要在返回值裡使用:forward: 使用說明: @RequestMapping("/forward") public String forward(){ // 通過forward關鍵字實現轉發
Servlet 獲取前端Form表單資料,並實現請求重定向、請求轉發
1.前端介面 編寫一個最簡單的登入介面: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title&g
Servlet生命週期、常用提交方式、中文亂碼問題、重定向和請求轉發
//當前工作空間絕對路徑System.getProperty("user.dir"); 一個Servlet的生命週期由 例項化,初始化,提供服務,銷燬,被回收 幾個步驟組成Serlvet構造方法 只會執行一次,所以Serlvet是單例項的init初始化 只會執行一次 &
JavaWeb學習筆記 (六)重定向和請求轉發
一. 重定向 有兩種程式碼寫法 1.寫法一 response.setStatus(302) response.setHeader("Location","轉向網址的絕對路徑或相對路徑"); 2.寫法二 response.sendDirection("轉向網
servlet中的重定向和請求轉發
重定向 重定向即重新定位方向,它的引數是跳轉的位置 response.sendRedirect("xxx.html"); 請求轉發 引數也是跳轉的位置 request.getRequestDispatcher("xxx.html").forward(request,re