Package javax.servlet

# Class GenericServlet

java.lang.Object
javax.servlet.GenericServlet

All Implemented Interfaces:
  `Serializable`, `Servlet`, `ServletConfig`

Direct Known Subclasses:
  `HttpServlet`

public abstract class GenericServlet extends Object implements Servlet, ServletConfig, Serializable
Defines a generic, protocol-independent servlet. To write an HTTP servlet for use on the Web, extend `HttpServlet` instead.

`GenericServlet` implements the `Servlet` and `ServletConfig` interfaces. `GenericServlet` may be directly extended by a servlet, although it's more common to extend a protocol-specific subclass such as `HttpServlet`.

`GenericServlet` makes writing servlets easier. It provides simple versions of the lifecycle methods `init` and `destroy` and of the methods in the `ServletConfig` interface. `GenericServlet` also implements the `log` method, declared in the `ServletContext` interface.

To write a generic servlet, you need only override the abstract `service` method.

See Also:
  - Serialized Form

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `GenericServlet()`
  Does nothing.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `destroy()`
  Called by the servlet container to indicate to a servlet that the servlet is being taken out of service.
  `String`
  `getInitParameter(String name)`
  Returns a `String` containing the value of the named initialization parameter, or `null` if the parameter does not exist.
  `Enumeration<String>`
  `getInitParameterNames()`
  Returns the names of the servlet's initialization parameters as an `Enumeration` of `String` objects, or an empty `Enumeration` if the servlet has no initialization parameters.
  `ServletConfig`
  `getServletConfig()`
  Returns this servlet's `ServletConfig` object.
  `ServletContext`
  `getServletContext()`
  Returns a reference to the `ServletContext` in which this servlet is running.
  `String`
  `getServletInfo()`
  Returns information about the servlet, such as author, version, and copyright.
  `String`
  `getServletName()`
  Returns the name of this servlet instance.
  `void`
  `init()`
  A convenience method which can be overridden so that there's no need to call `super.init(config)`.
  `void`
  `init(ServletConfig config)`
  Called by the servlet container to indicate to a servlet that the servlet is being placed into service.
  `void`
  `log(String message)`
  Writes the specified message to a servlet log file, prepended by the servlet's name.
  `void`
  `log(String message, Throwable t)`
  Writes an explanatory message and a stack trace for a given `Throwable` exception to the servlet log file, prepended by the servlet's name.
  `abstract void`
  `service(ServletRequest req, ServletResponse res)`
  Called by the servlet container to allow the servlet to respond to a request.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### GenericServlet

    public GenericServlet()
    Does nothing. All of the servlet initialization is done by one of the `init` methods.

- ## Method Details

  - ### destroy

    public void destroy()
    Called by the servlet container to indicate to a servlet that the servlet is being taken out of service. See `Servlet.destroy()`.
    Specified by:
      `destroy` in interface `Servlet`

  - ### getInitParameter

    public String getInitParameter(String name)
    Returns a `String` containing the value of the named initialization parameter, or `null` if the parameter does not exist. See `ServletConfig.getInitParameter(java.lang.String)`.

    This method is supplied for convenience. It gets the value of the named parameter from the servlet's `ServletConfig` object.

    Specified by:
      `getInitParameter` in interface `ServletConfig`
    Parameters:
      `name` - a `String` specifying the name of the initialization parameter
    Returns:
      String a `String` containing the value of the initialization parameter

  - ### getInitParameterNames

    public Enumeration<String> getInitParameterNames()
    Returns the names of the servlet's initialization parameters as an `Enumeration` of `String` objects, or an empty `Enumeration` if the servlet has no initialization parameters. See `ServletConfig.getInitParameterNames()`.

    This method is supplied for convenience. It gets the parameter names from the servlet's `ServletConfig` object.

    Specified by:
      `getInitParameterNames` in interface `ServletConfig`
    Returns:
      Enumeration an enumeration of `String` objects containing the names of the servlet's initialization parameters

  - ### getServletConfig

    public ServletConfig getServletConfig()
    Returns this servlet's `ServletConfig` object.
    Specified by:
      `getServletConfig` in interface `Servlet`
    Returns:
      ServletConfig the `ServletConfig` object that initialized this servlet
    See Also:
      - `Servlet.init(javax.servlet.ServletConfig)`

  - ### getServletContext

    public ServletContext getServletContext()
    Returns a reference to the `ServletContext` in which this servlet is running. See `ServletConfig.getServletContext()`.

    This method is supplied for convenience. It gets the context from the servlet's `ServletConfig` object.

    Specified by:
      `getServletContext` in interface `ServletConfig`
    Returns:
      ServletContext the `ServletContext` object passed to this servlet by the `init` method
    See Also:
      - `ServletContext`

  - ### getServletInfo

    public String getServletInfo()
    Returns information about the servlet, such as author, version, and copyright. By default, this method returns an empty string. Override this method to have it return a meaningful value. See `Servlet.getServletInfo()`.
    Specified by:
      `getServletInfo` in interface `Servlet`
    Returns:
      String information about this servlet, by default an empty string

  - ### init

    public void init(ServletConfig config) throws ServletException
    Called by the servlet container to indicate to a servlet that the servlet is being placed into service. See `Servlet.init(javax.servlet.ServletConfig)`.

    This implementation stores the `ServletConfig` object it receives from the servlet container for later use. When overriding this form of the method, call `super.init(config)`.

    Specified by:
      `init` in interface `Servlet`
    Parameters:
      `config` - the `ServletConfig` object that contains configuration information for this servlet
    Throws:
      `ServletException` - if an exception occurs that interrupts the servlet's normal operation
    See Also:
      - `UnavailableException`

  - ### init

    public void init() throws ServletException
    A convenience method which can be overridden so that there's no need to call `super.init(config)`.

    Instead of overriding `init(ServletConfig)`, simply override this method and it will be called by `GenericServlet.init(ServletConfig config)`. The `ServletConfig` object can still be retrieved via `getServletConfig()`.

    Throws:
      `ServletException` - if an exception occurs that interrupts the servlet's normal operation

  - ### log

    public void log(String message)
    Writes the specified message to a servlet log file, prepended by the servlet's name. See `ServletContext.log(String)`.
    Parameters:
      `message` - a `String` specifying the message to be written to the log file

  - ### log

    public void log(String message, Throwable t)
    Writes an explanatory message and a stack trace for a given `Throwable` exception to the servlet log file, prepended by the servlet's name. See `ServletContext.log(String, Throwable)`.
    Parameters:
      `message` - a `String` that describes the error or exception
      `t` - the `java.lang.Throwable` error or exception

  - ### service

    public abstract void service(ServletRequest req, ServletResponse res) throws ServletException, IOException
    Called by the servlet container to allow the servlet to respond to a request. See `Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)`.

    This method is declared abstract so subclasses, such as `HttpServlet`, must override it.

    Specified by:
      `service` in interface `Servlet`
    Parameters:
      `req` - the `ServletRequest` object that contains the client's request
      `res` - the `ServletResponse` object that will contain the servlet's response
    Throws:
      `ServletException` - if an exception occurs that interferes with the servlet's normal operation occurred
      `IOException` - if an input or output exception occurs

  - ### getServletName

    public String getServletName()
    Returns the name of this servlet instance. See `ServletConfig.getServletName()`.
    Specified by:
      `getServletName` in interface `ServletConfig`
    Returns:
      the name of this servlet instance