转发
转发是指当客户端向服务器请求后,服务器会直接向另一个资源发起请求,所以这次请求用的是同一个request。在这里,另一个请求的资源需要和原请求在同一个上下文中。客户端浏览器地址栏中显示的仍是第一次请求的地址。JavaEE中常用request.getRequestDispatcher(“new.jsp”).forward(request, response)来实现。
重定向
重定向是指当客户端向服务器请求后,服务器发现是需要重定向的消息。于是向客户端反馈status状态为302的状态码,同时指定Location为设定的url,这样客户端会进行再一次的请求,所以这次request与原来的request已经不同,且这次请求只需是可访问的资源,譬如说本容器外的资源谷歌、百度等。JavaEE中常用response.sendRedirect(“new.jsp”)来实现。
总结
操作 | 上下文外资源 | request共享 | 浏览器地址 | 实现 |
---|---|---|---|---|
转发 | 不可访问 | 共享 | 不改变 | request.getRequestDispatcher(“new.jsp”).forward(request, response) |
重定向 | 可访问 | 不共享 | 改变 | response.sendRedirect(“new.jsp”) |