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

解决方案 »

  1.   

    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
      

  2.   

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

  3.   

    通俗的说:
    当一个客户端访问服务器端的一个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后面
    地址拦没有变化                               地址拦有变化
      

  4.   

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

  5.   

    是请求转发,参数会传递过去,
    引用 1 楼 jiatai416 的回复:
    redirect直接跳转到页面,参数会丢失
      

  6.   

    http://blog.csdn.net/starnight_cbj/archive/2008/10/18/3094393.aspx#967256
      

  7.   

    orward仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;redirect则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,forward更加高效,在forward可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。 
    原文地址:http://www.java2000.net/p2597更多的JAVA面试题,Java代码,Java学习资料,请到:JAVA世纪网
    更多的数据库面试题,智力面试题,相声,笑话,请到:老紫竹的家
      

  8.   

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

  9.   

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

  10.   


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