Este artículo comparte el ciclo de vida y el principio de funcionamiento de Servlet para su referencia. El contenido específico es el siguiente
El ciclo de vida del servlet se divide en tres etapas:
1. Llame al método init () en la etapa de inicialización
2. Llame al método del servicio () en respuesta a la etapa de solicitud del cliente
3. Llame al método destruir () en la etapa de terminación
Fase de inicialización de servlet:
En los siguientes momentos, el contenedor de servlet carga el servlet:
1. Cuando se inicia el contenedor de servlet, algunos servlets se cargan automáticamente. Para implementarlo, solo necesita agregar el siguiente código entre <ervlet> </servlet> en el archivo web.xml:
<Loadon-startup> 1 </loadon-startup>
2. Después de iniciar el contenedor de servlet, el cliente envía una solicitud al servlet por primera vez
3. Después de actualizar el archivo de clase de servlet, recargue el servlet
Después de cargar el servlet, el contenedor de servlet crea una instancia de servlet y llama al método init () del servlet para la inicialización. El método init () se llama solo una vez durante toda la vida de un servlet.
Cómo funcionan los servlets:
Primero, expliquemos brevemente el proceso de recibir y responder a las solicitudes de los clientes. Primero, el cliente envía una solicitud. El servlet llama al método Service () para responder a la solicitud. Se puede ver a través del código fuente. El método Service () coincide con el método de solicitud. Seleccione llamar a Doget, Dopost y otros métodos, y luego ingrese el método correspondiente para llamar al método de capa lógica para realizar la respuesta al cliente. No hay métodos como Doget, Dopost, etc. en la interfaz Servlet y GenericServlet. Estos métodos se definen en el httpservlet, pero todos devuelven la información de error. Por lo tanto, cada vez que definimos un servlet, debemos implementar métodos como Doget o Dopost.
Cada servlet personalizado debe implementar la interfaz Servlet. Cinco métodos se definen en la interfaz de servlet, entre los cuales los tres métodos más importantes involucran el ciclo de vida del servlet, a saber, los métodos init (), servicio () y destruyentes mencionados anteriormente. GenericServlet es un general, no específico de ningún protocolo, servlet, que implementa la interfaz Servlet. Httpservlet hereda de GenericServlet, por lo que Httpservlet también implementa la interfaz Servlet. Entonces, cuando definimos un servlet, solo necesitamos heredar el httpservlet.
La interfaz Servlet y GenericServlet no son específicos de ningún protocolo, mientras que HTTPServlet es una clase específica para el protocolo HTTP, por lo que el método Service () se implementa en HttpServlet y el ServletRequest y ServletResponse solicitados y HTTPonse se ven obligados a convertir el ServletRetRetRetTrePonse solicitado y HTTTPREQUEST y HTTTPONSPONESS HTTTTPonse.
Public void Service (ServLetRequest Req, ServletResponse Res) lanza ServletException, IoException {HTTPRequest Solicitud; Respuesta httpresponse; Pruebe la solicitud {req = (httprequest); Res = (httpresponse) respuesta; } Catch (ClassCastException e) {Throw New ServLetException ("Respuesta de solicitud no HTTP"); } servicio (solicitud, respuesta);}El código finalmente llama al método de servicio (solicitud, respuesta) del httpservlet, y luego llama al método DOXXX correspondiente de acuerdo con la solicitud, porque el método Doxxx en el httpservlet devuelve la información de error.
Doget vacío protegido (httpservletRequest res, httpservletResponse resp) lanza servletException, ioexception {string protocol = req.getProtocol (); Cadena msg = istrings.getString ("http.method_get_not_supported"); if (protocol.equals ("1.1")) {resp.senderRor (httpservletResponse.sc.method.not.lowed, msg); } esle {resp.sendError (httpservletResponse.sc_bad_request, msg); }}¡Así que necesitamos anular estos métodos en un servlet personalizado!
¡No hay ningún secreto frente al código fuente!
Fase de solicitud de respuesta de servlet:
Para que las solicitudes de usuario lleguen al servlet, el contenedor de servlet creará un objeto ServletRequest y el objeto ServletResponse específico para esta solicitud, y luego llamará al método de servicio Servlet. El método de servicio obtiene información de solicitud del cliente del objeto ServLetRequest, procesa la solicitud y devuelve la información de respuesta al cliente a través del objeto ServLetResponse.
Para Tomcat, colocará los parámetros pasados en un hashtable, y la definición de la hashtable es:
La copia del código es la siguiente: hashtable privado <string string []> paramhashStringArray = new Hashtable <String String []> ();
Este es un mapa de valor clave de String-> String [].
El hilo de hashmap no es seguro, el hilo de hashtable es seguro.
Fase de terminación de servlet:
Cuando se termina la aplicación web, o el contenedor de servlet termina en ejecución, o el contenedor de servlet recarga una nueva instancia del servlet, el contenedor de servlet primero llamará al método Destroy () del servlet, que puede liberar los recursos ocupados por el Servlet en el método Destroy ().
Cuando se crea un servlet:
1. Por defecto, cuando el cliente web solicita acceso a un servlet por primera vez, el contenedor web creará una instancia del servlet.
2. Cuando se especifica un elemento <load-on-startup> niño en el elemento <servlet> en el archivo web.xml, el contenedor de servlet creará e inicializará el objeto Servlet en orden al iniciar el servidor web.
Nota: En el archivo web.xml, algunos servlets solo tienen elementos <ERLVET> y no tienen elementos <Servlet-Mapping>, por lo que no podemos acceder a estos servlets a través de la URL. Este servlet generalmente configura un elemento infantil <load-startup> en el elemento <servlet>, de modo que el contenedor cargue automáticamente estos servlets y llama al método init () cuando se inicia, completando algunos trabajos de inicialización global.
¿Cuándo se iniciará la aplicación web?
1. Cuando se inicia el contenedor de servlet, se iniciarán todas las aplicaciones web.
2. El controlador inicia la aplicación web
Comparación entre Servlet y JSP:
Hay muchas similitudes que pueden generar páginas web dinámicas.
La ventaja de JSP es que es bueno en la producción de la página web, y es más intuitivo generar páginas dinámicas, pero la desventaja es que no es fácil rastrear y solucionar problemas.
Servlet es un lenguaje Java puro y es bueno en procesos de procesamiento y lógica de negocios. La desventaja es que no es intuitivo generar páginas web dinámicas.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.