天天看點

《Servlet、JSP和Spring MVC初學指南》——1.6 ServletConfig

本節書摘來自異步社群《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&lt;java.lang.string&gt; 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。

《Servlet、JSP和Spring MVC初學指南》——1.6 ServletConfig

圖1.4 servletconfigdemoservlet效果展示

另一種方法是,在部署描述符中傳入初始參數。在這裡使用部署描述符,比使用@webservlet更容易,因為部署描述符是一個文本檔案,不需要重新編譯servlet類,就可以對它進行編輯。

部署描述符将在本章後續“使用部署描述符”小節以及第13章中詳細講解。