官术网_书友最值得收藏!

2.1.8 Servlet程序的生命周期

運行“傳統”Java程序時,Java虛擬機將Java類的字節碼文件加載到內存,然后調用構造方法實例化一個Java對象,接著運行對象的main()方法。main()方法運行結束后,內存中的對象被清除。下次再運行該Java程序時,重復上述步驟。傳統Java程序的生命周期如圖2-16所示。

由于許多瀏覽器用戶可以同時運行一個Servlet程序,如果Servlet程序也和傳統的Java程序一樣,每次運行時先將字節碼文件加載到內存、再創建對象,效率將大打折扣。Servlet程序的生命周期如圖2-17所示。

圖2-16 傳統Java程序的生命周期

圖2-17 Servlet程序的生命周期

在瀏覽器用戶1訪問Servlet程序時,Servlet字節碼文件將被加載到Tomcat服務器內存,Tomcat先調用構造方法實例化Servlet對象,然后調用init()方法初始化該Servlet對象,接著調用doGet()或者doPost()方法,服務第一個瀏覽器用戶。

其他瀏覽器用戶再次訪問該Servlet程序時,Tomcat將直接使用內存中的Servlet對象,服務其他瀏覽器用戶。

停止Tomcat服務后,內存中的Servlet對象被銷毀。

以ABCServlet為例,Servlet程序的生命周期可以簡要描述為:

ABCServlet第一次接收到GET請求: ABCServlet()→init()→doGet()

其他GET請求:→doGet()→doGet())→...→doGet()

停止Tomcat服務:→destroy()

說明

為了提高開發效率,Eclipse提供了一種機制。Tomcat啟動后,Eclipse能夠自動判斷Servlet源代碼是否更改。若更改,Eclipse會自動編譯Servlet源代碼,生成Servlet字節碼文件,并自動重啟Tomcat。

主站蜘蛛池模板: 荣昌县| 常山县| 和田市| 名山县| 唐海县| 无棣县| 蓬安县| 绿春县| 宁强县| 新晃| 含山县| 桃江县| 泸西县| 宜章县| 清丰县| 江阴市| 长春市| 峨边| 汝南县| 金华市| 敦化市| 三门县| 甘德县| 广东省| 桐庐县| 宁化县| 五峰| 炎陵县| 凌源市| 柘荣县| 精河县| 玉环县| 黄石市| 康乐县| 东至县| 泸溪县| 麟游县| 通化市| 株洲市| 綦江县| 承德县|