主要区别:
内部跳转的时候实际上是通过服务器端将请求转发到另外的页面或者servlet中,这个时候跳转到的目标页面或者servlet可以获取到请求对象,也可以获取到请求
中的属性和参数。而外部跳转的时候实际上是第一次请求后,服务器端向客户端发送了一个指令,让客户端再次请求了一次服务器端,这个时候服 务器第二次拿到的
request对象已经不是第一次请求的request对象了,所以无法获取到第一次请求里的参数和属性。
forward重定向是在容器内部实现的同一个Web应用程序的重定向,所以forward方法只能重定向到同一个Web应用程序中的一个资源,重定向后浏览器地址
栏URL不变,而sendRedirect方法可以重定向到任何URL, 因为这种方法是修改http头来实现的,URL没什么限制,重定向后浏览器地址栏URL改变。
内部跳转无法跳转到工程以外的jsp或者servlet,外部跳转则可以。
实现方法:
1.请求转发
equest.getRequestDispatcher("XXX.jsp或者servlet").forward(request, response)
request.getRequestDispatcher("XXX.jsp或者servlet").forward(request, response)
2.重定向
response.sendRedirect("XXX.jsp或者servlet")