SendRedirect和forward差分


(1)重定向JSP实现JSP/Servlet跳转到目标资源的方法中,基本的想法是:server目标资源完成URL通过HTTP

在回答本报发client浏览器。收到的浏览器URL更新到地址栏后,而目标资源URL交给server。

重定向使目标资源的

URL从server传到client浏览器,再从client通过HTTP请求传回server。当中有一定的网络时延。 


(2)实现JSP页面跳转的主要方法有转发跳转(forward)和重定向跳转(redirect), RequestDispatcher.forward()实现的是转发跳转。

response.sendRedirect()实现的是重定向跳转。 


两者的最大差别在于:


1.重定向是通过client又一次发送URL来实现,会导致浏览器地址更新,而转发是直接在server端切换程序,

目标资源的URL不出如今浏览器的地址栏中。  

2.转发可以把当前JSP页面中的request、response对象转发给目标资源,而重定向会导致当前JSP页面的

request、response对象生命期结束,在目标资源中无法取得上一个JSP页面的request对象。


3.转发跳转直接在server端进行。基本上没有网络传输时延,重定向有网络传输时延。

 


假设要实现server中两个Servlet程序间跳转,而且要使用request作用范围变量交换数据,应该优先

使用request转发跳转。

用重定向实现程序跳转时,假设要求传递数据给目标资源,一个简单、可行的

方法是把数据编码在URL查询串中,比如:http://127.0.0.1:8080/exam.jsp?name=tom







案例分析:

(1)重定向 (sendRedirect):是将用户从当前的页面或servlet定向到还有一个JSP页面或sevlet中;

上图中,我们第一次请求jsp1没有得到想要的数据,这种话server就告诉client,你能够请求JSP2区获取你想要的数据,也就是有两次请求的过程,所以使用重定向的话地址栏中就会有变化。

也就是说重定向。不能将用户对当前页面或还有一个servlet的请求转发给所指定的资源,因此重定向的目标也米娜或servlet对象无法使用request获取用户提交的数据。【8


(2)转发(requestDispatcher):就是讲用户对当前jsp页面或servle的对象请求转发给还有一个jsp页面或servlet对象,可是转发的过程是在server内部。因此地址栏中不会有地址的变化。也不须要client又一次发送请求信息:


它使用户请求。



原文地址:https://www.cnblogs.com/mengfanrong/p/5043223.html