Heim > Artikel > Web-Frontend > Sitzungslebenszyklus
Früher habe ich beim Lernen nicht viel aufgepasst, aber heute bin ich zurückgegangen und habe den Lebenszyklus von Session sorgfältig studiert.
Die Sitzung wird auf der Serverseite gespeichert, um zu verhindern, dass sie im Speicher des Servers gespeichert wird (für Hochgeschwindigkeitszugriff), die Sitzung wird erstellt, wenn der Benutzer zum ersten Mal auf den Server zugreift Es ist zu beachten, dass nur beim Zugriff auf JSP, Servlet usw. eine Sitzung erstellt wird. Nur der Zugriff auf statische Ressourcen wie HTML und IMAGE kann nicht aufgerufen werden. getSession(true), um eine Sitzung zu erzwingen.
Wann läuft die Sitzung ab?
1. Der Server löscht die Sitzung, die lange Zeit inaktiv war, aus dem Serverspeicher und die Sitzung wird ungültig. Die Standardablaufzeit der Sitzung in Tomcat beträgt 20 Minuten.
2. Rufen Sie die Invalidate-Methode von Session auf.
Anforderungen an den Sitzungsbrowser:
Obwohl die Sitzung auf dem Server gespeichert wird und für den Client transparent ist, erfordert ihr normaler Betrieb dennoch die Unterstützung des Client-Browsers. Dies liegt daran, dass Session Cookies als Identifikationsmerkmal verwenden muss. Das HTTP-Protokoll ist zustandslos und die Sitzung kann anhand der HTTP-Verbindung nicht feststellen, ob es sich um denselben Client handelt. Daher sendet der Server ein Cookie mit dem Namen JSESSIONID an den Client-Browser und sein Wert ist die ID der Sitzung (d. h. HttpSession.getId() Rückgabewert). Session verwendet dieses Cookie, um festzustellen, ob es sich um denselben Benutzer handelt.
Dieses Cookie wird automatisch vom Server generiert. Sein maxAge-Attribut ist im Allgemeinen -1, was bedeutet, dass es nur im aktuellen Browser gültig ist und nicht zwischen Browserfenstern geteilt wird. Es wird ungültig, wenn der Browser geschlossen wird . Wenn also zwei Browserfenster auf demselben Computer auf den Server zugreifen, werden zwei unterschiedliche Sitzungen generiert. Ausgenommen sind jedoch neue Fenster, die durch Links, Skripte usw. innerhalb des Browserfensters geöffnet werden (d. h. Fenster, die nicht durch Doppelklicken auf das Desktop-Browsersymbol usw. geöffnet werden). Diese Art von untergeordnetem Fenster teilt das Cookie des übergeordneten Fensters und teilt daher eine Sitzung.
Hinweis: Ein neu geöffnetes Browserfenster generiert eine neue Sitzung, außer bei untergeordneten Fenstern. Untergeordnete Fenster teilen sich die Sitzung des übergeordneten Fensters. Wenn Sie beispielsweise mit der rechten Maustaste auf einen Link klicken und im Popup-Kontextmenü „In neuem Fenster öffnen“ auswählen, kann das untergeordnete Fenster auf die Sitzung des übergeordneten Fensters zugreifen.
Was passiert, wenn der Client-Browser die Cookie-Funktion deaktiviert oder keine Cookies unterstützt? Beispielsweise unterstützt die überwiegende Mehrheit der mobilen Browser keine Cookies. Java Web bietet eine weitere Lösung: Umschreiben von URL-Adressen.
Das Umschreiben von URL-Adressen ist eine Lösung für Clients, die keine Cookies unterstützen. Das Prinzip des Umschreibens von URL-Adressen besteht darin, die Sitzungs-ID-Informationen des Benutzers in die URL-Adresse umzuschreiben. Der Server kann die neu geschriebene URL analysieren, um die Sitzungs-ID zu erhalten. Auf diese Weise kann die Sitzung zum Aufzeichnen des Benutzerstatus verwendet werden, auch wenn der Client keine Cookies unterstützt. Die HttpServletResponse-Klasse stellt encodeURL (String-URL) bereit, um das Umschreiben von URL-Adressen zu implementieren. Diese Methode ermittelt automatisch, ob der Client Cookies unterstützt. Wenn der Client Cookies unterstützt, wird die URL intakt ausgegeben. Wenn der Client keine Cookies unterstützt, wird die Sitzungs-ID des Benutzers in die URL umgeschrieben.
Hinweis: TOMCAT bestimmt, ob der Client-Browser Cookies unterstützt, basierend darauf, ob die Anfrage Cookies enthält. Obwohl der Client möglicherweise Cookies unterstützt, enthält die neu geschriebene URL-Adresse weiterhin jsessionid, da bei der ersten Anfrage keine Cookies übertragen werden (da keine Cookies übertragen werden müssen). Beim zweiten Zugriff hat der Server das Cookie bereits in den Browser geschrieben, sodass die URL-Adresse nach dem Umschreiben keine jsessionid enthält.
Das obige ist der detaillierte Inhalt vonSitzungslebenszyklus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!