解决方案 »

  1.   

    String tmpltPage="/com.attilax/dsm/tmplt_edit.jsp";
    try {
    request.getRequestDispatcher(tmpltPage).forward(request, response);

    可以看出来,,,第一个jsp转发 给第二的页面的时候儿,,不个request, response 都传递过去拉...所以,,,是共享同一个request对象
      

  2.   

    以上说的是默认情形哈是是共享同一个request对象  ,,,,
    也可以设置另一个request对象进去的...这个情形下就不是共享同一个request对象了..
      

  3.   

    顶一下再说的形象点,就是 你的客户端 只发了一个request,只是在服务器内部 "转发",最后再发个response
      

  4.   


    我用的是tomcat服务器,创建了两个jsp文件,第1个jsp写了如下内容
    <%
    System.out.println(request);
    request.getRequestDispatcher("index2.jsp").forward(request, response);
    %>
    第2个jsp写了如下内容
    <%
    System.out.println(request);
    %>
    控制台输出的内容是
    org.apache.catalina.connector.RequestFacade@54a9387
    org.apache.catalina.core.ApplicationHttpRequest@a6a435f
    如果两个页面共享同一个request对象,为什么控制台输出的内容不同?
      

  5.   


    这个request对象实际上是个类的实例,这个类它实现了接口javax.servlet.ServletRequest..不同的web服务器,request对象是属于不同的类。forward的方法定义如下::
    public abstract interface javax.servlet.RequestDispatcher {
      public abstract void forward(javax.servlet.ServletRequest arg0, javax.servlet.ServletResponse arg1)  #--------
    org.apache.catalina.connector.RequestFacade@54a9387
    org.apache.catalina.core.ApplicationHttpRequest@a6a435f
    这个控制台输出的确实不是同一个对象..因为地址不同...
    准确的说是同一类对象,这俩个对象都是同样的ServletRequest接口实现,所以可以理解为可以互相转换的.....
    俩个jsp的处理过程不是紧密地连接的,中间有其他的过程代码,所以有有些转换..
     是不是同一个对象,,不同的web服务器处理机制不同,tomcat的不是同一个对象,而resin 带struts2框架 的输出 ,是同一个对象....
     所以,通常也为了简单,,可以说是同一个对象#-----tomcat的 RequestFacade  , ApplicationHttpRequest都是实现 ServletRequest 接口的...public class org.apache.catalina.connector.RequestFacade implements javax.servlet.http.HttpServletRequest 
    >>>public abstract interface javax.servlet.http.HttpServletRequest extends javax.servlet.ServletRequest class org.apache.catalina.core.ApplicationHttpRequest extends javax.servlet.http.HttpServletRequestWrapper 
    >>>>>>>>>public class javax.servlet.http.HttpServletRequestWrapper extends javax.servlet.ServletRequestWrapper implements javax.servlet.http.HttpServletRequest 
    >>>public abstract interface javax.servlet.http.HttpServletRequest extends javax.servlet.ServletRequest 
    #-----resin 的输出 
    com.caucho.server.http.HttpServletRequestImpl  addr:9381576
    com.caucho.server.webapp.ForwardRequest  addr:17061149#------resin 的request继承体系public final class com.caucho.server.http.HttpServletRequestImpl extends com.caucho.server.http.AbstractCauchoRequest implements com.caucho.server.http.CauchoRequest, com.caucho.websocket.WebSocketServletRequest
    >>>public abstract interface com.caucho.server.http.CauchoRequest extends javax.servlet.http.HttpServletRequest
    >>>public abstract interface javax.servlet.http.HttpServletRequest extends javax.servlet.ServletRequest 
    public class com.caucho.server.webapp.ForwardRequest extends com.caucho.server.http.CauchoRequestWrapper
    >>>>>public class com.caucho.server.http.CauchoRequestWrapper extends com.caucho.server.http.AbstractCauchoRequest 
    >>>public abstract class com.caucho.server.http.AbstractCauchoRequest implements com.caucho.server.http.CauchoRequest
    >>>public abstract interface com.caucho.server.http.CauchoRequest extends javax.servlet.http.HttpServletRequest
    >>>public abstract interface javax.servlet.http.HttpServletRequest extends javax.servlet.ServletRequest  #----resin 带struts2框架 的输出,是同一个对象.. 
     org.apache.struts2.dispatcher.StrutsRequestWrapper@1bb4f52
    org.apache.struts2.dispatcher.StrutsRequestWrapper@1bb4f52
    >>>>public class org.apache.struts2.dispatcher.StrutsRequestWrapper extends javax.servlet.http.HttpServletRequestWrapper
    >>>>public class javax.servlet.http.HttpServletRequestWrapper extends javax.servlet.ServletRequestWrapper implements javax.servlet.http.HttpServletRequest
    >>>public abstract interface javax.servlet.http.HttpServletRequest extends javax.servlet.ServletRequest