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