Servlet的init方法

init方法是在Servlet实例化之后执行的,并且只执行一次。
.先说init(ServletConfig)中参数ServletConfig,代表的是配置信息。即在web.xml中配置的信息,比如:
   
      RDSDispatchServlet
RDSDispatchServlet
      flex.rds.server.servlet.FrontEndServlet
useAppserverSecurity
true
      
      10
   
  在程序中可以用this.getServletConfig()方法得到ServletConfig的实例,然后用ServletConfig的相应方法可以得到ServletConfig的名字(getServletName)和配置参数的名字(getInitParameter("name"))或者名字枚举(getInitParameterNames()),并且通过参数名字得到相应的参数值。具体方法参见API。

二.再说说init方法,从源码中我们不难发现:Servlet接口里面只有init(ServletConfig),这是供tomcat调用的。GenericServlet类里面有成员变量ServletConfig,init(ServletConfig)方法和init()方法:

                        privatetransient ServletConfig config;

                        publicvoid init(ServletConfig config) throws ServletException{
                            this.config=config;
                            this.init();
                        }

                        publicvoid init() throws ServletException{

                        }
现 在一切都很明了了,当容器(tomcat)帮忙调用init(ServletConfigconfig)并且给传过来一个参数config,这个方法把参数对象的引用指向类的成员变量this.config,并且调用类的this.init()方法。如果我们在写Servlet类时只要重写init(ServletConfigconfig)就可以了,但是init()不就成了多余的了吗?实际上init()方法是为了防止程序员在写Servlet类重写init(ServletConfig config)时忘记写super.init(ServletConfigconfig),这样就容易造成出现空指针异常。而这就要求我们最好不要重写init(ServletConfigconfig)。
转载自:http://blog.163.com/weizonghua_2006/blog/static/1310606562011427911885/

你可能感兴趣的:(学习JAVA)