文档章节

forward 和redirect的区别

董广明
 董广明
发布于 2012/06/18 13:33
字数 1023
阅读 306
收藏 2
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)的内容。

© 著作权归作者所有

董广明
粉丝 21
博文 43
码字总数 36868
作品 0
南京
前端工程师
私信 提问
forward与redirect的区别

servlet中常用到的两种转向,之前没注意到这两种转向的区别,现在进行下记录与分享。 1.从地址显示来说 forward是服务器请求资源,比如你转向的地址为2.jsp,这时服务器先自己直接访问2.jsp...

银古
2013/08/12
3.3K
5
Servlet 相关面试题及其解答

Q:Servlet 和 GCI 的区别? A:Servlet 是基于 Java 编写的,处于服务器进程中,他能够通过多线程方式运行 service() 方法,一个实例可以服务于多个请求,而且一般不会销毁; CGI 对每个请求...

TinyDolphin
2017/11/22
0
0
forword VS redirect 区别

1) forward 是服务器请求资源,服务器直接访问目标地址的 url,把 url 的响应内容读取出来,然后把这些内容发送给浏览器,浏览器根本不知道服务器发送的内容是从哪取出来,所以他的地址栏中...

芥末无疆
2018/02/14
0
0
Web术语—request、forward、redirect、error、GET、POST、U...

1.浏览器的刷新与转到的区别 2.Web环境下request、forward、redirect、error之间的关联与区别 3.Web环境下请求方式GET与POST的区别 4.URL与URI的区别 关于HTTP请求流程参见下面的URL地址: ...

回忆在昨天
2012/10/12
267
0
action不能往jsp中传递数据的问题

struct z中一个action的配置如下: path="/library" parameter="method" name="libraryForm" scope="request" validate="true" type="org.springframework.web.struts.DelegatingActionProxy"......

wuwulh
2010/08/23
59
0

没有更多内容

加载失败,请刷新页面

加载更多

灰度控制,比较两个版本

/** * 比较version1和version2的版本大小 * @param version1 * @param version2 * @param splitStr * @return * 返回version1-比较结果-version2 */public static CompareRe...

春哥大魔王的博客
5分钟前
1
0
JAVA CAS单点登录之一:搭建CAS服务器

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://dba10g.blog.51cto.com/764602/1753086 前言 这一段时间,心血来潮研究了...

彬彬公子
5分钟前
1
0
Jsoup analysis THML

test

东方神祇
6分钟前
1
0
Spring Boot 2 实战:根据条件来自动配置不同逻辑的Bean

1. 前言 我们经常会有根据条件来加载不同的接口。比如你查询目录下文件列表, Windows 下你会用 CMD 的 dir 命令,而 Linux 下你会使用 ls 命令。 熟悉 Spring Boot 自动配置的也知道 Spring...

码农小胖哥
9分钟前
3
0
PCB设计-Allegro软件入门系列-焊盘的构成和用途(1)

Allegro软件入门最难的就是焊盘制作,而一个贴片焊盘都至少包括一个顶层如Top、钢网层pastemask_top、阻焊层(也就是人们常说的开窗层)sodermask_top,而一个插件焊盘就比贴片多了一个中间层和...

demyar
13分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部