我正在编写一些简单的代码来将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 回答
toString结果揭示了这样一个事实:ApplicationHttpRequest是一个包装器,它包装了原始的RequestFacade