談到javaweb首先想到的就是servlet,說道servlet就會想到servlet的生命周期
那么servlet到底是什么時候出生,什么時候死亡叻
說道他的生命周期 就繞不過servlet的三個方法init service destroy
當我們將web項目部署到服務器,服務器啟動的時候,這個時候servlet還沒創建,,服務器啟動了 開始對外提供服務,客戶端可以訪問了,
當某一個客戶端第一次訪問時候此servlet時候------》服務器找不到servlet對象-------》這個時候服務器就會創建servlet對象,並且調用init方法,使servlet初始化,獲得他的初始化參數------》init方法調用完成serlvet對象就可以對外提供服務-------》web服務器調用servlet的service方法給客戶端提供服務---》service服務完成servlet繼續存在-------》第二客戶端繼續訪問此servlet--------》服務器繼續尋找servlet對象--------》存在此servlet對象-------》調用此對象的servlet方法提供服務。。。。。。---》不遇到特殊原因知道服務器關閉之前一直存在-------》當web服務器正常關閉的時候,此時調用servlet的destroy方法銷毀,,,
當web服務器異常關閉時可能不會調用servlet的destroy方法,,,,
重點:
1.servlet不是一啟動web服務器就創建對象,而是要客戶端第一次訪問,web服務器先查看自己有沒有這個對象,沒有才會創建,
但是有些servlet比較特殊,Web服務器創建時候創建,這是特殊的servlet
2.當web服務器創建servlet對象時候 就會調用init方法初始化servlet,獲得servlet的初始化參數,
此init 方法,只會在生成對象的時候調用一次,提供服務的時候不調用
3.servlet對外提供服務是調用的他的service方法,調用完成后servlet未被銷毀,還繼續存在於web容器中,等待其他的用戶訪問時候繼續調用他的service方法,所有servlet的service方法是可以被多次調用的
4.只有正常關閉服務器才會調用一次servlet的destroy方法
session生命周期,
session創建:在第一次使用resquest的getSession方法,web服務器會創建一個session
session使用:session在服務端創建完成后,內存會給session分配一定的空間,並且會生成一個臨時cookie返回給用戶,當用戶第二次訪問的時候會帶上這個臨時cookie,當第二次調用resquest的getSession方法時候,由於有此臨時cookie攜帶的sessionid就可以找到session對應的內存空間,返回此session,此后只要用戶訪問時帶上這個臨時cookie就可以獲得第一次創建的session,並訪問對應的內存空間
session的銷毀:
1.默認銷毀:session是有默認時長的,默認情況下,當用戶三十分鍾不和服務器交互數據,session就會被自動銷毀,
2.手動銷毀:當調用session的invalidate方法時候會銷毀此session
3.關閉服務器:內存空間被回收了,自然就不存在session了
