auto S3.1.6 - eliizquierdo/material_programacion_avanzada2026 GitHub Wiki

🧠 Autoevaluación — HTTP Sessions

Responde cada pregunta antes de ver la respuesta.


Pregunta 1

¿Por qué HTTP se dice que es un protocolo "sin estado" (stateless)?

  • A) Porque no tiene cabeceras en los mensajes
  • B) Porque solo funciona con el método GET
  • C) Porque cada petición es independiente; el servidor no recuerda nada de peticiones anteriores
  • D) Porque no puede transmitir datos de formularios
Ver respuesta

✅ C) Porque cada petición es independiente; el servidor no recuerda nada de peticiones anteriores

💡 HTTP trata cada request como si fuera el primero. Sin mecanismos adicionales como sesiones o cookies, el servidor no puede saber si dos peticiones vienen del mismo usuario.


Pregunta 2

¿Qué hace request.getSession() si el usuario ya tiene una sesión activa?

  • A) Crea una nueva sesión, descartando la anterior
  • B) Lanza una excepción SessionAlreadyExistsException
  • C) Devuelve null
  • D) Devuelve la sesión existente del usuario
Ver respuesta

✅ D) Devuelve la sesión existente del usuario

💡 getSession() es "obtener o crear": si ya existe sesión para ese usuario, la devuelve. Si no existe, la crea y la devuelve. Solo usa getSession(false) cuando quieres solo obtener sin crear.


Pregunta 3

¿Cómo se guarda un dato en la sesión HTTP?

  • A) session.save("usuario", "Ana")
  • B) session.store("usuario", "Ana")
  • C) session.put("usuario", "Ana")
  • D) session.setAttribute("usuario", "Ana")
Ver respuesta

✅ D) session.setAttribute("usuario", "Ana")

💡 setAttribute(nombre, valor) guarda cualquier objeto en la sesión bajo una clave. Se recupera con getAttribute("usuario"), que devuelve Object y requiere casting.


Pregunta 4

¿Qué diferencia hay entre request.getSession() y request.getSession(false)?

  • A) getSession() crea una nueva sesión si no existe; getSession(false) devuelve null si no existe
  • B) getSession() solo funciona en HTTPS; getSession(false) funciona en HTTP
  • C) getSession(false) es más lento que getSession()
  • D) getSession() almacena datos; getSession(false) solo los lee
Ver respuesta

✅ A) getSession() crea una nueva sesión si no existe; getSession(false) devuelve null si no existe

💡 Para verificar si el usuario está logueado, usa getSession(false) y comprueba si devuelve null. Si usaras getSession(), crearías una sesión vacía para cualquier visitante anónimo.


Pregunta 5

¿Qué hace session.invalidate()?

  • A) Pausa la sesión temporalmente hasta que el usuario vuelva a autenticarse
  • B) Destruye la sesión y todos sus datos (logout)
  • C) Elimina solo el atributo "usuario" de la sesión
  • D) Cambia el ID de sesión por seguridad
Ver respuesta

✅ B) Destruye la sesión y todos sus datos (logout)

💡 invalidate() es la forma correcta de implementar el logout: destruye la sesión completa y todos los atributos guardados en ella. Después, el servidor creará una sesión nueva si el usuario vuelve a navegar.


Pregunta 6

¿Qué es JSESSIONID?

  • A) Una cookie que el servidor usa para identificar la sesión de cada usuario
  • B) El nombre de la clase principal de sesiones en Java
  • C) Un parámetro de URL que contiene el nombre del usuario
  • D) El ID del Servlet que maneja las sesiones
Ver respuesta

✅ A) Una cookie que el servidor usa para identificar la sesión de cada usuario

💡 Cuando el servidor crea una sesión, envía al navegador la cookie JSESSIONID con un valor único. En cada petición siguiente, el navegador envía esa cookie y el servidor identifica al usuario.


Pregunta 7

¿Cuánto tiempo dura una sesión HTTP en Tomcat por defecto si el usuario no hace peticiones?

  • A) 5 minutos
  • B) 1 hora
  • C) 30 minutos
  • D) Hasta que el servidor se reinicia
Ver respuesta

✅ C) 30 minutos

💡 El valor por defecto en Tomcat es 30 minutos de inactividad. Se puede cambiar en web.xml con <session-timeout> o en código con session.setMaxInactiveInterval(segundos).


Pregunta 8

¿Cuál es la diferencia entre una sesión HTTP y una cookie?

  • A) Las cookies se almacenan en el servidor; las sesiones en el navegador
  • B) Las sesiones se almacenan en el servidor y duran mientras el servidor las mantenga; las cookies se almacenan en el navegador y pueden persistir entre cierres del navegador
  • C) No hay diferencia, son sinónimos
  • D) Las cookies usan el protocolo HTTPS; las sesiones usan HTTP
Ver respuesta

✅ B) Las sesiones se almacenan en el servidor y duran mientras el servidor las mantenga; las cookies se almacenan en el navegador y pueden persistir entre cierres del navegador

💡 La sesión vive en el servidor (en memoria de Tomcat) y se identifica mediante la cookie JSESSIONID. Las cookies ordinarias viven en el navegador y pueden tener una fecha de expiración futura.


🏠 Volver al índice


← Volver a HTTP Sessions · 🏠 Inicio

⚠️ **GitHub.com Fallback** ⚠️