重定向:
重定向是利用HttpServletResponse这个接口提供的sendRedirect(path)方法,在Servlet中进行资源的重新访问,先把地址发送到客户端,然后客户端利用返回的地址,重新发送请求访问。在这个过程中,请求发生了改变,所以地址栏的url发生了改变,在重定向的过程中,request作用域失效。上一个请求的参数,无法再下一个请求中拿到。重定向是发生了两次请求。
转发:
转发是利用HttpServletRequest接口提供的getRequestDispatcher(path)方法,返回一个RequestDispatcher对象,然后利用这个对象的forword方法或include方法进行资源转向访问或包含资源,在这个过程中,都是在服务器内部进行,请求没有发生改变,所以浏览器地址栏的url也没有发生改变,request作用域是可以使用,所以请求的参数能够拿到。转发是资源转向访问了,但是请求并没有发生改变。