1

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

来自:编程 Jakarta Struts,Chuck Cavaness 第二版

问题:

  1. 作者的意思不是说“请求及其属性不再对服务器可用吗?” 客户端是发起端点。

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

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

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

  5. 在将 HTTP 响应发送回客户端的那一刻,HTTP 请求的生命周期不是已经结束了吗?生命周期不包括客户端对响应的处理?

4

1 回答 1

0

作者的意思不是说“请求及其属性不再对服务器可用吗?” 客户端是发起端点。

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

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

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

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

您混淆了来自 HTTP 请求(GET、POST 等)的HttpServletRequest属性和可以通过HttpServletRequest#getAttribute(String). 您可以通过提供的链接中的函数访问HTTP请求的属性,如字符编码内容类型请求参数,您也可以通过HttpServletRequest界面中的其他函数了解其他HTTP属性。

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

在 HTTP 响应提交并完成之后。请参阅servlet 是如何工作的?实例化、会话变量和多线程

在将 HTTP 响应发送回客户端的那一刻,HTTP 请求的生命周期不是已经结束了吗?生命周期不包括客户端对响应的处理?

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

于 2013-02-19T21:51:17.193 回答