请求转发域重定向之间的区别

1,请求转发
request.getRequestDispatcher("/AServlet").forward(request,response);
//请求包含 ,request.getRequestDispatcher("/AServlet").include(request,response);

2,重定向

response.sendRedirect(request.getContextPath()+"/user/success.jsp");
1)request.getContextPath(): 获取要访问的web项目的路径。

区别:(5点)
  1)请求转发可以携带数据,重定向不能携带任何数据。因为请求转发是一个请求,所以可以使用request域存放数据。而重定向因为是两次请求,会另外产生一个request对象。
  2)请求转发,浏览器地址栏不会发生变化(转发是一个请求);而重定向,浏览器端地址栏会发生变化(重定向是两次请求,地址栏会变成第二个请求的路径)。
  3)请求转发不可以转发到其他的web应用项目(其他的网站);而重定向想去哪就去哪。
  4)请求方式是get(),请求转发给其他的servlet时,请求方式是什么?仍然是get(),因为是一个请求;请求方式为post(),重定向给其他的servlet,请求方式是什么?是get();重定向第二个请求永远是get()方法。
  5)请求转发的请求消息头不会清空,请求正文会清空--->清空是指:在缓冲区(在服务器端的缓冲区)内清空请求正文(留头不留体);重定向所有内容(消息头,消息正文)都会清空。

你可能感兴趣的:(Web,servlet)