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,这是个非常重要的对象,将在下一节中详细介绍。
创建一个servlet:
public class LifeServletimplements Servlet {
private ServletConfigconfig;
public LifeServlet(){
System.out.println("无参构造方法执行");
}
@Override
public void init(ServletConfig servletConfig)throws ServletException {
System.out.println("init");
System.out.println("init方法中ServletConfig:" + servletConfig);
this.config = servletConfig;
}
@Override
public ServletConfiggetServletConfig() {
return this.config;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse)throws ServletException, IOException {
System.out.println("service");
String userName =config.getInitParameter("userName");
System.out.println("userName=" + userName);
Enumeration 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());
}
@Override
public StringgetServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("destroy");
}
}
ServletConfig的特点
每一个servlet都对应一个ServletConfig用于封装各自的配置信息,即有几个servlet就会产生几个ServletConfig对象。
网友评论