《Servlet和JSP学习指南》一1.6 ServletConfig

1.6 ServletConfig

在Servlet容器初始化Servlet时,Servlet容器将ServletConfig传给Servlet的init方法。ServletConfig封装可以通过@WebServlet或者部署描述符传给一个Servlet的配置信息。以这种方式传递的每一条信息都称作初始参数。初始参数有两个组成部分:键和值。
为了从一个Servlet内部获取某个初始参数的值,应该在由Servlet容器传给Servlet的init方法的ServletConfig中调用getInitParameter方法。getInitParameter方法的签名如下:
《Servlet和JSP学习指南》一1.6 ServletConfig

此外,getInitParameterNames方法则是返回所有初始参数名称的一个Enumeration:
《Servlet和JSP学习指南》一1.6 ServletConfig

例如,要获取contactName参数值,利用这个:
《Servlet和JSP学习指南》一1.6 ServletConfig

除了getInitParameter和getInitParameterNames之外,ServletConfig还提供了另一个很有用的方法:getServletContext。可以利用这个方法从Servlet内部获取ServletContext。关于这个对象的讨论,参见1.7节。
举个ServletConfig的例子。在app01a中添加一个ServletConfigDemoServlet,这个新的Servlet如代码清单1-2所示。
《Servlet和JSP学习指南》一1.6 ServletConfig
《Servlet和JSP学习指南》一1.6 ServletConfig
《Servlet和JSP学习指南》一1.6 ServletConfig

如代码清单1-2所示,在@WebServlet的initParams属性中给Servlet传递了两个参数(admin和email):
《Servlet和JSP学习指南》一1.6 ServletConfig

可以利用下面这个URL调用ServletConfigDemoServlet:

其结果应该如图1-4所示。

《Servlet和JSP学习指南》一1.6 ServletConfig

还可以在部署描述符中传递初始参数。利用部署描述符来完成这项工作,比用@WebServlet更容易些,因为部署描述符是一个文本文件,不需要重新编译Servlet类就可以进行编辑。
关于部署描述符的讨论,可查看1.11节,以及16.2节。