JavaWeb重定向和请求转发

JavaWeb重定向和请求转发

重 定 向: respose.sendRedirect(request.getContextPath+“url”);
请求转发: request.getRequestDispatcher(“url”).forward(requset,response)

1.重定向:到服务器中去找servlet1,servlet1当中没有这个资源,告诉你去找servlet2,再去发送一个请求到servlet2,第一次是你主动发送的,第二次是服务器帮你自动发送的,在这两个请求互不干扰、相互独立,在前面request里面setAttribute()的任何东西,在后面的request里面都获得不了。因此,在sendRedirect()里面是两个请求,两个响应,浏览器的地址栏已经发生了改变,在最终的 Servlet 中, request 对象和中转的那个 request 不是同一个对象.。JavaWeb重定向和请求转发_第1张图片
.
.
.
2.请求转发:请求转发只需要发送一次,浏览器的地址栏不会发生变化,整个流程都是在服务器端完成的,所以在servlet1放的数据通过forward(request,response)在servlet2中使用,在最终的 Servlet 中, request 对象和中转的那个 request 是同一个对象,而且地址栏不需要加request.getContextPath
JavaWeb重定向和请求转发_第2张图片

*最后放一下博主AixsCode的总结:
总结具体区别点: 
①. 请求的转发: 地址栏是初次发出请求的地址. 
请求的重定向: 地址栏不再是初次发出的请求地址. 地址栏为最后响应的那个地址
②. 请求转发: 在最终的 Servlet 中, request 对象和中转的那个 request 是同一个对象. 
请求的重定向: 在最终的 Servlet 中, request 对象和中转的那个 request 不是同一个对象.
③. 请求的转发: 只能转发给当前 WEB 应用的的资源 
请求的重定向: 可以重定向到任何资源.
④. 请求的转发: / 代表的是当前 WEB 应用的根目录 
请求的重定向: / 代表的是当前 WEB 站点的根目录.
--------------------- 
作者:AixsCode 
来源:CSDN 
原文:https://blog.csdn.net/w_x_s_h_h/article/details/78396875 
版权声明:本文为博主原创文章,转载请附上博文链接!*

你可能感兴趣的:(JavaWeb重定向和请求转发)