Servlet Source Analysis (3)
3.GenericServlet
3.1上一节说到,GenericServlet实现了ServletConfig接口。ServletConfig是容器启动的配置类。可以获取到配置在web.xml文件中的一些信息。由容器进行实例化。
看一下ServletConfig里面的方法。
getInitParameter(String); 通过制定的名字获取启动的参数
getInitParameterNames(); 获取所有的启动参数,返回值是Enumeration类型
getServletContext(); 获取ServletConfig实例
getServletName(); Servlet的名字
假如在web.xml文件中如下配置.
public void init(ServletConfig config) throws ServletException {this.config = config;this.init(); } public void init() throws ServletException { }
假如我们想在服务器启动的时候,添加自己的一些东西,比如配置数据源。如果不写在配置文件中,那么我们可以选择写在init()方法里。
如果我们覆写第一个有参方法时,需要在子类中显示调用super.init(config)方法,否则服务器在启动的时候会报NullPointerException异常,因为此时的ServletConfig为空。所以,通常我们会选择覆写无参的init()方法。这里,个人感觉,不知Various当初的设计用意何在,有参的init()方法私有化,也许会更好一些。