Java Reference
In-Depth Information
The Life Cycle of a Servlet
The life cycle of a Java servlet is a very simple object-oriented design. A servlet is constructed
and initialized. It then services zero or more requests until the service that it extends shuts
down. At this point the servlet is destroyed and garbage is collected. This design explains why
servlets are such a good replacement for CGI: The servlet is loaded only once and it stays resi-
dent in memory while servicing requests.
The
javax.servlet.Servlet
interface declares this framework. The
Servlet
interface defines
the life cycle methods. These methods are the
init()
, the
service()
, and the
destroy()
methods.
The
init()
Method
The
init()
method is where the servlet's life begins. It is called by the server immediately
after the servlet is instantiated. It is called only once. In the
init()
method the servlet creates
and initializes the resources that it will be using while handling requests. The
init()
method's
signature is defined as follows:
public void init(ServletConfig config) throws ServletException;
The
init()
method takes a
ServletConfig
object as a parameter. You should save this object
so that it can be referenced later. The most common way of doing this is to have the
init()
method call
super.init()
passing it the
ServletConfig
object.
You will also notice that the
init()
method can throw a
ServletException
. If, for some rea-
son, the servlet cannot initialize the resources necessary to handle requests, the
init()
method
should throw a
ServletException
.
The
service()
Method
The
service()
method handles all requests sent by a client. It cannot start servicing requests
until the
init()
method has been executed. You will not usually implement this method
directly, unless you extend the
GenericServlet
abstract class.
The most common implementation of the
service()
method is in the
HttpServlet
class.
The
HttpServlet
class implements the
Servlet
interface by extending
GenericServlet
. Its
service()
method supports standard HTTP/1.1 requests by determining the request type and
calling the appropriate method. The signature of the
service()
method is shown below.
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException;