一、在哪里使用过?
在Servlet的初始化的时候,会用到这个接口,如下:
public class HelloServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("HelloWorld收到了init" + servletConfig.getServletName());
}
}
二、ServletConfig接口
ServletConfig:代表当前Servlet在web.xml中的配置信息
ServletConfig是个接口,一共五个方法,分别如下:
public interface ServletConfig {
//获取当前Servlet在web.xml中配置的名字
String getServletName();
//获取代表当前web应用的ServletContext对象
ServletContext getServletContext();
//获取当前Servlet指定名称的初始化参数的值
String getInitParameter(String var1);
//获取当前Servlet所有初始化参数的名字组成的枚举
Enumeration<String> getInitParameterNames();
}
三、ServletConfig接口方法详解
getServletName()(这个平时一般用的不多)
这个方法不用多说,就是获取web.xml配置中的这个servlet的名字。
getServletContext()
获取代表当前web应用的ServletContext对象。
这个相对其他几个,较难理解。得先理解什么是ServletContext ?**ServletContext 就代表当前web应用(非常重要)**这个单独写篇文章吧。
getInitParameter()
获取当前Servlet指定名称的初始化参数的值。
这个怎么理解呢?什么叫做初始化参数,在Servlet的配置文件中,可以使用一个或多个标签为servlet配置一些初始化参数。如下:
<servlet>
<servlet-name>ServletConfigTest</servlet-name>
<servlet-class>com.vae.servlet.ServletConfigTest</servlet-class>
<init-param>
<param-name>name1</param-name>
<param-value>value1</param-value>
</init-param>
<init-param>
<param-name>encode</param-name>
<param-value>utf-8</param-value>
</init-param>
</servlet>
像这样,就可以配置很多个初始化参数,随便什么名称都可以,为啥,这个初始化参数是配置来你自己用的,不是给servlet接口处理的,是你在程序中获取到他们,进行处理,所以叫啥都可以,看你。
那么怎么使用呢?对,就用到这个ServletConfig接口。
当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以得到当前servlet的初始化参数信息。
getInitParameterNames()
获取当前Servlet所有初始化参数的名字组成的枚举。
一般这样使用,
// --获取当前Servlet中配置的初始化参数(全部获取)经常用到
Enumeration enumration = config.getInitParameterNames();
while(enumration.hasMoreElements()){
String name = (String) enumration.nextElement();
String value = config.getInitParameter(name);
System.out.println(name+":"+value);
}
这个可以获得所有初始化参数的名称。