请求的转发和重定向
转发
调用
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站点的根目录