首先:ServletConfig是什么?
ServletConfig就是XML解析器对web.xml配置文件对象化后产生的一个对象,这个对象是每个Servlet对象都有的一个属性。如图:
即,web容器在创建Servlet实例对象时,会自动将Servlet配置的初始化参数(init-param①如图)封装到ServletConfig对象中。Servlet在init()方法中进行初始化,在初始化过程中,将ServletConfig对象传给Servlet对象。因此每一个Servlet对象都独享一个ServletConfig对象来保存它的配置信息。
其次:如何获取ServletConfig对象?
第一种情况:在Servlet初始化方法init()中:
首先我们知道,必须要经过Servlet的初始化函数init(),才能将ServletConfig对象传给Servlet对象,所以,在init方法中(此时还没有执行完init()函数),也就是还没有完成初始化,所以,Servlet对象目前还没有ServletConfig对象这个属性,所以用this.getServletConfig()获取ServletConfig对象根本不管用,编译时不会报错,但是会在执行后报错为NullPointExpection异常。
所以,我们要对Servlet完成初始化,才能使其获得ServletConfig这个属性。如图②,我们调用Servlet父类GenericServlet的init(ServletConfig config)函数,在其中传入参数config,当父类完成初始化,父类和子类的属性中都有了ServletConfig对象,此时便可以通过this.getServletConfig()获取ServletConfig对象。
第二种情况:在其他方法中获取ServletConfig:
如在doGet方法中,直接获取即可:
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletConfig servletConfig = getServletConfig(); // 获取ServletConfig对象
}
最后:我们来看看ServletConfig对象能获取哪些信息:
String getServletName() 获取当前Servlet在web.xml中配置的名字String getInitParameter(String name) 获取当前Servlet指定名称的初始化参数的值Enumeration getInitParameterNames() 获取当前Servlet所有初始化参数的名字组成的枚举ServletContext getServletContext() 获取获取代表当前web应用的ServletContext对象
另外这个ServletContext对象作用也很大: