GenericServlet和HttpServlet的两个init()方法
在GenericServlet类和 HttpServlet(继承前者)类中,一个是public void init(ServletConfig config),另一个是 public void init()。他们有如下的关系:
init(ServletConfig config)方法由tomcat自动调用,它读取web工程下的web.xml,将读取的信息打包传给此参数,此方法的参数同时将接收的信息传递给GenericServlet类中的成员变量config,同时调用init()。以后程序员想重写init方法可以选择init(ServletConfig config)或者init(),但是选择init(ServletConfig config)势必会覆盖此方法已实现的内容,没有为config变量赋值,此后若是调用getServletConfig()方法返回config时会产生空指针异常的,所以想重写init(ServletConfig config)方法,必须在方法体中第一句写上 super.init(config),为了防止程序员忘记重写super.init(config)方法sun公司自动为用户生成一个public void init()的方法。GenericServlet具体的定义如下所示:
GenericServlet
{
ServletConfig config;
public void init()
{ } //此方法什么也没做,可以说是为编程人员预留的接口
public void init(ServletConfig config)
{
this.config=config;
this.init();
}
getServletConfig()
{
return config;
}
}