最近遇到了response.sendRedirect(); 和 request.getRequestDispatcher().forward(),的用法区别,用response.sendRedirect(); 不能传递 request 中的参数,用 request.getRequestDispatcher().forward(),原来jsp 中的图片等信息不能显示,这该怎么解决,请高手指教。

解决方案 »

  1.   

    response 是重定向 两次请求,所以不能保存之前存储的值,request 是一次请求,能保存当前的值.
      

  2.   

    这样能解决:
    request.getRequestDispatcher("test.html").forward(request, response);
    这样所有参数都传过去了。
    这是重定向问题。
    forward和rederect的区别:redirect重定向到另外一个页面,重新开始一个请求forward跳转到另外一个页面, 请求不断开。
    forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。
    自己用过就知道了。