RT
这两个方法有什么区别,为什么有的时候不能用request而只能用response

解决方案 »

  1.   

    sendRedirect不可以共享request 的数据,一般用于用户注销登录时返回主页面和跳转到其它的网站等等
    requestdispather的forward方法一般用于同一个web应用程序中的servlet跳转,可以共享request参数
      

  2.   

    主要区别是Request获得用户的请求,比如你将一个字符串发送到服务器就用Request对象的方法接收。response是响应 对象的请求, 对客户端发出的请求作出动态的响应,向客户端发送数据当服务器处理完你的请求信息后,将处理结果发回客户端。
      

  3.   

    response.sendredirect 重定向,让浏览器重定向到一个URL,地址栏会发生改变。
    request.getRequestDispatchare().forward(request,response);是有服务器转发请求,浏览器无法知道具体地址,地址栏不变。转发后还可以继续获得request,response对象中的信息。
      

  4.   

    Sendredirect
     1.是不同的request
    2.send后的语句会继续执行,除非return
    3.速度慢
    4.需要到客户端的往返,可以转到任何页面,
    5.地址栏有变化
    6.可以传参数,直接写在url后面
    /代表的是http://127.0.0.1/
    <%response.sendRedirect("/test/ServletToJSP");%>
    <form action="/test/ServletToJSP">
    <a href="/test/ServletToJSP">test</a>
    Forward
     1.虽然是不同的对象,但是,可以取到上一个页面的内容
    2.forward后的语句不会继续发送给客户端
    3.速度快
    4.服务器内部转换,
    5.地址栏没有变化
    6.可以传参数
    /代表的是http://127.0.0.1/test
    this.getServletContext().getRequestDispatcher ("/servlet_jsp/ServletUseJsp.jsp")
    .forward(req, resp);
    并且只能以/开头
      

  5.   

    区别大家多说了。
    request进行转发是同一个请求对象一直在传递可以得到原来放在请求中的数据
    sendredirect 是服务器模拟的一个新的请求拿不到原请求中的数据
      

  6.   

    一个是重定向, 一个是转发。request.getRequestDispatcher()是请求转发,前后页面共享一个requestresponse.sendRedirect()是重新定向,前后页面不是一个request 
      

  7.   

    request.getRequestDispatcher() 是请求派发,由服务器完成页面地址的转换
    response.sendRedirect() 是页面重定向,由客户端完成页面地址转换
      

  8.   

    response.sendredirect 重定向,主要表现地址栏请求地址发生变化,用处:做完了一件事转向做另一件事
    request.getRequestDispatcher 转发,主要表现地址栏请求地址不发生变化,用处:一件事分来两步或多步来做,中间的衔接就用转发,以使得每步都能使用request和response中的数据不知道这样说是否有助与你的理解