回到顶部
您的当前位置: 编程语言> JAVA> JAVA基础> WEB开发
Servlet技术-ServletConfig接口
2014-04-21 10:32:13
标签: 原创 Servlet 开发 ServletConfig接口

    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对象的引用。

在web.xml中配置的Servlet初始化参数
<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>
getInitParameterNames方法

    在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(key)方法

    getInitParameter()方法用于返回在web.xml文件中为Servlet所设置的某个名称的初始化参数的值,如果指定名称的初始化参数不存在,则返回值为NULL。

getServletName()方法

    getServletName方法用于返回在Servlet在web.xml文件中的注册名称。对于没有在web.xml文件中注册的Servlet,getServletName方法返回的结果是该Servlet的类名。

getServletContext()方法

    在Servlet程序中,每个Web应用程序(Servlet容器)都用一个各自的ServletContext对象来表示,ServletConfig对象中包含了ServletContext对象的引用,getServletContext方法用于返回ServletConfig对象中所包含的ServletContext对象的引用。

ServletConfig的应用举例
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();