forward 和redirect的区别

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)的内容。
相关文章
相关标签/搜索