请求的转发和重定向
转发
调用
HttpServletRequset的getRequsetDispatcher()方法获取RequestDispatcher对象。调用
getRequestDispatcher()需要传入要转发的地址调用
HttpServletRequest的forward(request,response)进行请求的转发String path="testServlet"; RequestDispatcher requestDispatcher=request.getRequestDispatcher("/"+path); requestDispatcher.forward(request,response);
重定向
直接调用
response.sendRedirect(path)方法String path="testServlet"; response.sendRedirect(path);
区别
- 请求的转发只发出了一次请求,重定向则发出了两次请求
- 在最终的
Servlet中,request对象和中转的request对象,(转发)是同一个对象,(中转)不是同一个对象 - 请求转发地址栏是初次发出请求的地址,请求重定向地址栏是最后响应的那个地址
- 请求转发只能转发到当前web应用的资源,请求的重定向可以重定向到任何资源
- 请求转发中
/代表的是当前web应用的根目录,请求重定向中/代表的是当前web站点的根目录
本文详细阐述了HTTP请求中的转发和重定向的区别。转发通过HttpServletRequest的forward方法实现,仅发送一次请求;重定向通过response.sendRedirect实现,会发送两次请求。转发使request对象保持不变,而重定向则创建新的request对象。转发只能在当前Web应用内部进行,重定向则不受此限制。
663

被折叠的 条评论
为什么被折叠?



