servlet的生命週期是servlet相關知識中很重要的一部分。web
servlet從被加載到銷燬經歷了多個階段,其中須要咱們十分了解每一個階段的意義做用,才能更好地編寫相關的servlet程序。數據庫
下圖很好的說明了servlet的各個階段函數
init() 什麼時候調用:servlet實例建立後,並在servlet能爲客戶請求提供service服務前,容器要對servlet調用init。 做用: 使你在servlet處理客戶請求以前有機會對其進行初始化 是否覆蓋: 有可能。若是由初始化代碼(如獲得一個數據庫鏈接),就要調用init()方法線程
service() 什麼時候調用: 第一個客戶請求到來時,容器會開始一個新線程,或者從線程池分配一個線程,並調用servlet的service()方法。 做用: 這個方法會查看請求,肯定http方法 是否覆蓋: 不太可能對象
doGet或者doPost 什麼時候調用: service方法根據請求的http方法調用doGet或者doPost。 做用: 要在這裏寫代碼,你的web須要實現的業務邏輯等 是否覆蓋: 必定要覆蓋其中之一。生命週期
** 每一個請求在一個單獨的線程裏運行。容器不關心是誰的請求,每一個到來的請求意味着一個新的線程。ip