Servlets
El componente que procesa una petición HTTP y el contrato que el contenedor te impone.
Servlets Java
Una servlet es lo único que, en una aplicación Jakarta EE, transforma realmente una petición HTTP en una respuesta. Todo lo demás —JSP, JSTL, filtros, frameworks completos como Spring MVC— se construye por encima. Cuando escribes un @RestController de Spring, acaba su recorrido en una servlet llamada DispatcherServlet. Entender esta clase es entender el cimiento de toda la web Java.
El problema que resuelve la servlet es el de la concurrencia. Cien visitantes llaman a tu servidor al mismo tiempo. ¿Hay que crear cien objetos? ¿Cien hilos? ¿Quién los destruye? La respuesta de la especificación es contraintuitiva y tiene graves consecuencias: el contenedor crea una sola instancia de tu servlet y hace que todos los hilos la atraviesen simultáneamente. Esta decisión, tomada por ti, explica la mitad de los bugs de producción en las aplicaciones web Java: un campo de instancia en una servlet es un estado compartido entre todos los usuarios.
Esta lección sigue una petición de principio a fin: cómo elige el contenedor a qué servlet llamar, cuándo instancia y destruye el objeto, cómo leer los parámetros y las cabeceras, cómo decidir entre una redirección y un reenvío, y cómo reconocer a un visitante de una petición a la siguiente cuando HTTP no tiene ninguna memoria.
Comentarios
Los comentarios funcionan con GitHub Discussions
Inicia sesión con GitHub para participar en la discusión