[java]HttpServlet對象的生命周期


1、客戶發出請求—>Web 服務器轉發到Web容器Tomcat;

  2、Tomcat主線程對轉發來用戶的請求做出響應創建兩個對象:HttpServletRequest和HttpServletResponse;

  3、從請求中的URL中找到正確Servlet,Tomcat為其創建或者分配一個線程,同時把2創建的兩個對象傳遞給該線程;

  4、Tomcat調用Servlet的service()方法,根據請求參數的不同調用doGet()或者doPost()方法;

  5、假設是HTTP GET請求,doGet()方法生成靜態頁面,並組合到響應對象里;

  6、Servlet線程結束,Tomcat將響應對象轉換為HTTP響應發回給客戶,同時刪除請求和響應對象。

  創建Servlet對象的時機

  1、Servlet容器啟動時:讀取web.xml配置文件中的信息,構造指定的Servlet對象,創建ServletConfig對象,同時將ServletConfig對象作為參數來調用Servlet對象的init方法。

  2、在Servlet容器啟動后:客戶首次向Servlet發出請求,Servlet容器會判斷內存中是否存在指定的Servlet對象,如果沒有則創建它,然后根據客戶的請求創建HttpRequest、HttpResponse對象,從而調用Servlet對象的service方法。

  3、Servlet的類文件被更新后,重新創建Servlet: Servlet容器在啟動時自動創建Servlet,這是由在web.xml文件中為Servlet設置的屬性決定的。從中我們也能看到同一個類型的Servlet對象在Servlet容器中以單例的形式存在。

  也就是說,對於每個servlet,在一個服務器里只構造一次,然后調用init()函數一次,之后這個對象就被用來處理后面的請求。在服務器里每個servlet僅有一個對象,然后在不同的線程里調用service()函數,處理請求。(注:那么是不是service()方法里或者doGet/doPost方法里要注意並發訪問呢?),一般不要在servlet里面放置成員變量。

  轉自:http://www.cnblogs.com/gaojing/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM