談談request和response的頁面跳轉
request.getRequestDispatcher("p3.jsp").forward(request,response);這種方法稱為轉發,位址列上的URL不會改變;
response.sendRedirect("p3.jsp");這種方法稱為重定向,位址列的URL會改變;
這樣實現跳轉到p3.jsp;可是這兩種方法有著本質的不同,requset是請求,是在伺服器端執行的,response是相應,是在客戶端執行的;
例如:
有3個頁面p1.jsp,p2.jsp,p3.jsp;
p1.jsp提交給p2.jsp,p2.jsp在轉發給p3.jsp
如果在p2用第一種方法發到到p3,由於是瀏覽器請求的是p2,請求的一些引數被封裝在request中,發給伺服器,伺服器用request.getRequestDispatcher("p3.jsp").forward(request,response);轉到p3,把p3發給瀏覽器,瀏覽器不知道被偷樑換柱了,所以URL還是p2.jsp;也完全可以用request.getParameter("name");得到p1.jsp中的表單控制元件的值,因為在這裡用了forward()把request傳了下去
如用第二種方法,這是瀏覽器主動請求了p3,所以瀏覽器知道請求的地址,所以URL變了,
而又一次請求,產生了另外一個request,這個和請求p2的request不同,所以在p3中用request.getParameter("name");得不到p1.jsp中的表單控制元件的值