servlet中的请求转发和重定向都是对资源的请求,以前对这两者的区分比较模糊,于是查阅了一些资料,再结合一两个实例,终于在脑海里有了比较明确的区分。
请求转发:
request.getRequsetDispatcher().forward(requset,response),是一种服务器行为,转发时request对象会被保存,也就是说被转发到的另外一个servlet或其他资源中的request对象,跟请求转发的request是通一个对象。又由于这个过程是服务端行为,所以客户端的地址栏不会发生改变。
重定向
response.sendRedirect(url),是一种客户端行为,实际上期间发生的是两次请求,前一次的请求request对象不会作保存,且地址栏地址会发生改变。
现在来看看一个例子:
假设TestServlet是要请求的资源
@WebServlet("/TestServlet")
public class TestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServ