在Java中转发response.getRequestDispatcher("xx.jsp").forword(request,response)和重定向request.sendRedirect("xx.jsp")的区别:
转发:转发是在服务器端起作用的,当使用forward()方法时,Servlet容器传递HTTP请求,从当前的Servlet或jsp到指定的Servlet或jsp,此过程仍然在request作用范围内。转发后,浏览器的地址栏内容不变。重定向:重定向是在用户的浏览器端工作的,是Servlet对浏览器做出响应后,浏览器再次发送了一个新请求,重定向后,浏览器的地址栏内容发送变化。注意:其实最大的区别:就数数据的传递,如何你想把数据通过request作用域传递到下一个页面的话,那就用转发,而且效率也很高,反之,就使用重定向。

解决方案 »

  1.   

    转发是重新生成一个request
    重定向则无,用的还是第一次的request
      

  2.   

    你别在这里误人子弟啦,response.getRequestDispatcher("xx.jsp").forword(request,response)和重定向request.sendRedirect("xx.jsp"),你看看自己有没有写错啊?????!!!是不是应该是:request.getRequestDispatcher("xx.jsp").forword(request,response)和重定向response.sendRedirect("xx.jsp").!悲哀...
      

  3.   


    3楼说的很对。request的那个是服务器端的跳转,你可以看下IE中的url没有发生变化.而response是客户端的跳转,URL是会发生变化的
    request跳转是可以带参数的,而response是不能带request类型的参数的。望你仔细体会吧。刚开始的时候我也是很混乱的。。
      

  4.   

    这样理解很对。request请求一次。而response是请求了两次。
      

  5.   

    --!三楼确实没说错,但是response好像是响应吧,当执行response时已经到了客户端了,