在一个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域里面的数据取出来,使用转发机制。
- 剩下所有的请求均使用重定向。(重定向使用较多。)