2016-04-13 119 views
2

在Servlet中,我通過web.xml的init param標籤發送初始化數據。爲什麼我需要重寫init方法來讀取參數,我可以通過我的doGet方法中的getServletConfig().getInitParameter("someName")來檢索值!需要覆蓋Servlet init方法

此外,與相同配置,我可以用這個方法訪問初始化參數:request.getServletContext().getInitParameter("xyz");

爲什麼我會需要重寫init方法,並確保超配置對象設置,以及等等等等?

+0

這只是他們設計它的方式。事後看來,除非他們計劃使用'ServletConfig'包裝器或類似的東西,否則似乎沒有必要。 – EJP

回答

0

我認爲它可以用於init資源或字段servlet,因爲servlet init只在servlet被加載和卸載時發生(這很少發生)。它會從代碼參數中爲代碼添加一些獨立性,如果您只覆蓋一次init-method init servlet,而不是每次有人向您的servlet發送請求時都可以更改您的參數

0

你覆蓋init方法是不適合初始化參數,這是由它調用你的init方法超類中的方法的init(ServletConfig類配置)來完成的設置,由容器調用 -

public void init(ServletConfig config) throws ServletException { 
    this.config = config; 
    this.init(); 
} 

有調用超類的init方法也沒有意義,因爲它是空的 -

public void init() throws ServletException { 

} 

如果您希望在首次請求之前執行一些其他必需的代碼,那麼您將覆蓋init方法。例如 - 創建數據庫連接,設置一些日誌記錄細節等。如果這不適用於您的代碼,您可以忽略它。