JSP學習筆記——response.sendRedirect()與request.getRequestDispatcher().forward()區別
一、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地址,重新整理會重複提交。