亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

請求重定向和服務器內部跳轉中path的問題?

有一些地方還是沒有弄明白。為什么請求重定向中必須獲取上下文地址,如response.sendRedirect(request.getContextPath()+"/test.jsp"); 而服務器內部跳轉則不需要獲得上下文地址,直接寫: request.getRequestDispatcher("/test.jsp").forward(request, response); 猜測是否是因為這兩種請求方式分別在服務器內外,在服務器外不知道當前項目根目錄,就必須通過request.getContextPath()來獲得地址,而服務器內已經知曉了當前項目根目錄,所以直接可以用/代替。 請問是這樣嗎?

正在回答

2 回答

你是不是弄混了 這并不是重定向和轉發的區別,而是為了講解絕對路徑和相對路徑的區別才這么寫的。

2 回復 有任何疑惑可以回復我~
#1

qq_這是只倉鼠_0

抱歉弄錯了些,重定向中的request.getContextPath()+"/test.jsp"這個是絕對路徑,在轉發里/test.jsp也是絕對路徑,我誤解了,而重定向中這樣寫就會跳到服務器根目錄/test.jsp所以重定向中的/代表的是服務器根目錄,而轉發的/代表的項目根目錄,不過假如使用../test.jsp這種相對路徑感覺上更好些。
2017-03-06 回復 有任何疑惑可以回復我~
#2

qq_這是只倉鼠_0

查閱了一些資料后,發現重定向是通過修改HTTP協議的HEADER部分,對瀏覽器下達重定向指令的,讓瀏覽器對在location中指定的URL提出請求,可以訪問外部頁面,不局限于本WEBAPP,所以路徑上它的根目錄是以服務器為根目錄,而轉發是通過服務器內部交接,也局限于本WEBAPP內部,所以它的根目錄是項目根目錄
2017-03-06 回復 有任何疑惑可以回復我~
#3

盯叮町玎仃 回復 qq_這是只倉鼠_0

你好,我想請問一下,為什么我用response.sendRedirect("../test.jsp");,重定向后頁面的地址是localhost:8080/test.jsp?
2017-07-03 回復 有任何疑惑可以回復我~

請求轉發與請求重定向的區別:

重定向:客戶端行為,response.sendRedirect(),從本質上講等同于兩次請求,前一次請求對象不會保存,地址欄的URL地址會改變;?

請求轉發:服務器行為,request.getRequestDispatcher().forward(req,resp);是一次請求,轉發后請求對象會保存,地址欄的URL地址不會改變;


1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

請求重定向和服務器內部跳轉中path的問題?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號