auto S3.1.6 - eliizquierdo/material_programacion_avanzada2026 GitHub Wiki
Responde cada pregunta antes de ver la respuesta.
¿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.
¿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.
¿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.
¿Qué diferencia hay entre request.getSession() y request.getSession(false)?
- A)
getSession()crea una nueva sesión si no existe;getSession(false)devuelvenullsi no existe - B)
getSession()solo funciona en HTTPS;getSession(false)funciona en HTTP - C)
getSession(false)es más lento quegetSession() - 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.
¿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.
¿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.
¿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).
¿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.
