Artículo

¿Qué es un Servlet en Java? Guía con Ejemplo Práctico (2026)

Descubre qué es un Servlet, su ciclo de vida (init, service, destroy) y crea tu primer Servlet con código completo y explicado.

Un Servlet es una clase Java que se ejecuta en un servidor web (un servlet container como Tomcat) y que procesa peticiones HTTP, generando una respuesta dinámica. Fue, durante años, la base sobre la que se construyó todo el desarrollo web en Java, y sigue siendo el fundamento sobre el que funcionan frameworks modernos como Spring MVC.

¿Qué es un Servlet?

Un Servlet extiende (directa o indirectamente) la clase HttpServlet y sobreescribe métodos como doGet o doPost para responder a peticiones HTTP concretas. El servlet container se encarga de instanciar el Servlet, gestionarlo y enrutar las peticiones hacia él.

¿Para qué sirve un Servlet?

Permite generar contenido dinámico en respuesta a una petición: consultar una base de datos y devolver los resultados, procesar un formulario enviado por el usuario, o exponer un endpoint que devuelva JSON, entre otros usos.

Ciclo de vida de un Servlet

init()

Se ejecuta una única vez, cuando el contenedor carga el Servlet por primera vez. Es el lugar ideal para inicializar recursos.

service()

Se invoca en cada petición HTTP recibida. Internamente delega en doGet, doPost, doPut, doDelete, etc., según el método HTTP de la petición.

destroy()

Se ejecuta una única vez, cuando el contenedor decide eliminar el Servlet (por ejemplo, al detener la aplicación), permitiendo liberar recursos.

Ejemplo práctico: tu primer Servlet

Código completo

@WebServlet("/saludo")
public class SaludoServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException {
        response.setContentType("text/plain");
        response.getWriter().write("Hola desde un Servlet");
    }
}

Configuración (web.xml o anotaciones)

Con la anotación @WebServlet (Servlet 3.0+) no necesitas declarar nada en web.xml. La alternativa clásica, en proyectos antiguos, es:

<servlet>
    <servlet-name>SaludoServlet</servlet-name>
    <servlet-class>com.tuapp.SaludoServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>SaludoServlet</servlet-name>
    <url-pattern>/saludo</url-pattern>
</servlet-mapping>

Despliegue en Tomcat

Empaqueta el proyecto como .war y colócalo en la carpeta webapps de Tomcat. Al arrancar el servidor, el contenedor detecta el Servlet y queda accesible en la URL configurada.

Servlets vs Spring Boot: ¿siguen siendo relevantes?

Sí. Cuando trabajas con Spring MVC o Spring Boot, cada petición HTTP en realidad pasa primero por un único Servlet especial: el DispatcherServlet. Este Servlet central es quien recibe todas las peticiones y las redirige a tus controladores (@RestController) según las rutas definidas. Es decir, Spring no elimina los Servlets: los abstrae para que no tengas que escribirlos a mano.

Errores comunes al trabajar con Servlets

  • Olvidar cerrar recursos abiertos en init() dentro de destroy(), generando fugas de memoria.
  • Confundir doGet y doPost, provocando errores 405 (Method Not Allowed) al usar el verbo HTTP incorrecto.
  • Mantener estado mutable como variable de instancia del Servlet sin sincronización: un mismo Servlet puede atender múltiples peticiones concurrentes, ya que el contenedor normalmente usa una única instancia compartida.

Preguntas frecuentes

¿Necesito aprender Servlets si voy a usar Spring Boot? No es obligatorio para empezar, pero entender qué es un Servlet ayuda a comprender qué ocurre realmente por debajo de Spring MVC y facilita depurar problemas más avanzados.

¿Un Servlet es lo mismo que un Controller de Spring? No exactamente. Un @RestController de Spring es gestionado internamente por el DispatcherServlet, que sí es un Servlet clásico.

¿Dónde se ejecuta un Servlet? Dentro de un contenedor de Servlets como Tomcat, Jetty o Undertow, que puede ser externo o (en el caso de Spring Boot) embebido dentro de la propia aplicación.

Siguiente paso

Entender los Servlets ayuda a comprender mejor qué ocurre "por debajo" cuando trabajas con Spring Boot y su servidor embebido.

java servlet tomcat backend

Newsletter Semanal de Java

Cada viernes recibe lo más nuevo del ecosistema Java: frameworks, herramientas y mejores prácticas.

🔒 Sin spam. Cancela cuando quieras.

Compartir artículo