各位高手,请问“response.sendRedirect”和"request.getRequestDispatcher.forword(request,response)"的区别是什么啊?怎么区分啊?

解决方案 »

  1.   

    看这个
    http://topic.csdn.net/u/20070525/13/c3cd6e2c-3c07-4f97-97c9-04f7051882b3.html
      

  2.   

    还想是在地址栏里的URL上有区别,一个显示转接到地址,一个不显示。
      

  3.   

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

  4.   

    你可以理解成为借钱的问题
    对于forward,他相当于你去问张三借钱,张三没有钱,然后张三问李四去借,张三借到了然后再给我.浏览器只知道我去问的张三借,张三具体怎么借的,浏览器是不知道的.所以浏览器只显示张三的地址
    sendRedirect的意思是,我去问张三借钱,张三没有,他告诉你李四有,而且告诉你李四的地址,然后你去问李四去借.浏览器然后转到李四的地址.
    能理解了么 
      

  5.   

    response.sendRedirect:请求重定向,就是将当前页面转发到指定页面中,并只传递sessionrequest.getRequestDispatcher.forword(String url):请求转发,将请求页面的请求中所有包含的信息转发到指定URL中
      

  6.   

    http://www.family168.com/tutorial/jsp/html/jsp-ch-03.html#jsp-ch-03-04
    跟姐姐学jsp,这里有很形象的描述
    这个教程其他内容也挺适合新人看的
      

  7.   

    一个是向前台传一个url,根据这个url页面重新定位资源,一个是服务器自己查找资源,并将该资源发送给前台
    另外就是浏览器地址的区别
      

  8.   

    是不是还有个这样的区别呢forward后面的代码不会执行了,比如你要关闭数据库连接,就需要在forward之前关闭而sendRedirect虽然调了,但其后面的代码还是执行了的.
      

  9.   

    补充下,呵呵,手误.而sendRedirect虽然跳转了,但其后面的代码还是执行了的.
      

  10.   

    response.sendRedirect(url) ——这叫重定向
    request.getRequestDispatcher.forword ——这叫转发重定向以后webserver简单的向请求客户端(就是浏览器)发回一个响应,这个响应更简单,就是告诉客户端浏览器:“别理我了、你找url去吧”。相当于客户端浏览器在地址栏重新输入一个url并回车。转发属于webserver内部机制,转发者和转发目的地是including包含的关系就是说转发以后request、response、session...都一样没有任何变化,相当于jsp页面上的标签:<jsp:include page="..."/>
    转发是各个MVC框架常用的方式,转发的发生完全在webserver内部,客户端浏览器完全不知道。写了好多、累死了...
      

  11.   

    最简单的理解方式:response.sendRedirect:出了服务器进行跳转,就好象你点了<a href>连接一样
             request.getRequestDispatcher.forword(request,response):直接在服务器上进行跳转