以下两段代码中request表示HttpServletRequest对象,response表示HttpServletResponse对象。正确的说法是:
(1)RequestDispatcher rd = request.getRequestDispatcher("hello.jsp");
     rd.forward(request,response);
 (2) response.sendRedirect("hello.jsp"); a) (1)和(2)代码都实现把请求转发给目标组件hello.jsp的功能,且都能共享request范
围内的数据
b)  (1)段代码实现的转发组件hello.jsp功能是直接在服务器进行的
c)  (2)段代码实现的转发组件hello.jsp功能是必须要经过客户端后再转发的。
d)  以上说法都错。

解决方案 »

  1.   

    ServletResqonse接口中的sendReadirect()方法和forward()方法的区别  
     
           二个方法都是用于请求转发的方法,转发给另外的资源为客户端服务。但二者有本质的区别
     
           sendReadirect()方法原理:   
     
                  1,客户端发送请求,Servlet1做出处理。   
     
                  2,Servlet1调用sendReadirect()方法,将客户端的请求 重新定位 到Servlet2。   
     
                  3,客户端浏览器访问Servlet2.  
     
                  4,Servlet2对客户端浏览器做出响应。 
     
           forward()方法原理:  
     
                 1,客户端发送请求,Servlet1做出处理。  
     
                 2,Servlet1调用sendReadirect()方法,将请求转发给Servlet2来处理请求,为客户端服务。   
     
                 3,Servlet2对客户端浏览器做出响应。      
     
          区别:   
     
               1,定位与转发   
     
                        sendReadirect()方法是重新定位到另外一个资源来处理请求,URL会重新定位,让客户端重新访问另外一个资源。    forward()方法是转发到另外一个资源来处理请求。URL不会变化。隐藏了处理对象的变化。   
     
               2,处理请求的资源的范围   
     
                      sendReadirect()方法可以跨WEB应用程序和服务器重新定位资源来处理请求。    forward()方法只能在应用程序内部转发。
      

  2.   

    bc ,我一般使用sendReadirect()跳转到另一个处理方法上进行处理