English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Servlet 生命周期

El ciclo de vida del Servlet se puede definir como el proceso completo desde su creación hasta su destrucción. A continuación se muestra el proceso que sigue el Servlet:

  • Se llama después de que el Servlet se inicialice init () Método.

  • Servlet Llamada Servlet Método para manejar las solicitudes del cliente.

  • Se llama al método antes de que el Servlet se destruya  destroy() Método.

  • Finalmente, el Servlet es reciclado por el recolector de basura de la JVM.

Ahora vamos a discutir en detalle los métodos del ciclo de vida.

Método init()

El método init está diseñado para ser llamado solo una vez. Se llama por primera vez cuando se crea el Servlet y no se llama nuevamente en cada solicitud del usuario. Por lo tanto, se utiliza para la inicialización una vez, al igual que el método init de Applet.

El Servlet se crea cuando el usuario llama por primera vez a la URL correspondiente al Servlet, pero también puede especificarse que el Servlet se cargue cuando el servidor se inicie por primera vez.

Cada vez que el usuario llama a un Servlet, se crea una instancia de Servlet, cada solicitud del usuario genera un nuevo hilo y se entrega a doGet o doPost en el momento apropiado. El método init() simplemente crea o carga algunos datos, que se utilizarán durante toda la vida útil del Servlet.

La definición del método init es la siguiente:

public void init() throws ServletException {
  // Código de inicialización...
}

Método service()

El método service() es el método principal para ejecutar tareas. El contenedor Servlet (es decir, el servidor web) llama al método service() para manejar las solicitudes del cliente (navegador) y escribir la respuesta formateada de vuelta al cliente.

Cada vez que el servidor recibe una solicitud Servlet, se crea un nuevo hilo y se llama al servicio. El método service() verifica el tipo de solicitud HTTP (GET, POST, PUT, DELETE, etc.) y llama a doGet, doPost, doPut, doDelete y otros métodos en el momento apropiado.

A continuación se presentan las características de este método:

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

El método service() es llamado por el contenedor, el método service llama a doGet, doPost, doPut, doDelete y otros métodos en el momento apropiado. Por lo tanto, no es necesario realizar ninguna acción en el método service(), simplemente debe sobrescribir doGet() o doPost() según el tipo de solicitud del cliente.

Los métodos doGet() y doPost() son los más utilizados en cada solicitud de servicio. A continuación se presentan las características de estos métodos.

Método doGet()

Una solicitud GET proviene de una solicitud normal de una URL o de un formulario HTML sin especificar el METHOD, que se maneja por el método doGet().

public void doGet(HttpServletRequest request,
                  HttpServletResponse response)
    throws ServletException, IOException {
    // Código de Servlet
}

Método doPost()

La solicitud POST proviene de un formulario HTML especialmente especificado con el método POST, que se maneja por el método doPost().

public void doPost(HttpServletRequest request,
                   HttpServletResponse response)
    throws ServletException, IOException {
    // Código de Servlet
}

Método destroy()

El método destroy() solo se llama una vez, al final del ciclo de vida del Servlet. El método destroy() le permite cerrar conexiones de bases de datos, detener hilos en segundo plano, escribir la lista de Cookie o el contador de clics en disco, y realizar otras actividades de limpieza similares.

Después de llamar al método destroy(), el objeto servlet se marca para la recolección de basura. La definición del método destroy() se muestra a continuación:

  public void destroy() {
    // Código de terminación...
  }

Diagrama de arquitectura

La siguiente imagen muestra un esquema típico del ciclo de vida de Servlet.

  • La solicitud HTTP primera en llegar al servidor se delega al contenedor de Servlet.

  • Antes de llamar al método service(), el contenedor de Servlet carga el Servlet.

  • Luego, el contenedor de Servlet maneja múltiples solicitudes generadas por múltiples hilos, cada hilo ejecuta un único ejemplo de método service() de Servlet.