2008-09-27 81 views
7

爲什麼我們需要servlet中的init()方法?我們不能使用構造函數來初始化嗎?Servlet構造函數和init()方法

+0

請參見[我對類似問題的回答](http://stackoverflow.com/questions/1276082/constructor-in-servlet/2659597#2659597)。 – gawi 2010-04-17 19:07:55

回答

18

因爲Servlet是一個接口,而不是抽象類。構造函數參數不能在接口上指定,所以需要在普通方法簽名上指定ServletContext。

這允許應用程序服務器知道如何正確初始化任何Servlet實現。

另一種解決方案是在編譯時需要但不強制使用ServletContext的構造函數。應用程序服務器將通過反射調用構造函數。但是,Servlet規範的設計者沒有選擇這個路徑。

+1

+1真的很有用:) – 0decimal0 2013-07-25 04:21:03