1. 程式人生 > >JSP學習筆記——response.sendRedirect()與request.getRequestDispatcher().forward()區別

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地址,重新整理會重複提交。