首页 文章

为什么HttpServletRequest对象在从一个servlet转发到另一个servlet时会发生变化?

提问于
浏览
1

我正在编写一些简单的代码来将HTTP请求从一个servlet转发到另一个servlet:

来自Servlet1:

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    ...
    System.out.println("In Servlet1:");
    System.out.println("request: " + request.hashCode() + ", " + request.toString());
    request.getRequestDispatcher("/servlet/Servlet2").forward(request, response);       
}

从Servlet2:

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    ...
    System.out.println("In Servlet2:");
    System.out.println("request: " + request.hashCode() + ", " + request.toString());               
}

据我所知,“forward”方法只是请求Web服务器将相同的HTTP请求发送到另一个servlet . 所以Servlet1和Servlet2中的2个请求对象应该是相同的 . 但是,我得到了以下结果:

In Servelt1: 
request: 2106487657, org.apache.catalina.connector.RequestFacade@7d8e7369
In Servlet2:
request: 887057147, org.apache.catalina.core.ApplicationHttpRequest@34df6afb

似乎请求对象发生了变化?为什么?

我正在使用Tomcat 7.0.50中的servlet-api

1 回答

  • 0

    toString结果揭示了这样一个事实:ApplicationHttpRequest是一个包装器,它包装了原始的RequestFacade

相关问题