Servlet程序是发布到Web应用程序中运行的,此Web应用程序就称之为Servlet容器,Servlet是在Servlet容器中运行的程序,它在有些情况下可能需要访问Servlet容器或借助Servlet容器访问外部的资源,所以Servlet引擎需要将表示Servlet容器的对象传递给Servlet。另外,在web.xml文件中为某个Servlet设置的友好名称和初始化参数等信息也需要传递给该Servlet。Servlet引擎将代表Servlet容器的对象和Servlet的配置参数信息一并封装到一个称之为ServletConfig的对象中,并在初始化Servlet实例对象时传递给该Servlet。ServletConfig接口则用于定义ServletConfig对象需要对外提供的方法,以便在Servlet程序中可以调用这些方法来获取有关的信息,例如,获取代表Servlet容器的对象,获取在web.xml文件中为Servlet设置的友好名称和初始化参数等等。Servlet引擎装载并创建一个Servlet的实例对象后,接着调用该实例对象的init(ServletConfig config)方法将ServletConfig对象传递给Servlet。Servlet.getServletConfig()方法必须返回init(ServletConfig config)方法传递进来的这个ServletConfig对象的引用。
<servlet> <servlet-name>ConfigTest</servlet-name> <servlet-class>com.lxm.ConfigTest</servlet-class> <init-param> <param-name>初始化参数名称</param-name> <param-value>初始化参数值</param-value> </init-param> ..... //可以配置多个初始化参数信息 </servlet>
在web.xml文件中可以为Servlet设置若干个初始化参数,getInitParameterNames()方法用于返回一个Enumeration集合对象,该对象中包含在web.xml文件中为当前Servlet设置的所有初始化参数的名称。例如:
<servlet> <servlet-name>ConfigTest</servlet-name> <servlet-class>com.lxm.ConfigTest</servlet-class> <init-param> <param-name>firstname</param-name> <param-value>lixiaoming</param-value> </init-param> <init-param> <param-name>lastname</param-name> <param-value>sunchengqiang</param-value> </init-param> </servlet>
java代码如下:
Import java.util.Enumeration; Response.setContentType(“text/html;charset=UTF-8”); PrintWriter out=response.getWriter(); Eunmeration e=getServletConfig().getInitParameterNames(); While(e.hasMoreElements()){ String key=(String )e.nextElement(); String value=getInitParameter(key); out.println(“ ”+ key+” = “+value); } Out.close();
getInitParameter()方法用于返回在web.xml文件中为Servlet所设置的某个名称的初始化参数的值,如果指定名称的初始化参数不存在,则返回值为NULL。
getServletName方法用于返回在Servlet在web.xml文件中的注册名称。对于没有在web.xml文件中注册的Servlet,getServletName方法返回的结果是该Servlet的类名。
在Servlet程序中,每个Web应用程序(Servlet容器)都用一个各自的ServletContext对象来表示,ServletConfig对象中包含了ServletContext对象的引用,getServletContext方法用于返回ServletConfig对象中所包含的ServletContext对象的引用。
response.setContentType("text/html;charset=UTF-8"); PrintWriter out=response.getWriter(); out.println(getServletConfig().getInitParameter("corporation")); out.println(getServletConfig().getServletContext().getRealPath("/")); out.println(getServletName()); out.close();