转发和重定向都能实现页面之间的跳转,不同之处主要表现在以下几方面:
转发过程:Web服务器内部将一个request请求的处理权交给另外一个资源,属于同一个访问请求和响应的过程,所以request对象的信息不会丢失。转发过程是在服务器的内部执行,浏览器并不会知道服务器执行了这一请求。服务器通过request对象的getRequestDispatcher()方法获取一个RequestDispatcher对象,然后通过该对象的forward()方法将提交信息在多个页面之间进行传递,转发后地址栏显示的依然是浏览器第一次请求的地址。
重定向过程:web服务器向浏览器返回一个响应,浏览器接收到此响应之后会根据响应的地址再发送一次请求到服务器,所以这两次的请求并不一样,则上一次的请求信息将会丢失。重定向作用于客户端,通过新的请求地址实现页面之间的跳转。在跳转页面之后,地址栏将会显示新的地址。重定向通过服务器响应response的sendRedirect()方法实现。