ServletConfig接口简介
在 Servlet 接口的 init()方法中有一个参数 ServletConfig,这个参数类型是个接口,里面是一些 在 web.xml 中对当前 Servlet类的配置信息。Servlet 规范将Servlet 的配置信息全部封装到了 ServletConfig 接口对象中。在tomcat调用 init()方法时,首先会将 web.xml 中当前 Servlet 类的配置信息封装为一个对象。这个对象的类型实现了 ServletConfig 接口, Web 容器会将这个对象传递给init()方法中的 ServletConfig 参数。
ServletConfig中的方法
- getInitParameter(): 获取指定名称的初始化参数值。例如从下面的servlet中调用
getInitParameter(“userName”);方法会返回字符串"monkey1024"。 - getInitParameterNames():获取当前 Servlet 所有的初始化参数名称。其返回值为枚举类型
Enumeration。 - getServletName():获取当前 Servlet 的中指定的 Servlet名称。如下面中的 ServletName
为"configServlet"。 - getServletContext():获取到当前 Servlet 的上下文对象
ServletContext,这是个非常重要的对象,将在下一节中详细介绍。
示例:
在配置web.xml时,可以为servlet指定多个初始化参数:
<servlet>
<servlet-name>configServlet01</servlet-name>
<servlet-class>com.monkey1024.servlet.ConfigTest01</servlet-class>
<init-param>
<param-name>userName</param-name>
<param-value>monkey1024</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123456</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>configServlet01</servlet-name>
<url-pattern>/config01</url-pattern>
</servlet-mapping>
创建一个servlet:
package com.monkey1024.servlet;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* ServletConfig接口
*
*/
public class ConfigTest01 implements Servlet {
private ServletConfig config;
@Override
public void destroy() {
}
@Override
public ServletConfig getServletConfig() {
return this.config;
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("init方法中ServletConfig:" + servletConfig);
this.config = servletConfig;
}
@Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
String userName = config.getInitParameter("userName");
System.out.println("userName=" + userName);
Enumeration<String> param = config.getInitParameterNames();
while(param.hasMoreElements()){
String name = param.nextElement();
String value = config.getInitParameter(name);
System.out.println(name + "=" + value);
}
System.out.println("ServletName=" + config.getServletName());
}
}
ServletConfig的特点
每一个servlet都对应一个ServletConfig用于封装各自的配置信息,即有几个servlet就会产生几个ServletConfig对象。