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