2011-07-07 42 views
1

當我們在web.xml中提到任何servlet爲loadOnStartup時,肯定會調用它的init方法。只是想確認servicedestroy方法是否也被調用?如果不是,當他們被叫?servlet生命週期while loadOnStartup

另一個問題是因爲它提到每個方法只有一次調用init。這是否意味着servlet首次獲取請求時,將調用init方法,然後調用service

但是破壞不會被調用。當第二個請求它會再次調用服務方法,但不是init方法。這種理解是否正確?但是當容器決定調用銷燬方法?

回答

2
  • loadOnStartup意思是servlet將被載入(和容器啓動時調用其init(..)方法。否則,你懷疑,它會在第一請求到達
  • 容器有每個servlet只有一個實例加載當他們創造,他們稱之爲init(..)當上下文被卸載(例如 - 集裝箱已停止),destroy()
1

loadOnStartup給出了哪些其他線程之前線程負載優先級的Servlet CONTA。 iner會加載servlet並調用init方法。如果web.xml中沒有提到loadOnStartup,則在有請求調用需要servlet時,serlvet將被實例化。

servlet的初始化只發生一次。一旦它被初始化,servlet容器就會保留它。

對於請求處理,servlet容器調用serlvet的service()方法,當servlet容器關閉時,它將調用所有servlet的方法並從容器中移除servlet。

欲瞭解更多信息查看某些解釋here,或從Java EE

0

當我們在web.xml中啓用load-on-start-up enable時,我們的servlet程序將在服務器啓動期間實例化。意味着每個請求的響應時間都相同。