JavaWeb学习09 | 转发和重定向的区别

31 阅读1分钟

在一个web应用中如何完成资源的跳转

可以完成资源跳转的两种方法:
  • 转发
  • 重定向

转发和重定向的区别?

  • 代码区别

    • 转发:
    //获取请求转发器对象
    RequestDispatcher dispatcher = request.getRequestDispatcher("/dept/list")
    //调用请求转发器对象的forward方法完成转发
    dispatcher.forward(request,response);
    转发的时候是一次请求,不管转发多少次 AServlet->Bservlet->Cservlet都在一个request中。
    
    • 重定向:
    //注意:路径上要加一个项目名。为什么因为是浏览器发送的请求,浏览器发送请求,请求路径就是要加项目名的
    response.sendRedirect("oa/dept/list")
    
  • 形式区别(Aservelt->Bservlet)

  • 转发和重定向的本质区别

    • 转发: 是由WEB服务器来控制的。A资源跳转到B资源,这个跳转动作是由内部的Tomacat决定的
    • 重定向:是浏览器完成的,具体跳转到哪个资源,是浏览器说了算。
  • 转发和重定向应该如何选择?

    • 如果在上一个Servlet当中想request中绑定了数据,希望从下一个Servlst当中把request域里面的数据取出来,使用转发机制。
    • 剩下所有的请求均使用重定向。(重定向使用较多。)