response.sendredirect(url)-重定向時,是伺服器向瀏覽器重新傳送了乙個response命令,讓瀏覽器再次向url2傳送請求,以獲取url2的資源
request.getrequestdispatcher(url).forward(request,response)-請求**時,類似於是伺服器自己向自己發了乙個跳轉,然後將結果直接給瀏覽器,這也是問什麼瀏覽器會不改變url位址。下面是具體總結他們的區別
一、response.sendredirect(url)-伺服器將新url傳送給瀏覽器,瀏覽器再根據新url請求
request.getrequestdispatcher(url).forward(request,response);請求**到指定url(伺服器內部跳轉url然後將結果發給瀏覽器)
二、response.sendredirect(url)--客戶端跳轉
request.getrequestdispatcher(url).forward(request,response)--伺服器跳轉
三、response.sendredirect(url)--跳轉到指定url位址後,上個頁面的請求會結束,request物件會消亡,資料會消亡。
request.getrequestdispatcher(url).forward(request,response)--內部跳轉,request物件一直存在
四、response.sendredirect(url)--**會改變
request.getrequestdispatcher(url).forward(request,response)--以瀏覽器角度來看,他只是傳送乙個request然後收到乙個response,所以url不變
五、response.sendredirect(url)--傳引數需要在url後加引數。
request.getrequestdispatcher(url).forward(request,response)-傳引數可以操作request物件方法setattribute(「name」,value)
六、response.sendredirect(url)-可以定位到任意的**
request.getrequestdispatcher(url).forward(request,response)-只能定位到伺服器資源
七、response.sendredirect(url)--可以重定向有frame的jsp檔案
resquest.getrequestdispatcher(url).forward(request,response)-不可以重定向有frame的jsp檔案,可以定向到有frame的html檔案,只有在客戶端沒有輸出時才可以呼叫forward方法,如果當前頁面緩衝區不是空的,那麼該句可能不起作用,由於這種提交不會改變url位址,重新整理會重複提交。
頁面跳轉的幾種方法
href assgin跳轉到另乙個頁面可以返回到原來的頁面 location.href location.assign 注意 replace跳轉到另乙個頁面之後不可以返回原來的頁面 location.replace 用乙個新的位址去替換當前的位址,所以不能返回之前的頁面history是載入歷史列表中...
頁面跳轉的幾種方法
php 302重定向 缺少http 會造成重複重定向 url header location url 301重定向 多用於引數錯誤跳轉前 頁面 echo exit 上級頁面跳轉 多用於後台frame框架 防止出現畫中畫 echo exit top.location.href url 在頂層頁面開啟u...
劍魚行動 倆種方法 !!!
劍魚行動 time limit 10000ms memory limit 65536k total submit 93 accepted 79 case time limit 1000ms description 給出n個點的座標,對它們建立乙個最小生成樹,代價就是連線它們的路徑的長度,現要求總長度...