在servlet中的配置文件(web.xml)中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数,web容器在创建servlet对象时,会把这些参数封装到servletconfig对象中,在调用init方法时,会将servletconfig对象传递给servlet对象,所以我们可以通过servletconfig对象获得当前servlet对象初始化参数。但是我们可以在servlet类的doGet()方法中,直接使用this.getServletConfig()获得当前的servletconfig对象(不需要重载servlet类的init方法,得到servletconfig对象,因为这在父类中已经完成了),进而使用servletconfig.getInitParameter()方法,获得初始化参数的值(也可以直接通过this.getInitParameter()方法获得参数的值,不同通过servletConfig对象)。
在实际开发中,有一些不能在程序中确定的数据就要在配置文件中,例如,servlet采用的码表,链接的数据库,哪个配置文件。
package cn.itcast;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Enumeration;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletDemo4 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletConfig sc = this.getServletConfig();
String value = sc.getInitParameter("name");
response.getWriter().print(value);
Enumeration e = this.getInitParameterNames();
while(e.hasMoreElements())
{
String p = (String) e.nextElement();
value = this.getServletConfig().getInitParameter(p);
response.getWriter().print(p+"="+value);
}
}
throws ServletException, IOException {
ServletConfig sc = this.getServletConfig();
String value = sc.getInitParameter("name");
response.getWriter().print(value);
Enumeration e = this.getInitParameterNames();
while(e.hasMoreElements())
{
String p = (String) e.nextElement();
value = this.getServletConfig().getInitParameter(p);
response.getWriter().print(p+"="+value);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
throws ServletException, IOException {
doGet(request, response);
}
}