Ich habe beim Lernen vorher nicht viel darauf geachtet, aber heute bin ich zurückgegangen und habe den Lebenszyklus der Sitzung sorgfältig studiert. Sitzungen werden auf der Serverseite gespeichert, und um zu verhindern, dass sie im Serverspeicher sind (für Hochgeschwindigkeitszugriff), erstellt Sessinon beim ersten Zugriff des Nutzers auf den Server.Beachten Sie, dass nur der Zugriff auf JSP, Servlet und andere Programme eine Sitzung erzeugt, und nur der Zugriff auf statische Ressourcen wie HTML und IMAGE keine Sitzung erzeugt.
Wann läuft eine Sitzung ab?
1. Der Server löscht die Sitzung aus dem Serverspeicher, der lange Zeit inaktiv war, und die Sitzung ist ungültig. Die Standard-Ablaufzeit einer Sitzung in Tomcat beträgt 20 Minuten.
2. Rufen Sie die Ungültigkeitsmethode der Sitzung auf.
Sitzungsanforderungen für Browser:
Obwohl die Sitzung auf dem Server gespeichert und für den Client transparent ist, erfordert ihr normaler Betrieb dennoch die Unterstützung des Browsers des Clients. Das liegt daran, dass Session Cookies als Identifikator verwenden muss. Das HTTP-Protokoll ist zustandslos, und die Sitzung kann nicht durch die HTTP-Verbindung beurteilt werden, um zu bestimmen, ob es sich um denselben Kunden handelt, daher sendet der Server einen Cookie namens JSESSIONID an den Client-Browser, der den Wert der ID der Sitzung enthält (also den Rückgabewert von HttpSession.getId()). Session verwendet das Cookie, um zu erkennen, ob es sich um denselben Nutzer handelt.
Dieses Cookie wird automatisch vom Server generiert, und sein maxAge-Attribut ist in der Regel -1, was bedeutet, dass es nur im aktuellen Browser gültig ist, nicht zwischen Browserfenstern geteilt wird und auch nicht gültig ist, wenn der Browser geschlossen ist. Daher werden bei zwei Browserfenstern auf demselben Rechner auf den Server zwei verschiedene Sitzungen generiert. Außer für neue Fenster, die durch Links, Skripte usw. im Browserfenster geöffnet werden (also keine Fenster, die durch Doppelklick auf Desktop-Browser-Icons usw. geöffnet werden). Diese Kinderfenster teilen sich das Cookie des Elternfensters und damit eine Sitzung.
Hinweis: Neue Sitzungen werden in neu geöffneten Browserfenstern generiert, mit Ausnahme von Unterfenstern. Das Kindfenster teilt die Sitzung des Elternfensters. Wenn man beispielsweise mit der rechten Maustaste auf einen Link klickt und im erscheinenden Verknüpfungsmenü "Im neuen Fenster öffnen" auswählt, kann das untergeordnete Fenster auf die Sitzung des übergeordneten Fensters zugreifen.
Was ist, wenn der Client-Browser Cookies deaktiviert oder keine Cookies unterstützt? Zum Beispiel unterstützen die überwiegende Mehrheit der mobilen Browser keine Cookies. Java Web bietet eine weitere Lösung: das Umschreiben von URL-Adressen. Das Umschreiben von URL-Adressen ist eine Lösung für Clients, die keine Cookies unterstützen. Das Prinzip der URL-Adressumschreibung besteht darin, die ID-Informationen der Benutzersitzung auf die URL-Adresse umzuschreiben. Der Server kann die umgeschriebene URL parsen, um die Session-ID zu erhalten. So kann die Sitzung, selbst wenn der Client keine Cookies unterstützt, genutzt werden, um den Benutzerzustand aufzuzeichnen. Die Klasse HttpServletResponse bietet encodeURL (String-URL) zur Implementierung der URL-Adressumschreibung, die automatisch bestimmt, ob der Client Cookies unterstützt. Wenn der Client Cookies unterstützt, wird die URL so ausgegeben, wie sie ist. Wenn der Client keine Cookies unterstützt, wird die ID der Benutzersitzung in die URL umgeschrieben.
Hinweis: TOMCAT bestimmt, ob ein Client-Browser Cookies unterstützt, basierend darauf, ob ein Cookie in der Anfrage enthalten ist. Obwohl der Client Cookies unterstützen kann, da bei der ersten Anfrage keine Cookies übertragen werden (da es keine Cookies gibt), wird die umgeschriebene URL-Adresse weiterhin jsessionid in der Adresse enthalten. Der Server hat beim zweiten Besuch bereits ein Cookie im Browser geschrieben, sodass die neu geschriebene URL-Adresse keine jsessionid in der Adresse enthalten ist.
|