重定向和转发

重定向

  1. 服务器收到客户请求后,http相应一个状态玛301,以及一个Location的首部,是一个URL地址;
  2. 浏览器收到301状态码后,寻找Location首部,并向新的URL发起一个请求;
  3. response.sentRedirect("url");
  4. 使用相对URL:sendRedirect("/..."):为域名之后的地址;
  5. 不能在写到响应之后再调用sendRedirect();否则会抛一个:IllegalStateException;
  6. sendRedirect:参数为一个string,非URL对象;

转发(分派)

  1. servlet决定这个请求交个另一个URL;
  2. request.getRequestDispatcher("url").forward(res,resp);
  3. 浏览器以正常方式响应,即不知道以转发至其他URL,且地址栏中依然显示之前的URL,不是转发后的URL

区别

  1. 重定向由浏览器完成请求;
  2. 转发有服务器完成请求