request.getRequestDispatcher(String arg0)是转发,response.sendRedirect(String arg0)是重定向;
转发,地址栏的URl是不变的,重定向则是有变化的;
重定向实际上产生了两次请求;
重定向时的网址可以是任何网址,转发则必须是本站点的网址,因此,转发的方法arg0如果是以“/”开头,表示的是本站点的根目录,而重定向则表示的是服务器的根目录;
转发的时候request的变量被传递,而重定向则不会传递。
request.getRequestDispatcher(String arg0)的forward()和include();
相同点:
forward() 跟include() 在执行的时候,URl也就是浏览器地址栏那的地址是不会改变;
区别:
forward(),有关response对象的一切方法或者属性都会失去作用,只有request能被转向到下一个页面;
include(),response跟request都能被传递到转向的下一个页面;
forward()下面的代码不会执行,因为forward已经把请求交给了下一个页面;
include()下面的代码会执行,因为include是把下一个页面的代码包含进来。