06 - Servlets
Un Servlet es una clase Java que se ejecuta dentro de un contenedor de servlets (por ejemplo, Tomcat o Jetty) y que procesa peticiones HTTP.
No puede ejecutarse de forma independiente. El contenedor se encarga de:
Abrir el socket TCP.
Interpretar el protocolo HTTP.
Crear los objetos HttpServletRequest y HttpServletResponse.
Llamar al método apropiado de nuestro servlet (doGet, doPost, etc.).
Forma parte de la especificación Jakarta Servlet API (antes Java Servlet API).
Ciclo de vida de un servlet
Carga y creación: El contenedor carga la clase y crea una instancia cuando es necesario.
Inicialización: Llama a init(ServletConfig config).
Atender peticiones: Cada solicitud HTTP invoca service(HttpServletRequest, HttpServletResponse), que delega en doGet, doPost, etc.
Destrucción: Llama a destroy() antes de descargar la clase para liberar recursos.
Métodos importantes
init() → Inicialización (se ejecuta una vez).
doGet() → Responde a peticiones HTTP GET.
doPost() → Responde a peticiones HTTP POST.
doPut(), doDelete() → Para otros métodos HTTP.
destroy() → Liberar recursos antes de descargar el servlet.
Ejemplo
Para que funcione, debe desplegarse en un contenedor de servlets.
package es.cesguiro.servlet;
import java.io.IOException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet("/hola")
public class HolaServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");
response.getWriter().println("<h1>Hola desde un Servlet</h1>");
}
}
Contenedor de servlets
Ejemplos de contenedores:
Funciones clave:
Manejar la red y el protocolo HTTP.
Crear y gestionar instancias de servlets.
Pasar los objetos HttpServletRequest y HttpServletResponse.
Aplicar filtros y listeners.