请求的转发和重定向
重定向和转发实质的区别 :转发执法出了一次请求,而重定向发出了两次请求。
具体体现:
- 请求的转发:地址栏是初次发生请求的地址。
请求的重定向 :地址栏不是初次发出相应的地址,而是为最后相应的地址。 - 请求的转发 :在最终的Servlet中,request对象和中转的那个request对象是同一个对象,请求了一次request对象肯定一样
请求的重定向 : 在最终的Servlet中,request对象和中转的那个request对象不是同一个对象,因为请求了两次request对象肯定不一样。 - 请求转发 : 只能转发给当前web应用的资源。
请求重定向 : 可以重定向到任何资源。 - 请求转发 :/ 代表当前web的根目录 。(http://localhost:8080/day30)
请求重定向 : / 代表当前web的跟目录 。(http://localhost:8080)
转发代码实现
//请求的转发
//1。 调用HttpServletRequest的getRequestDispatcher()方法获取RequsetDispatcher的对象
//参数需要传入转发的地址
String path = "TestServlet";
RequestDispatcher requestDispatcher = request.getRequestDispatcher(path);
// 调用forward(request,reponse)方法进行请求转发
requestDispatcher.forward(request, response);
重定向代码实现
String path = "TestServlet";
// 执行请求的重定向 直接调用response.sendRedirect(path) 方法
response.sendRedirect(path);