请求转发与请求重定向的区别

1,请求重定向:

客户端行为:response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保持,地址栏的URL地址会改变。

2,请求转发:

服务器行为:request.getRequsetDispatcher().forward(requset,response);是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变。(服务器内部转发,所有客户端看不到地址栏的改变)

下面举个生活中的实例来说明:

请求重定向:

就好比我们找一个A广告公司给设计名片,A明确告诉我们他们不会设计,就让我们找B公司,结果B公司给我设计好了,所以我们会对外宣称是B公司给我们设计的名片,(所以我们就相当于发送了两次次请求,URL地址栏里就从A变成了B公司)

请求转发:

同样去找A公司给设计名片,A公司虽然不能设计但是他们接下了我们的活,把这项任务外包(转发)给B公司,最终我们会把钱给A公司,也就会对外宣称是A公司给我们设计的名片这就是请求重定向(所以我们就相当于只对A发送了一次请求,URL地址栏里依然是A公司)。

总结:

转发在服务器端完成的;                       重定向是在客户端完成的
转发的速度快;                                      重定向速度慢

转发的是同一次请求;                           重定向是两次不同请求

转发不会执行转发后的代码;                重定向会执行重定向之后的代码

转发地址栏没有变化;                           重定向地址栏有变化

转发必须是在同一台服务器下完成;     重定向可以在不同的服务器下完成

Forward是在服务器端的跳转,就是客户端一个请求发给服务器,服务器直接将请求相关的参数的信息原封不动的传递到该服务器的其他jsp或servlet去处理,而sendredirect是在客户端的跳转,服务器会返回给客户端一个响应报头和新的URL地址,原来的参数什么的信息如果服务器端没有特别处理就不存在了,浏览器会访问新的URL所指向的servlet或jsp,这可能不是原先服务器上的webservce了。

时间: 2024-08-06 15:37:42

请求转发与请求重定向的区别的相关文章

请求转发 和 URL 重定向

五 请求转发 和 URL 重定向 1 请求转发和重定向 干什么用? 是我们在java后台servlet中 由一个servlet跳转到 另一个 servlet/jsp 要使用的技术 前端发送请求到后台 : A 浏览器地址栏输入链接 B a标签 <a href="url地址">跳转</a> C form表单 <form action="url地址" method="get/post"> <input type

Java Web中请求转发和请求包含

1.都是在一个请求中跨越多个Servlet 2.多个Servlet在一个请求中,他们共享request对象.就是在AServle中setAttribute()保存数据在BServlet中由getAttribute()取出数据 3.在AServlet转发到BServlet,那么整个请求都是由BServlet来完成,AServlet不再插手 4.AServlet 包含BServlet,那么两个Servlet共同完成请求 5.请求转发和请求包含都需要使用一个对象RequestDispatcher. A

URL转发和301重定向的区别

URL转发和301重定向区别是什么?URL转发和301重定向对于搜索引擎和权重转移都一样吗?下面我们一起来分析下: 一.从用户体验角度分析 在用户角度上,URL转发和301重定向完全是一样的,没有任何区别. 二.从操作使用URL转发和301重定向角度分析 URL转发操作起来更加容易,而301重定向在IIS服务器上相对比较麻烦,而且虚拟主机用户无法操作,apache服务器也比较容易实现. 三.从搜索引擎爬行和权重转移角度分析 URL转发没有权重转移,所以对于权重转移的站点没有任何帮助,如果你的站点

请求转发和请求重定向区别

请求转发: 1.request由服务器执行,客户端只发一次请求. 2.地址栏地址不变 3.转发能够传递数据,request域 4.请求转发完成后,目的页面jsp或者html的css样式可能加载不了,原因是路劲错误(正在思考.......) 请求重定向: 1.response由客户端执行,客户端发送两次请求. 2.地址栏地址发生改变 3.不能传递数据,如果想能够传递数据,要搭配session域进行数据传递. 4.可以跳转到其他应用,包括外站. 5.请求重定向完成后,目的页面jsp或者html的cs

请求转发和请求重定向

比喻: 请求转发:A向B发送请求,想让B帮忙完成一项工作,当B接收到请求后发现自己完成不了,于是B请C帮忙,C接收到B的请求后最终完成了该项工作,并把最后的结果返回给A.此过程A只发送了一次请求给B,A只知道把请求发给B,至于B是怎么完成的A并不关心,他只等待最终的结果. 重定向:A向B发送请求,想让B帮忙完成一项工作,当B接收到请求后发现自己无法完成,就立即告诉A情况,并向A推荐C可以完成该项工作,于是A就找C帮忙,C最终完成该项工作,返回给A. 不同点: 1.浏览器地址栏显示不同(表面区别)

请求转发、请求重定向

请求转发:getRequestDispatcher request.getRequestDispatcher("success.jsp").forward(request,response); 请求重定向:sendRedirect response.sendRedirect("success.jp"); 区别: 请求转发能将参数传递给转发地址,不能转发给其他应用的地址 请求重定向不能将参数传递给转发地址,能转发给其他应用的地址

servlet的同步请求异步请求以及请求转发与重定型的区别

在javaWeb阶段,前端页面发送请求有两种: 1.同步请求 2.异步请求 同步请求与异步请求的区别是:同步请求跳转界面,异步请求只传递数据,不会跳转界面 (即使用同步请求,servelt响应的是一个界面,前台需要加载这个新的界面的图片样式脚本等诸多资源,而是用异步请求的话,只传递数据,不会刷新资源) 做一个简单的案例: 1.新建一个页面login.jsp <%@ page contentType="text/html;charset=UTF-8" language="

请求转发与请求重定向

----请求重定向:客户端行为,response.sendRedirect(); 从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL地址会改变. ----请求转发:服务器行为,request.getRequestDispatcher().forward(req,resp); 其本质是一次请求,转发后请求对象会保存在request中,地址栏URL地址不会改变.

JavaWeb请求转发与请求重定向理解

请求转发使用方法 httpServletRequest.getRequestDispatcher("login.jsp").forward( httpServletRequest, servletresponse); 此请求过程 完全是一次request对象 完成的. 我们可以用 filter 截取用户的这次请求,然后利用这次请求 访问其它页面,当服务器返回信息给浏览器时 此次请求与response 结束. 过程类似与  request request request   respon