Red de conocimiento informático - Problemas con los teléfonos móviles - Ciclo de vida del servlet

Ciclo de vida del servlet

Ciclo de vida del servlet El servlet se ejecuta en un contenedor de servlet y su ciclo de vida es administrado por el contenedor. El ciclo de vida de Servlet está representado por los métodos init(), service() y destroy() en la interfaz javax.servlet.Servlet. El ciclo de vida de Servlet incluye las siguientes cuatro etapas: (1) Carga y creación de instancias de Servlet El contenedor es responsable de cargar y crear instancias de Servlet. Se crea una instancia de Servlet cuando se inicia el contenedor de Servlet o cuando el contenedor detecta que este Servlet es necesario para responder a la primera solicitud. Cuando se inicia el contenedor de Servlet, debe saber dónde está la clase de Servlet requerida. El contenedor de Servlet puede cargar la clase de Servlet desde el sistema de archivos local, el sistema de archivos remoto u otros servicios de red a través del cargador de clases. instancia de servlet creada. Debido a que el contenedor crea una instancia de Servlet a través de la API de reflexión de Java y llama al constructor predeterminado del Servlet (es decir, el constructor sin parámetros), no debemos proporcionar un constructor con parámetros al escribir la clase de Servlet. (2) Inicialización Después de crear una instancia del Servlet, el contenedor llamará al método init() del Servlet para inicializar el objeto. El propósito de la inicialización es permitir que el objeto Servlet complete algún trabajo de inicialización antes de procesar la solicitud del cliente, como establecer una conexión a la base de datos, obtener información de configuración, etc. Para cada instancia de Servlet, el método init() se llama solo una vez. Durante la inicialización, la instancia de Servlet puede obtener información de parámetros inicializados de la información de configuración de la aplicación web (configurada en web.xml) utilizando el objeto ServletConfig preparado para ella por el contenedor. Durante la inicialización, si ocurre un error, la instancia de Servlet puede generar una ServletException o UnavailableException para notificar al contenedor. ServletException se usa para indicar un error de inicialización general, como que no se encontraron parámetros de inicialización y UnavailableException se usa para notificar al contenedor que la instancia de Servlet no está disponible. Por ejemplo, si el servidor de la base de datos no se inicia y no se puede establecer la conexión de la base de datos, el servlet puede generar una excepción no disponible para indicar al contenedor que no está disponible temporal o permanentemente. (3) Procesamiento de solicitudes El contenedor de servlet llama al método service () del servlet para procesar la solicitud. Cabe señalar que el método init() debe ejecutarse correctamente antes de llamar al método service(). En el método service (), la instancia de Servlet obtiene la información relevante del cliente y solicita información a través del objeto ServletRequest. Después de procesar la solicitud, llama al método del objeto ServletResponse para establecer la información de respuesta. Durante la ejecución del método service(), si se produce un error, la instancia de Servlet puede generar una ServletException o UnavailableException. Si la excepción UnavailableException indica que la instancia no está disponible permanentemente, el contenedor de servlet llamará al método destroy() de la instancia para liberarla. Cualquier solicitud posterior a la instancia recibirá una respuesta HTTP 404 (El recurso solicitado no está disponible) del contenedor. Si la excepción UnavailableException indica que la instancia no está disponible temporalmente, cualquier solicitud a la instancia durante el período de indisponibilidad temporal recibirá una respuesta HTTP 503 (el servidor está temporalmente ocupado y no puede procesar la solicitud) enviada por el contenedor. (4) Terminación del servicio: cuando el contenedor detecta que una instancia de Servlet debe eliminarse del servicio, el contenedor llamará al método destroy() de la instancia para que la instancia pueda liberar los recursos que utiliza y guardar los datos en un almacenamiento persistente. . en el dispositivo. Cuando es necesario liberar memoria o cerrar el contenedor, el contenedor llamará al método destroy() de la instancia de Servlet.

Después de llamar al método destroy(), el contenedor liberará la instancia de Servlet, que luego será reciclada por el recolector de basura de Java. Si este Servlet es necesario nuevamente para manejar solicitudes, el contenedor de Servlet creará una nueva instancia de Servlet. Durante todo el ciclo de vida del Servlet, la creación de una instancia de Servlet y la llamada a los métodos init () y destroy () de la instancia solo se realizan una vez. Cuando se completa la inicialización, el contenedor de Servlet guardará la instancia en la memoria y llamará a su método service (). para atender la solicitud recibida. Solo recuerde los siguientes puntos durante la entrevista: creación de instancias, inicialización, llamada de servicio y luego destrucción, ¡luego está bien! Demasiado simple. . . ¡Es difícil encontrar preguntas de entrevista tan simples! Jaja