请求转发:
一个servlet将未完成的处理转发给别一个servlet继续处理,由被转发的servlet决定生成响应还是继续进行下一个请求转发。
特点:
- 转发过程中request和response对象被各个Web组件共享。
- 转发目的地址可以是当前过程中的某个servlet或者页面。
- 转发后客户端地址栏不发生改变。
- 请求转发过程客户端会发送一次请求收到一次响应。
请求转发格式:
request.getRequestDispatcher("URL链接路径").forward(request,response);
重定向:
重定向是服务器对客户端的请求做出响应,但是响应的结果是让客户端去重新发出一个针对另一个url的访问请求。
重定向本质:向客户端发送一个302状态码响应。
特点:
- 重定向过程中request和response对象不会被Web组件共享,数据不会传输到下一个servlet。
- 重定向后客户端地址栏发生改变。
- 重定向过程客户端会发送两次请求收到两次响应。
重定向格式:
response.sendRedirect("URL链接路径");
重定向与请求转发的区别:
- 重定向时客户端发送两次请求,收到两次响应;请求转发是一次请求,一次响应。
- 请求转发的运行速度要大于重定向。
- 重定向后客户端地址栏会发生改变,请求转发不会。
- 重定向时request与response对象不会共享,请求转发可以共享。