关于HTTP请求生命周期的流行解释的困惑

时间:2013-02-19 21:04:10

标签: jsp http servlets

  

一旦服务器完成请求并且响应返回给客户端,请求及其属性就不再可供客户端使用,并且可以由JVM进行垃圾收集。

来自:编辑雅加达Struts,第二版由Chuck Cavaness

问题:

  1. 作者不是这样说的,“服务器不再提供请求及其属性吗?”客户端是始发端点。

  2. 垃圾收集器清理服务器JVM可用的堆内存。浏览器(客户端)不使用堆。

  3. Web容器将请求属性集成到HttpServletRequest对象中。

  4. 何时HttpServletRequest和HttpServletResponse对象被垃圾收集?

  5. HTTP响应被发送回客户端时,HTTP请求的生命周期是不是已经过了?生命周期不包括客户端对响应的处理方式?

1 个答案:

答案 0 :(得分:0)

  

作者不是这样说的,“请求及其属性不再可用于服务器?”客户端是始发端点。

作为Java对象的请求(及其属性)在服务器中处理,但客户端是发送请求的人。这就是为什么作者可能会提到请求属于客户端而不是服务器。在处理请求之后,它没有用处,因此被删除(HTTP概念),但在Java Web Server中,驻留在服务器中的ServletRequest对象(通常作为HttpServletRequest处理)将不再是可用,所以它将被垃圾收集。

  

垃圾收集器清理服务器JVM可用的堆内存。浏览器(客户端)不使用堆。

在第一个答案的最后部分回答。

  

请求属性由Web容器集成到HttpServletRequest对象中。

您混淆了HTTP请求(GET,POST等)中的属性以及可以通过HttpServletRequest#getAttribute(String)访问的HttpServletRequest属性。您可以使用提供的链接中的函数访问HTTP请求属性,如character encodingcontent typerequest parameters,您还可以使用{中的其他函数知道其他HTTP属性{1}}界面。

  

何时HttpServletRequest和HttpServletResponse对象被垃圾收集?

提交并完成HTTP响应后。请参阅How do servlets work? Instantiation, session variables and multithreading

  

当HTTP响应被发送回客户端时,HTTP请求的生命周期是否结束?生命周期不包括客户端对响应做了什么?

一旦响应到达客户端,由客户决定如何处理它。请注意,您可以拥有:ajax请求,完整HTTP请求,资源请求(例如,JS,CSS和图像),portlet Requests ...