關於request.getRequestDispatcher()的兩個方法以及request域
一、getRequestDispatcher()
getRequestDispatcher()包含兩個方法,分別是請求轉發和請求包含。
如下:
RequestDispatcher rd = request.getRequestDispatcher("/MyServlet");
請求轉發: rd.forward( request , response );
請求包含: rd.include( request , response);
一個請求跨多個Servlet,需要使用轉發和包含。
請求轉發:由下一個Servlet完成響應體!當前Servlet可以設定響應頭!(留頭不留體)
請求包含:由兩個Servlet共同完成響應體!(留頭又留體)
無論是請求轉發還是請求包含,都在一個請求範圍內!使用同一個request和response!
二、請求轉發和重定向的區別:
請求轉發是一個請求一次響應,而重定向是兩次請求兩次響應。
請求轉發地址不變化,而重定向會顯示後一個請求的地址
請求轉發只能轉發到本專案其它Servlet,而重定向不只能重定向到本專案的其它Servlet,還能定向到其它專案
請求轉發是服務端行為,只需給出轉發的Servlet路徑,而重定向需要給出requestURI,既包含專案名!
三、request域
void setAttribute(String name ,Object value)
Object getAttribute(String name)
同一個請求範圍內使用request.setAttribute()和request.getAttribute()來傳值!前一個Servlet呼叫setAttribute()儲存值,後一個Servlet呼叫getAttribute()獲取值;