當web應用啟動的時候,we b.xml文件首先被裝載,(這里面包含了整個應用的servlet配置信息,以及每個servlet的初始化信息)。同時創(chuàng)建應用的servletContext對象。
servlet的初始化階段:
一旦一個servlet進入初始化階段,這是需要客戶端首次請求訪問或者在web.xml文件中的<load-on-startup>元素中設置了數(shù)字(即在應用啟動的時候),便開始一系列初始化過程。
1.容器加載servlet.class文件到內(nèi)存中。
2..class文件裝載到內(nèi)存之后,必然可以獲取該servlet的配置信息(位于web.xml文件中的),進而封裝稱為一個servletConfig對象,此時的servletConfig對象與servlet Context對象關聯(lián)。
3.接下來是創(chuàng)建servlet對象。也就是實例化一個servlet對象。
4.servlet容器調(diào)用servlet對象的init(servletConfig)方法,這使得該對象與servletConfig對象關聯(lián)。
經(jīng)過以上的步驟那么,servlet對象與servlet Config對象關聯(lián),servletConfig對象又與servletContext對象關聯(lián),導致servlet與servlet Context對象關聯(lián)。那么也就是說在創(chuàng)建了servlet對象之后,servlet對象只要通過getServletContext()方法就能獲取到當前應用的servlet Context對象。
運行時階段:
就是響應客戶端請求的一系列過程,通過HttpServletRequest獲取請求信息,再通過HttpServletResponse對象生成響應結(jié)果。當響應結(jié)束之后,那么容器會銷毀request/response對象。
銷毀階段:(銷毀servletContext對象)
web應用被終止的時候,Servlet容器會先調(diào)用web應用中所有servlet對象的destroy()方法,然后再銷毀servlet對象。此外容器還會銷毀與servlet對象關聯(lián)的servlet Config對象。
待續(xù)~~~~~~~