Los servlets son los programas Java que se ejecutan en el servidor web o en el servidor de aplicaciones habilitado para Java. Se utilizan para manejar la solicitud obtenida del servidor web, procesar la solicitud, producir la respuesta y luego enviar una respuesta al servidor web.
Cómo funciona el servlet
- A petición de un servlet, el servidor comprueba si es la primera vez y si es así;
- El contenedor web carga la clase de servlet.
- Instancia la clase servlet.
- Pasa el objeto ServletConfig en la llamada del método init()
- Y si no, llama al método service() y pasa los objetos de solicitud y respuesta.
- El contenedor web asigna la solicitud al servlet en el archivo web.xml.
- Crea el objeto de la solicitud y la respuesta a la solicitud.
- Invoca el método service() en el hilo
- El método de servicio protegido() invoca el método doGet que depende del tipo de solicitud.
- La respuesta es generada por el método doGet y enviada al cliente.
- El contenedor web elimina los objetos de solicitud y respuesta después de pasar la respuesta.
- Según la implementación del servidor, el subproceso está contenido en el grupo eliminado o en el grupo de subprocesos.
Envase
- Se utiliza en Java para generar dinámicamente las páginas web en el lado del servidor.
- Carga la clase de servlet
- Crea una instancia de la clase servlet.
- Invoca el método init() y pasa el objeto ServletConfig.
- Invoca el método destroy() al eliminar el servlet.
Terminologías web
- Aplicación Web: Esta es una aplicación que es accesible desde la web y puede estar compuesta por Servlet, JSP, Filter o HTML, generalmente se ejecuta en el servidor y responde a requests HTTP.
- Sitio web: es una colección de páginas web relacionadas que pueden contener texto, imágenes, audio y video.
- HTTP: Es el protocolo de comunicación de datos utilizado para establecer la comunicación entre el cliente y el servidor.
- Requests HTTP: Es la solicitud enviada por la computadora a un servidor web que contiene todo tipo de información potencialmente interesante.
- Get y Post: estos son los métodos HTTP en los servlets, Get es para recuperar información del servidor y el método Post se usa cuando los datos se envían o actualizan en el servidor.
- Servidor: Se utiliza para administrar los recursos de la red y para ejecutar el programa o software que brinda el servicio.
API de servlet
Las API de servlet se utilizan para crear servlets. Hay 2 paquetes, los paquetes Javax.servlet.http que contienen clases que admiten el servlet http, mientras que el paquete javax.servlet contiene las clases que admiten el servlet genérico (servlet independiente del protocolo).
Java
java.lang.Object |_extended byjavax.servlet.GenericServlet |_extended byjavax.servlet.http.HttpServlet
Servlet genérico
La clase de servlet genérico se crea extendiendo
javax.servlet.GenericServlet
GenericServlet es una clase abstracta que tiene un método de servicio.
service()
Esto implica que el subtipo o la subclase debe anular el método service() en el supertipo.
public abstract void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
El método toma 2 argumentos
ServletRequest
y
ServletResponse
El objeto de solicitud toma la solicitud del cliente, mientras que el objeto de respuesta devuelve la respuesta a la llamada del cliente.
Servlet HTTP
La clase de servlet Http se crea extendiendo
Javax.servlet.http.HttpServlet class.
El servlet HTTP es una clase abstracta que amplía la clase GenericServlet, proporciona métodos como doPost, doGet, doDelete, doTrace, etc.
Ejemplos de métodos en la clase de servlet HTTP:
protected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException { // invoked by the web container and it handles the Get request from client call } protected long getLastModified(HttpServletRequest req) { // This method returns the last time Httpservlet was modified } protected void doHead(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // Invoke by the web container to handle the HEAD request } protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // invoked by the web and it handles the POST request } protected void doDelete(HttpServletRequest req, HttpServletResponse res) { // Invoked by the web and it handles the DELETE request } protected void doTrace(HttpServletRequest req, HttpServletResponse res) { // Handles the TRACE request } protected void doOptions(HttpServletRequest req, HttpServletResponse res) { // Handles the OPTIONS request }
Ciclo de vida del servlet
Hay estados en el servlet:
Nuevo, listo y fin.
- Un servlet es nuevo cada vez que se crea una instancia de servlet.
- Un servlet entra en un estado listo después de que se ha invocado el método init() y realiza su tarea.
- Luego ingresa al estado final cada vez que el contenedor web invoca el método destroy().
El contenedor web supervisa el ciclo de vida del servlet de la siguiente manera:
Cargue la clase Servlet:
- El cargador de clases carga la clase de servlet cuando el contenedor web recibe la solicitud
- Cree la instancia de Servlet:
- Después de cargar la clase Servlet, el contenedor web crea la instancia del servlet y está una vez en su ciclo de vida.
- Invoca el método init():
- El contenedor web llama una vez al método init() después de la creación de la instancia de Servlet
public void init(ServletConfig config) throws ServletException
Contenedor web Invoca el método service():
El método service() se invoca cada vez que el contenedor web lo llama, esto sucede después de que se realiza la solicitud al servlet.
Contenedor web Invoque el método destroy():
Se llama al método destroy() antes de eliminar la instancia del servlet del servicio, esto permite que el servlet limpie recursos como hilos.
Public void destroy()
archivo de guerra
El archivo WAR (archivo web) es donde se encuentran los archivos de un proyecto web y puede contener archivos como servlet, jsp, html, css, js, jsp, etc.
Conclusión
Los contenedores web ayudan a crear múltiples subprocesos para manejar muchas requests al servlet, lo que conduce a un mejor rendimiento en lugar del proceso. Es Robusto ya que es administrado por JVM, esto evita el problema de fugas de memoria y recolección de basura. Es seguro porque está escrito en Java.
Publicación traducida automáticamente
Artículo escrito por auduigbekele y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA