Gibt es eine andere Art und Weise Ablauf der Sitzung andere als dieseWie überprüft man die Sitzung in Java abgelaufen ist?
session.isNew()
Gibt es eine andere Art und Weise Ablauf der Sitzung andere als dieseWie überprüft man die Sitzung in Java abgelaufen ist?
session.isNew()
eine Klasse definieren, sagen SessionTimeoutIndicator
, die javax.servlet.http.HttpSessionBindingListener
die Schnittstelle implementiert.
Als Nächstes erstellen Sie ein Objekt SessionTimeoutIndicator
und fügen Sie es der Benutzersitzung hinzu. Wenn die Sitzung entfernt wird, wird die Methode SessionTimeoutIndicator.valueUnbound()
von der Servlet-Engine aufgerufen.
Sie können dann valueUnbound()
implementieren, um die erforderliche Operation durchzuführen.
Ich hoffe, es ist jetzt geklärt.
Ja zu überprüfen: eine null
stattdessen kann HttpServletRequest.getSession(false)
und Sie werden
rufen Sie erhalten von eine Sitzung, wenn noch keine aktiv ist.
Sie können einen Lifecycle-Listener (mit HttpSessionListener
) in Ihrem web.xml
definieren. Auf diese Weise können Sie benachrichtigt werden, sobald eine Sitzung in den Staub sticht.
+1 für den zweiten Vorschlag. BTW, es ist gut, es zu benennen, also ist HttpSessionListener der eine. –
Implementierung von 'HttpSessionListener' ist der Weg zu gehen. Klicken Sie einfach auf 'sessionDestroyed()'. – BalusC
Mit session.isNew
können Sie abgelaufene Sitzungen nicht von völlig neuen Sitzungen unterscheiden. Sie können überprüfen, ob die Sitzung abgelaufen ist und/oder mit Zeitüberschreitung:
if (request.getRequestedSessionId() != null
&& !request.isRequestedSessionIdValid()) {
// Session is expired
}
Verwenden getRequestedSessionId
zwischen neuen und bestehenden (gültig/abgelaufen) Sitzungen und verwenden isRequestedSessionIdValid
zu unterscheiden betwheen gültig und neue/abgelaufene Sitzungen zu unterscheiden .
Sie können diesen Code in eine Filter eingeben.
Ich habe diese versucht
HttpSessionListener.sessionDestroyed()
und dieses
if (request.getRequestedSessionId() != null
&& !request.isRequestedSessionIdValid()) {
// Session is expired
}
beide arbeiten, aber nicht zu 100% Prozent Sie wissen, weil es zu zeigen hält „Session abgelaufen“, auch wenn wenn die App zum ersten Mal startet oben. Warum? Danke für die Hilfe.
Mit nur 'HttpSessionListener # sessionDestroyed()' würde die Dinge einfacher machen. – BalusC