天天看點

請求轉發和重定向1. 請求的轉發1. 重定向

1. 請求的轉發

1)什麼是請求轉發?

是指Servlet對一個請求進行初步的處理,然後交給另一個元件(Servlet,JSP,Html)來生成響應内容

一般情況下,都是Servlet對請求進行處理,然後交給JSP來生成響應内容

2) 為什麼用請求轉發?

充分利用不同元件的特點,發揮元件的優勢,讓元件配合工作,提高開發的效率

3)如何實作轉發?

1. 向request中綁定資料
	
		存:request.setAttribute(String name,Object value);

		取:Object value=request.getAttribute(String name)

2. 擷取請求轉發器

		RequestDispatcher rd=
					request.getRequestDispatcher("/login.jsp");

3. 轉發請求

		rd.forward(request,response);
           
請求轉發和重定向1. 請求的轉發1. 重定向

4) 請求轉發的特點

1. 一次請求,一次響應
2. 位址欄不會發生改變
3. 轉發經過的所有元件使用的是同一個request對象,是以可以使用request來共享資料
4. 請求轉發的目的地隻能是目前項目中的元件,不能是其他項目或網站的内容
           

5)常見面試題

請簡述2種常見的請求(資源)跳轉方式的差別

  1. 2種常見的資源跳轉方式:請求轉發和請求重定向
  2. 請求重定向:伺服器在一次響應中,通知浏覽器去請求一個新的url
  3. 請求轉發:Servlet對請求進行初步的處理,交給另一個元件來生成響應内容
    請求轉發和重定向1. 請求的轉發1. 重定向
  4. 什麼時候用轉發?什麼時候用重定向?
    1. 目的地是目前項目内部還是外部? 外部 -> 重定向
    2. 是否需要使用request共享資料? 需要 -> 轉發
    3. 如果是内部且不用共享資料,優先用轉發,效率更高
      請求轉發和重定向1. 請求的轉發1. 重定向

1. 重定向

伺服器在一次響應中,通知浏覽器去請求一個新的url

請求轉發和重定向1. 請求的轉發1. 重定向

##1) 為什麼要學重定向

1. 業務需要:比如未登入不能購買,先登入

2. 優化使用者體驗:比如登入成功後,自動跳轉商品購買頁面

##2)如何實作重定向

原理:302響應狀态碼+location的響應頭

請求轉發和重定向1. 請求的轉發1. 重定向

API:

response.sendRedirect(“url”)

##3)重定向的特點

1. 一共是2次請求,2次響應

2. 位址欄會發生變化,顯示的是第二次請求的位址

3. 重定向既可以定向到目前伺服器内部的資源,也可以定向到其它的網站

1. 伺服器内部資源: listUser

2. 其它網站的資源: http://www.baidu.com