代码
重定向
response.setStatus(302);
response.setHeader(“location”, “/webapp/index.jsp”);
//或使用sendRedirect方法,等价于以上两行。
response.sendRedirect(“/webapp/index.jsp”);
定时刷新
//必须设刷新时间,没有设跳转地址时,只刷新当前页面
response.setHeader(“refresh”, “3; url=/web/index.jsp”);
说明
两次请求,两次响应,request对象不是同一个。
地址栏地址会发生变化。
既可以实现在同一个WEB应用内部资源之间进行跳转,也可以在不同的WEB应用和不同服务器资源之间进行跳转。
由于是两次请求,两次响应,无法通过request对象共享数据。
重定向即时跳转,而定时刷新可以在跳转到新的地址前设置一个时间,在这段时间内可以输出文本到浏览器并维系到这段时间。
代码
//在请求对象中获取转发器
RequestDispatcher rd = request.getRequestDispatcher("/servlet");
//请求直接转发
rd.forward(request, response);
//请求包含转发
rd.include(request, response);
说明
一次请求对应一次响应,request对象是同一个。
地址栏地址不会发生变化。
请求转发是服务器内部的并且是同一个WEB应用内部的资源跳转;不能是在不同应用和不同服务器中的资源跳转。
一个Servlet只能转发给一个目标servlet(即A不能同时转发给B和C),但可以进行多次转发(A转发给B, B再转发给C)。
forward转发时,response缓冲区不会保留转发前的数据,只会响应转发目标servlet的数据给客户端。
include转发时,两个servlet的数据都会保留,并顺序地响应会客户端。
原文:https://www.cnblogs.com/jarjack/p/15141772.html