forward(request转发)和redirect(response重定向)的区别

区别

实现方式

  • forward 叫转发,通过 request.getRequestDispatcher("new.jsp").forward(request, response); 实现

  • redirect 叫重定向,通过 response.sendRedirect("new.jsp");

地址栏

  • forward:服务器内部跳转,地址栏不变,显示内容改变

  • redirect:地址栏改变,显示内容也改变,是浏览器实现的跳转

数据共享

  • forward:用同一个 request 对象,可通过 request 共享数据

  • redirect:不能共享数据

请求

  • forward:浏览器发一次请求

  • redirect:浏览器发两次请求。浏览器第一次请求,服务器发浏览器302状态码,通知浏览器重定向,浏览器再次发请求