servlet请求转发与重定向的对比

版权声明:欢迎朋友们的观摩,标注原创的文章,如应用,请标明出处,谢谢。 https://blog.csdn.net/qq_37012770/article/details/82625850

在web应用中,有两种页面请求方式,如servlet跳转index.jsp:
1:请求转发

request.getRequestDispatcher("index.jsp").forward(request,response);

2:请求重定向。

response.sendRedirect("index.jsp");

转发 与 重定向 的区别

1.前者:跳转之后,地址还在servlet页面,没有真正回到index.jsp页面,地址栏没变,还是servlet页的地址。
后者:跳转后回到了index.jsp页面,地址栏改变。

2.前者:由于是request请求,所以在值得作用域方面,可以用request.setAttribute() 赋值。
后者:不能用request的域,但可以用session的域request.getSession().setAttribute(“x”, x);

3.在请求的资源需要在多台服务器上跳转时,就用重定向。
服务器使用的少时,用转发。

4.前者:请求一次
后者:请求两次(请求一个servlet情况下)

图解请求与转发

  1. 这里写图片描述

2.这里写图片描述

图一是转发:张三找李四借钱,李四说我没有,我朋友王五有,于是李四向王五去借钱,借到后给了张三,在这个过程中,张三只进行了一次请求,本来是请求的李四,但是李四将请求转发到王五这里。

对应向服务器发送请求也就是一个道理了。

图二是重定向:张三向李四发送借钱请求,李四回应请求,说我没有,王五有,你去找王五。于是张三发送第二次请求,请求王五,王五给张三借钱了。

张三就是你自己,李四和王五就是不同的服务器,上面有不同的服务读到这里,你应该了解转发与重定向的区别的吧。

猜你喜欢

转载自blog.csdn.net/qq_37012770/article/details/82625850