【发布时间】:2014-03-06 15:27:52
【问题描述】:
我正在编写一些简单的代码来将 HTTP 请求从一个 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());
}
据我所知,“转发”方法只是请求 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
【问题讨论】:
-
不要使用
<code>。将所有行缩进 4 个空格,或者通过选择代码并按下工具栏中的代码按钮自动缩进:{}。 -
感谢您的提示!我从 toString 结果中看到了原因。 ApplicationHttpRequest 是一个包装器,它包装了原来的 RequestFacade