(JSP) session.removeAttribute() con boton Volver Atrás del explorador


11 de Marzo del 2016

Buen día, mi consulta basicamente es, como llamo al método removeAttribute cuando hago click en el boton Volver Atras del navegador, ya que no me funciona... como solucion tuve que poner un boton dentro de mi pagina que me vuelve a la pagina anterior y ahi si me funciono el removeAtt..

 

Desde ya muchas Gracias!

GuilleF


Marta
12 de Agosto del 2026

Hola,

Lo que estás viendo no es un fallo de tu código del removeAttribute, es cómo funciona el botón «atrás» del navegador: en muchos casos, al pulsar «atrás» el navegador no vuelve a pedir la página al servidor, la recupera de una memoria caché local (lo que se llama bfcache, back-forward cache, en navegadores modernos). Como no hay una petición HTTP nueva, tu servlet/JSP no se vuelve a ejecutar, y por tanto ese removeAttribute que depende de que se ejecute código del servidor nunca se dispara.

Una solución habitual es forzar que el navegador no sirva esa página desde caché, con cabeceras HTTP que le digan explícitamente que revalide con el servidor:

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);

Con esto, al pulsar «atrás», el navegador sí vuelve a pedir la página al servidor en vez de mostrar la versión cacheada, y tu lógica de servidor (incluido el removeAttribute) se ejecuta de nuevo.

Si prefieres no depender de cabeceras HTTP (algunos navegadores las respetan de forma inconsistente según el caso), la alternativa es detectarlo desde JavaScript con el evento pageshow, que sí se dispara incluso cuando la página viene de la caché de navegación:

window.addEventListener('pageshow', function(event) {
    if (event.persisted) {
        location.reload();
    }
});

event.persisted es true precisamente cuando la página se restauró desde el bfcache en vez de cargarse de cero, así que puedes forzar una recarga real solo en ese caso, sin afectar a las cargas normales de la página.

Marta