更新時間:2023-02-14 來源:黑馬程序員 瀏覽量:
在某些情況下,針對客戶端的情況,一個Servlet類可能無法完成全部工作。這時,可以使用請求重定向完成這一工作。請求重定向指Web服務器接收到客戶端的請求后,可能由于某些條件的限制,不能訪問當前請求URL所指向的Web資源,而是指定了一個新的資源路徑,讓客戶端重新發送請求。
為了實現請求重定向,HttpServletResponse接口定義了一個sendRedirect()方法,該方法用于生成302響應碼和location響應頭,從而通知客戶端重新訪問Location響應頭中指定的URL,sendRedirect()方法的完整語法如下所示:
public void sendRedirect(java.lang.String location)throws java.io.IOException
在上述方法代碼中,參數location可以使用相對URL,Web服務器會自動將相對URL翻譯成絕對URL,再生成Location頭字段。
sendRedirect()方法的工作原理如圖10-13所示。
圖10-13 sendRedirect()方法的工作原理
在圖10-13中,當客戶端訪問Servlet1時,由于在Servlet1中調用了sendRedirect()方法將請求重定向到Servlet2,因此,瀏覽器收到Servlet1的響應消息后,立刻向Servlet2發送請求,Servlet2對請求處理完畢后,再將響應消息回送給客戶端瀏覽器并顯示。