response的頁面重新導向與request的頁面跳轉的區別
response: response是伺服器對用戶端的反饋,其對頁面重新導向的流程是:當用戶端向伺服器發起請求時,伺服器重新給用戶端一個URL地址,讓用戶端重新發起一個新的請求,在這個過程中,用戶端第一次請求所攜帶的頭資訊將消失,在重新導向之後而且地址欄顯示的是重新導向的頁面,這是一種用戶端行為。
可以通過sendRedirect重新導向到伺服器任何一個URL。若使用絕對路徑,其中的根路徑是伺服器根目錄,如URL="/xxx",則實際定向到http://localhost:8080/xxx。一般可使用request.getContextPath() + "/xxx"來訪問webapp根目錄下的資源。 注意:通過重新導向無法訪問WEB-INF中的資源,因為重新導向是用戶端行為,相當於瀏覽器重新輸入URL,而WEB-INF中的內容無法通過輸入URL來訪問。 代碼為:
response.sendRedirect("test.jsp"); request:
request是用戶端對伺服器的請求,其跳轉頁面的流程是,當用戶端向伺服器發起跳轉請求時,伺服器協助用戶端把跳轉的頁面載入到當前頁面中來,地址欄顯示的還是跳轉之前的頁面,而跳轉之前用戶端發起請求的頭資訊還是存在的。這是一種伺服器行為。所以經過多次<jsp:forward page="">指令後,request中儲存的的屬性還是保留的。通過Forward只能發送請求道webapp下的資源。
若使用絕對路徑,其中根路徑是相對於webapp的,URL="/xxx",則實際發送請求到http://localhost:8080/webapp/xxx。
代碼為:
request.getRequestDispatcher("test.jsp").forward(request, response);
或者使用標籤:
<jsp:forward page="test.jsp"/>
通過這兩種方法,可以完成servlet與JSP之間的通訊。