2013-02-19 46 views
1

一旦服務器完成一個請求並將響應返回給客戶端,該請求及其屬性就不再可用於客戶端,並且可以由JVM。有關HTTP請求生命週期的流行解釋的困惑

來源:由Chuck Cavaness編程Jakarta Struts的,第二版

問題:

  1. 不筆者的意思是,「請求和它的屬性不再可用服務器?」客戶端是始發端點。

  2. 垃圾回收器清理服務器JVM可用的堆內存。瀏覽器(客戶端)不使用堆。

  3. 請求屬性由Web容器集成到HttpServletRequest對象中。

  4. 什麼時候HttpServletRequest和HttpServletResponse對象被垃圾收集?

  5. 當HTTP響應被髮送回客戶端時,HTTP請求的生命週期是不是已經過了?生命週期不包括客戶對響應的做法?

回答

0

不筆者的意思是,「請求和它的屬性不再可用的服務器?」客戶端是始發端點。

作爲Java對象的請求(及其屬性)在服務器中處理,但客戶端是誰發送請求。這就是爲什麼作者可能會提到請求屬於客戶而不是服務器。在處理完請求之後,它沒有任何用處(HTTP概念),但在Java Web服務器中,駐留在服務器中的ServletRequest對象(通常處理爲HttpServletRequest)將不再可用,因此它將被垃圾收集。

垃圾回收器清理服務器JVM可用的堆內存。瀏覽器(客戶端)不使用堆。

在第一個答案的最後部分回答。

請求屬性由Web容器集成到HttpServletRequest對象中。

您混淆從HTTP請求(GET,POST等)的屬性,並且可以通過HttpServletRequest#getAttribute(String)訪問的HttpServletRequest屬性。通過使用提供的鏈接中的功能,您可以訪問HTTP請求屬性(如character encoding,content typerequest parameters),還可以通過使用HttpServletRequest接口中的其他功能來了解其他HTTP屬性。

什麼時候HttpServletRequest和HttpServletResponse對象被垃圾收集?

HTTP響應提交併完成之後。請參考How do servlets work? Instantiation, session variables and multithreading

當HTTP響應被髮送回客戶端時,HTTP請求的生命週期是不是已經過了?生命週期不包括客戶對響應的做法?

一旦響應到達客戶端,由客戶決定如何處理它。請注意,您可以具有:ajax請求,完整的HTTP請求,資源請求(例如對於JS,CSS和圖像),portlet Requests ...