網上看過比較多解釋JSP中redirect與forward的區別的文章,感覺概念性較強,不好理解,在慕課網中看了一堂講得比較通俗的課,以下是個人筆記。
先來看一個案例:注冊頁面reg.jsp將信息提交到response.jsp , response.jsp分別用response.sendRedirect()與request.getRequestDispatcher().forward(req,resp)跳轉到信息顯示頁面request.jsp做數據顯示,觀察兩種方式跳轉的區別。
注冊頁面reg.jsp的action跳轉到response.jsp
request.jsp頁面
response.jsp頁面用request.sendRedirect()重定向到request.jsp
因為重新向服務器發送了一次請求,所以用了新的request對象,數據在舊的request對象中,所以這里沒有數據,url也發生了改變
使用request.getRequestDispatcher().forward(req,resp)方法進行轉發
URL還是response.jsp而不是request.jsp,因為轉發時傳遞了request與response對象,所以數據保存了下來。
總結