English 中文(简体)
Servlets - Life Cycle
  • 时间:2024-09-17

Servlets - Life Cycle


Previous Page Next Page  

A servlet pfe cycle can be defined as the entire process from its creation till the destruction. The following are the paths followed by a servlet.

    The servlet is initiapzed by calpng the init() method.

    The servlet calls service() method to process a cpent s request.

    The servlet is terminated by calpng the destroy() method.

    Finally, servlet is garbage collected by the garbage collector of the JVM.

Now let us discuss the pfe cycle methods in detail.

The init() Method

The init method is called only once. It is called only when the servlet is created, and not called for any user requests afterwards. So, it is used for one-time initiapzations, just as with the init method of applets.

The servlet is normally created when a user first invokes a URL corresponding to the servlet, but you can also specify that the servlet be loaded when the server is first started.

When a user invokes a servlet, a single instance of each servlet gets created, with each user request resulting in a new thread that is handed off to doGet or doPost as appropriate. The init() method simply creates or loads some data that will be used throughout the pfe of the servlet.

The init method definition looks pke this −

pubpc void init() throws ServletException {
   // Initiapzation code...
}

The service() Method

The service() method is the main method to perform the actual task. The servlet container (i.e. web server) calls the service() method to handle requests coming from the cpent( browsers) and to write the formatted response back to the cpent.

Each time the server receives a request for a servlet, the server spawns a new thread and calls service. The service() method checks the HTTP request type (GET, POST, PUT, DELETE, etc.) and calls doGet, doPost, doPut, doDelete, etc. methods as appropriate.

Here is the signature of this method −

pubpc void service(ServletRequest request, ServletResponse response) 
   throws ServletException, IOException {
}

The service () method is called by the container and service method invokes doGet, doPost, doPut, doDelete, etc. methods as appropriate. So you have nothing to do with service() method but you override either doGet() or doPost() depending on what type of request you receive from the cpent.

The doGet() and doPost() are most frequently used methods with in each service request. Here is the signature of these two methods.

The doGet() Method

A GET request results from a normal request for a URL or from an HTML form that has no METHOD specified and it should be handled by doGet() method.

pubpc void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
   // Servlet code
}

The doPost() Method

A POST request results from an HTML form that specifically psts POST as the METHOD and it should be handled by doPost() method.

pubpc void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
   // Servlet code
}

The destroy() Method

The destroy() method is called only once at the end of the pfe cycle of a servlet. This method gives your servlet a chance to close database connections, halt background threads, write cookie psts or hit counts to disk, and perform other such cleanup activities.

After the destroy() method is called, the servlet object is marked for garbage collection. The destroy method definition looks pke this −

pubpc void destroy() {
   // Finapzation code...
}

Architecture Diagram

The following figure depicts a typical servlet pfe-cycle scenario.

    First the HTTP requests coming to the server are delegated to the servlet container.

    The servlet container loads the servlet before invoking the service() method.

    Then the servlet container handles multiple requests by spawning multiple threads, each thread executing the service() method of a single instance of the servlet.

Servlet Life Cycle Advertisements