哪位高手可以帮小弟解释下JSP页面中,
request.getDispather().forward(),和response.sendRedirect()两个页面转向机制的原理和不同点??
刚做了一个BBS的Web项目,这两个方法搞得不点不太明白,谢谢指教!

解决方案 »

  1.   

    request.getRequestDispather().forward(),是服务器端的跳转,地址栏无变化。
    response.sendRedirect()是客户端的跳转,地址栏发生变化。
      

  2.   

    正确
    补充一点,request.getRequestDispather().forward()
    可以用requset.getParameter或者requset.getAtrribute获得上一页面传递的参数。response.sendRedirect()则不行。
      

  3.   


    补充一点: request.getRequestDispather().forward() 是服务器端跳转,服务器把请求直接跳转,客户端不会再去发送请求;而response.sendRedirect()客户端再次发送请求,也就是相当于再浏览器地址栏里输入了另外一个地址,然后按了下回车一样。
      

  4.   

    补充:
    request.getRequestDispather().forward(),是服务器端的跳转,地址栏无变化。 (转发)
    response.sendRedirect()是客户端的跳转,地址栏发生变化。(重定向)
      

  5.   

    再补充一点   request.getRequestDispather().forward(), 转发之后只能定位到当前项目中的页面。
    而response.sendRedirect();可以定位到web网页  如www.baidu.com,而前者不能
      

  6.   

    request.getRequestDispather().forward(),是服务器端的跳转,地址栏无变化。 
    response.sendRedirect()是客户端的跳转,地址栏发生变化。
    说的挺正确的
      

  7.   

    这么说吧 
    forward()呢是重新请求URL  
    sendredirect()呢是按逻辑进行请求 的 呵呵 
    会有作用域的问题!!!
      

  8.   

    request.getRequestDispather().forward(),是服务器端的跳转也叫一次请求,地址栏无变化,此种请求相当于服务器端直接查找请求资源返回给客户端,这种请求可以保证转跳时request里面的attribute值不丢失。
    response.sendRedirect()是客户端的跳转也叫两次跳转,相当于你在这请求发生后服务器会给客户端一个响应,客户端再次发送请求给服务器,然后服务器返回你所请求的资源,地址栏发生变化,而且此时你放在request里面的东西要丢失。
      

  9.   

    请求转发   request.getDispather().forward()
                   在转到的页面里还能还能接受到数据
                   比如request.getParameter();
                   从字面上理解 请求转发 就是在getDispather这个页面里也可以不做处理
                     也可以提交到getDispather转到的页面去做处理重定向   response.sendRedirect()  

                   只是做了一个地址的切换