¿Hay alguna otra manera de comprobar expiración de sesión distinta de esta¿cómo comprobar la sesión ha caducado en java?
session.isNew()
¿Hay alguna otra manera de comprobar expiración de sesión distinta de esta¿cómo comprobar la sesión ha caducado en java?
session.isNew()
definir una clase, dicen SessionTimeoutIndicator
, que implementa la interfaz javax.servlet.http.HttpSessionBindingListener
.
A continuación, cree un objeto SessionTimeoutIndicator
y agréguelo a la sesión del usuario.
Cuando se elimina la sesión, el motor Servlet llamará al método SessionTimeoutIndicator.valueUnbound()
.
A continuación, puede implementar valueUnbound()
para realizar la operación requerida.
Espero que se borre ahora.
Sí:
puede llamar HttpServletRequest.getSession(false)
y obtendrá un lugar de null
una sesión si no hay una activa ya.
puede definir un detector de ciclo de vida (usando HttpSessionListener
) en su web.xml
. De esa forma, puede recibir una notificación en el momento en que una sesión muerde el polvo.
+1 para la segunda sugerencia. Por cierto, es bueno nombrarlo, por lo que HttpSessionListener es el elegido. –
Implementar 'HttpSessionListener' es el camino a seguir. Solo enganche 'sessionDestroyed()'. – BalusC
Con session.isNew
no puede distinguir sesiones caducadas de sesiones completamente nuevas. Puede comprobar si la sesión ha expirado y/o el tiempo de espera con:
if (request.getRequestedSessionId() != null
&& !request.isRequestedSessionIdValid()) {
// Session is expired
}
Uso getRequestedSessionId
distinguir entre sesiones nuevas y existentes (válido/espirado), y el uso de isRequestedSessionIdValid
distinguir betwheen válido y nuevas sesiones/caducados .
Puede poner este código en Filter.
He intentado esto
HttpSessionListener.sessionDestroyed()
y esto
if (request.getRequestedSessionId() != null
&& !request.isRequestedSessionIdValid()) {
// Session is expired
}
tanto trabajo, pero no al 100% por ciento sabes, ya que mantiene en mostrar "sesión ha finalizado", aunque cuando la aplicación inicia por primera vez arriba. ¿Por qué? Gracias por la ayuda.
Simplemente usando 'HttpSessionListener # sessionDestroyed()' haría las cosas más fáciles. – BalusC