天天看點

請求轉發域重定向之間的差別

1,請求轉發

request.getRequestDispatcher("/AServlet").forward(request,response);

//請求包含 ,request.getRequestDispatcher("/AServlet").include(request,response);

2,重定向

response.sendRedirect(request.getContextPath()+"/user/success.jsp");

1)request.getContextPath(): 擷取要通路的web項目的路徑。

差別:(5點)

  1)請求轉發可以攜帶資料,重定向不能攜帶任何資料。因為請求轉發是一個請求,是以可以使用request域存放資料。而重定向因為是兩次請求,會另外産生一個request對象。

  2)請求轉發,浏覽器位址欄不會發生變化(轉發是一個請求);而重定向,浏覽器端位址欄會發生變化(重定向是兩次請求,位址欄會變成第二個請求的路徑)。

  3)請求轉發不可以轉發到其他的web應用項目(其他的網站);而重定向想去哪就去哪。

  4)請求方式是get(),請求轉發給其他的servlet時,請求方式是什麼?仍然是get(),因為是一個請求;請求方式為post(),重定向給其他的servlet,請求方式是什麼?是get();重定向第二個請求永遠是get()方法。

  5)請求轉發的請求消息頭不會清空,請求正文會清空--->清空是指:在緩沖區(在伺服器端的緩沖區)内清空請求正文(留頭不留體);重定向所有内容(消息頭,消息正文)都會清空。