重定向*請求轉(zhuǎn)發(fā)區(qū)別2018-07-10

javaweb中重定向和請求轉(zhuǎn)發(fā)(response.sendRedirect()和request.getRequestDispatcher(rul).forward(request,response)))的區(qū)別

重定向時,是服務(wù)器向游覽器重新發(fā)送了一個response命令,讓游覽器再次向url2發(fā)送請求,以獲取url2的資源 。

請求轉(zhuǎn)發(fā)時,類似于是服務(wù)器自己向自己發(fā)了一個跳轉(zhuǎn),然后將結(jié)果直接給游覽器,這也是為什么游覽器會不改變url地址。

一、response.sendRedirect(url)-服務(wù)器將新url發(fā)送給瀏覽器,游覽器再根據(jù)新url請求 ;Request.getRequestDispatcher(url).forward(request,response);請求轉(zhuǎn)發(fā)到指定url(服務(wù)器內(nèi)部跳轉(zhuǎn)url然后將結(jié)果發(fā)給游覽器) ;

二、response.sendRedirect(url)--客戶端跳轉(zhuǎn) Request.getRequestDispatcher(url).forward(request,response)--服務(wù)器跳轉(zhuǎn)

三、response.sendRedirect(url)--跳轉(zhuǎn)到指定url地址后,上個頁面的請求會結(jié)束,request對象會消亡,數(shù)據(jù)會消亡。 Request.getRequestDispatcher(url).forward(request,response)--內(nèi)部跳轉(zhuǎn),request對象一直存在

四、response.sendRedirect(url)--網(wǎng)址會改變 Request.getRequestDispatcher(url).forward(request,response)--以游覽器角度來看,他只是發(fā)送一個request然后收到一個response,所以url不變

五、response.sendRedirect(url)--傳參數(shù)需要在url后加參數(shù)。 Request.getRequestDispatcher(url).forward(request,response)-傳參數(shù)可以操作request對象方法setAttribute(“name”,value)

六、response.sendRedirect(url)-可以定位到任意的網(wǎng)址 Request.getRequestDispatcher(url).forward(request,response)-只能定位到服務(wù)器資源

七、response.sendRedirect(url)--可以重定向有frame的jsp文件 Resquest.getRequestDispatcher(url).forward(request,response)-不可以重定向有frame的jsp文件,可以定向到有frame的html文件,只有在客戶端沒有輸出時才可以調(diào)用forward方法,如果當(dāng)前頁面緩沖區(qū)不是空的,那么該句可能不起作用,由于這種提交不會改變url地址,刷新會重復(fù)提交。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容