在第12.3节中,我们是通过实现Servlet接口来编写的Servlet类,这需要实现Servlet接口中定义的5个方法。为了简化Servlet的编写,在javax.servlet包中提供了一个抽象的类GenericServlet,它给出了除service()方法外的其他4个方法的简单实现。GenericServlet类定义了一个通用的、不依赖于具体协议的Servlet,它实现了Servlet接口和ServletConfig接口。
public abstract class GenericServlet extends java.lang.Object implements Servlet, ServletConfig, java.io.Serializable
如果我们要编写一个通用的Servlet,只需要从GenericServlet类继承,并实现其中的抽象方法service()。
在GenericServlet类中,定义了两个重载的init()方法:
public void init(ServletConfig config) throws ServletException
public void init() throws ServletException
第一个init()方法是Servlet接口中init()方法的实现。在这个方法中,首先将ServletConfig对象保存在一个transient实例变量中,然后调用第二个不带参数的init()方法。
通常我们在编写继承自GenericServlet的Servlet类时,只需要重写第二个不带参数的init()方法就可以了。如果覆盖了第一个init()方法,那么应该在子类的该方法中,包含一句super.init(config)代码的调用。
在GenericServlet类中还定义了下列的方法。
public java.lang.String getInitParameter(java.lang.String name)
返回名字为name的初始化参数的值,初始化参数在web.xml配置文件中进行配置。如果参数不存在,这个方法将返回null。
注意,这个方法只是为了方便而给出的,它实际上是通过调用ServletConfig对象的getInitParameter()方法来得到初始化参数的。
public java.util.Enumeration getInitParameterNames()
返回Servlet所有初始化参数的名字的枚举集合。如果Servlet没有初始化参数,这个方法将返回一个空的枚举集合。
注意,这个方法只是为了方便而给出的,它实际上是通过调用ServletConfig对象的getInitParameterNames()方法来得到所有的初始化参数的名字。
public ServletContext getServletContext()
返回Servlet上下文对象的引用,关于ServletContext的使用,请参见第12.5节。
注意,这个方法只是为了方便而给出的,它实际上是通过调用ServletConfig对象的getServletContext()方法来得到的Servlet上下文对象的引用。