本節書摘來自異步社群《servlet、jsp和spring mvc初學指南》一書中的第1章,第1.6節,作者:【加】budi kurniawan(克尼亞萬) , 【美】paul deck著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視
當servlet容器初始化servlet時,servlet容器會給servlet的init方法傳入一個servletconfig。servletconfig封裝可以通過@webservlet或者部署描述符傳給servlet的配置資訊。這樣傳入的每一條資訊就叫一個初始參數。一個初始參數有key和value兩個元件。
為了從servlet内部擷取到初始參數的值,要在servlet容器傳給servlet的init方法的servletconfig中調用getinitparameter方法。getinitparameter的方法簽名如下:
<code>java.lang.string getinitparameter(java.lang.string name)</code>
此外,getinitparameternames方法則是傳回所有初始參數名稱的一個enumeration:
<code>java.util.enumeration<java.lang.string> getinitparameternames()</code>
例如,為了擷取contactname參數值,要使用下面的方法簽名:
<code>string contactname = servletconfig.getinitparameter("contactname");</code>
除getinitparameter和getinitparameternames外,servletconfig還提供了另一個很有用的方法:getservletcontext。利用這個方法可以從servlet内部擷取servletcontext。關于這個對象的深入探讨,請查閱本章1.7節。
下面舉一個servletconfig的範例,在app01a中添加一個名為servletconfigdemoservlet的servlet。這個新的servlet如清單1.7所示。
清單1.2 servletconfigdemoservlet類
如清單1.2所示,在@webservlet的initparams屬性中,給servlet傳入了兩個初始參數(admin和email):
利用下面這個url,可以調用servletconfigdemoservlet:
<code>http://localhost:8080/app01a/servletconfigdemo</code>
其結果類似于圖1.4。
圖1.4 servletconfigdemoservlet效果展示
另一種方法是,在部署描述符中傳入初始參數。在這裡使用部署描述符,比使用@webservlet更容易,因為部署描述符是一個文本檔案,不需要重新編譯servlet類,就可以對它進行編輯。
部署描述符将在本章後續“使用部署描述符”小節以及第13章中詳細講解。