很基础的基础知识

  • 转发是服务器行为; 重定向是客户端行为

  • 请求转发是一次请求,地址栏不改变;重定向是两次不同请求,地址栏改变

    • 客户端发送http请求,web服务器接收这个请求,调用内部的一个方法在容器内部完成请求处理和转发动作, 将目标资源发送给客户.客户端一直显示的是第一次访问的路径.
    • 客户端浏览器发送htt请求,web服务器接收后发送301状态码,以及对应的新的url,客户端浏览器发现是301请求后, 就会再发送一个新的http请求,请求url是新的访问的地址,所以浏览器显示的是两次url.
  • 转发得是同一个web容器下的url;重定向可以重定向到任意url

  • 转发过程中,每一个servlet都可以获取请求参数,重定向,只有第一次浏览器给某个servlet发送的请求参数可以被接收到.重定向的servlet是接收不到请求参数的,需要把请求参数再次传递

  • 转发速度快,重定向速度慢

  • 转发: / 代表当前web应用的根目录; 重定向: / 代表当前web站点的根目录

  • 重定向: response.sendRedirect() 转发: HttpServletRequest 的 forward(request, response)