`
xfjt297857539
  • 浏览: 150209 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

forward和redirect的区别

    博客分类:
  • Jsp
 
阅读更多

1.从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容
再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.所 以redirect等于客户端向服务器端发出两次request,同时也接受两次response。
谁能解释一下这两段话的意思,尤其是后一段的2次????

回答列表:

forward:A访问B,B访问C,过程是A-->B-->C,此时打开的是C,但地址栏里的地址是B的地址。
redirect:A访问B,若想访问C,需由B返回给A一个参数,由A去访问C,过程是A-->B-->A-->C,地址栏的地址是C。2次的意思是指一次访问B,一次访问C

redirect先要返回上一请求,然后在访问下一请求。

通俗的说:
当一个客户端访问服务器端的一个JSP(本质上就是一个SERVLET),当调用response.sendRedirect,实际上它做的是从服务器端往客户端发一个指令,告诉IE把地址拦自动变成第2个页面,并点一下转到那个按钮,客户端接到这个指令后马上去访问第2个JSP,第2个JSP再把算出的结果返回客户端。。。。。。
forward  当一个客户端访问服务器端的一个JSP(本质上就是一个SERVLET),在服务器端直接转到第2个JSP,让第2个JSP(实际上是SERVLET)来处理客户端的请求,请求处理完把结果直接返回到客户端。(可以转了好几次,客户端不知道。。。。最后一个反给客户端)
区别:
<jsp:forward>                          response.sendRedirect
使用同一个request                        是不同的request
forward后的语句不会继续发送给客户端        send后的语句会继续执行,除非return
速度快                                      速度慢
服务器内部转换                              需要到客户端的往返,可以转到任何页面
可以传参数                                  可以传参数,直接写在url后面
地址拦没有变化                              地址拦有变化

forward体现在请求转发。。。也就意味着你的请求参数a-->b-->c  以页面也可以获得a到b的请求参数
response.sendRedirect 重定向  到c页面时  a--b的参数就得不到了。。是一个新的请求

后面的意思是:  服务器叫客服端转发    就是再你自己的电脑上转发  不是服务器转发

forward仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;
redirect则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。
所以,forward更加高效,在forward可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。
在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

我感觉也是,能用Forward是服务器间的请求跳转!Redirect是重定向!相当于直接在浏览器输入地址!

forward和redirect的区别
关键是redirect是重新返回客户端,重定向
而forword是可以是内部把请求进行转向,不用返回客户端

redirect里的2次的概念应该是这样的:
第一次request:  客户端    请求->  服务器
第一次response: 服务器    redirect(url)->  客户端
第二次request:  客户端    根据redirect的url再次请求  服务器
第二次response: 服务器直接去获取(url)的内容。

来自:http://hi.baidu.com/274084093/blog/item/97c9bbde6153b753cdbf1af9.html
分享到:
评论

相关推荐

    转发和重定向的区别 forward和redirect的区别

    它们的主要区别在于请求处理流程、URL改变以及数据共享方式。 1. 转发(Forward): - 使用`RequestDispatcher.forward()`方法实现。 - 请求转发是在服务器内部完成的,客户端浏览器并不知情。这意味着,浏览器的...

    forward与redirect区别

    在开发Web应用时,我们经常会遇到“forward”和“redirect”的概念,它们是两种不同的页面跳转方式。理解和掌握它们的区别对于优化用户交互和处理请求流至关重要。 **forward(转发)**: - 转发是由服务器端完成的...

    forward转发与redirect重定向的区别.zip

    在Web开发中,"转发"(Forward)和"重定向"(Redirect)是两种常见的请求处理方式,它们在实现客户端和服务器之间的交互时起到至关重要的作用。了解它们的区别对于优化用户体验和提高应用性能至关重要。 首先,让...

    19.Servlet中forward和redirect的区别.avi

    19.Servlet中forward和redirect的区别.avi

    Java面试题19.forward和redirect的区别.mp4

    Java面试题19.forward和redirect的区别.mp4

    JAVA面试题之Forward与Redirect的区别详解

    文中详细介绍了两种请求转发方式的原理和区别,包括请求转发的含义、Forward转发请求的原理、Redirect转发请求的原理等。 请求转发的含义 在JAVA web开发中,请求转发是指服务器端将用户的请求转发给其他信息资源...

    forward与redirect!转发和重定向 解析

    ### Forward与Redirect解析 在Web开发中,Forward(转发)与Redirect(重定向)是两种常见的页面跳转方式。它们虽然都可以实现从一个页面跳转到另一个页面的功能,但在实现机制、应用场景以及对用户浏览器地址栏的...

    jsp forward与redirect实探

    当我们需要在不同的页面之间导航时,`forward`和`redirect`是两种常见的处理请求转发和重定向的方法。本文将深入探讨这两种机制及其区别。 首先,`forward`是通过服务器端内部跳转实现的。它使用`RequestDispatcher...

    java中dispcter和forward的区别

    `forward()`操作发生在服务器端,对客户端浏览器而言是透明的,即浏览器的URL不会改变,而且请求和响应对象在转发过程中保持不变,可以共享`Request`范围内的数据。 相对地,`sendRedirect()`是`...

    struts_actionforward.rar_ActionForward_redirect

    ActionForward的使用 1、理解全局和局部ActionForward的概念 2、redirect的使用 3、struts-config.xml文件不允许动态修改 4、理解动态ActionForward,动态的ActionForward是可以运行期修改的

    直接请求转发(Forward)和间接请求转发(Redirect)两种区别.docx

    主要分为直接请求转发(Forward)和间接请求转发(Redirect)。这两种转发方式在处理请求时有着显著的区别。 直接请求转发(Forward): 直接请求转发是服务器内部的资源调度,用户在浏览器中只会看到最初的请求...

    springMVC3学习 九 redirect和forward跳转 源码

    springMVC3学习 九 redirect和forward跳转 源码 文章地址http: blog csdn net itmyhome1990 article details 26286669

    structs in action中文完全版\6. 连线 ActionForward.pdf

    通过合理配置ActionForward,可以有效地管理应用程序的控制流和数据流,实现更加灵活和高效的Web应用开发。开发者应充分了解ActionForward的各项属性及其使用场景,以便在实际项目中发挥其最大效能。

    阿里巴巴校园招聘面试试题合集总结.docx

    1. **Forward 和 Redirect 区别** - Forward(转发)是服务器内部操作,它不会改变URL地址,浏览器看到的始终是最初的请求URL,而服务器在后台处理请求并调用其他资源。 - Redirect(重定向)则是服务器向浏览器...

    ActionForward和国际化

    &lt;forward name="login" path="/login.jsp" redirect="true"/&gt; ``` 在这个例子中,`name`属性指定了这个`ActionForward`的名称,`path`属性定义了转发的目标路径,而`redirect`属性则表示是否需要执行重定向操作。 ...

    用友nc事业部的笔试题 .docx

    1. Web 中的 Forward 和 Redirect 区别: - Forward 是服务器内部的重定向,客户端浏览器地址栏的URL不会改变,适合于在同一个应用内部进行页面跳转,效率较高,有助于隐藏实际链接。 - Redirect 是完整的HTTP...

    Ext做的例子右键菜单设置forward跳转b/s版

    在Web开发中,"forward"不同于"redirect"。重定向(Redirect)会发送一个新的HTTP响应到客户端,让浏览器加载不同的URL;而转发(Forward)则是在服务器端内部完成的,用户浏览器看到的仍然是原始请求的URL,但实际...

    Struts2中实现页面的跳转

    通过深入理解和正确配置上述元素,你可以有效地在Struts2框架中利用`&lt;jsp:forward/&gt;`标签实现页面的跳转,避免遇到“no found”的问题。同时,也要注意,在现代Web开发中,更多地使用`&lt;s:redirect/&gt;`标签进行重定向...

    IT java 面试题库

    2. **Servlet中,forward和redirect区别是什么?** - `forward`是服务器内部转发,客户端浏览器不会看到转发过程,URL不变。 - `redirect`是客户端重定向,浏览器会发送一个新的请求,URL会发生变化。 #### 十、...

    request和response实现跳转和重定向的区别

    1. 请求重定向(Redirect): 请求重定向是通过`Response`对象来实现的,服务器在收到请求后,会返回一个状态码3xx(如301永久重定向,302临时重定向),并在响应头中设置`Location`字段,指示客户端应该去新的URL...

Global site tag (gtag.js) - Google Analytics