Wenn Sie das Neuschreiben von URL verwenden wollen, um den Sitzungsstatus zu verwalten, dürfen Sie keine Links zu Teilen Ihrer Web-Anwendung in unstrukturierten HTML-Dateien integrieren. Diese Einschränkung ist erforderlich, da in unstrukturierten HTML-Dateien keine URL-Codierung verwendet werden kann. Um den Status mit Hilfe des Neuschreibens von URL zu verwalten, muss jede Seite, die der Benutzer während der Sitzung anfordert, über Code verfügen, die vom Java-Interpreter verarbeitet werden kann. Wenn Ihre Web-Anwendung und Teile der Site, auf die der Benutzer während der Sitzung zugreifen könnte, über unstrukturierte HTML-Dateien verfügen, konvertieren Sie diese in JSP-Dateien. Dies hat einen Einfluss auf das Ausgabeprogramm der Anwendung, da die Verwaltung von Sitzungen durch Neuschreiben von URL (im Gegensatz zur Sitzungsverwaltung mit Cookies) erfordert, dass jede JSP-Schablone in der Anwendung URL-Codierung für jedes HREF-Attribut in <A>-Befehlen verwendet. Die Sitzung geht verloren, wenn mindestens eine JSP-Schablone in der Anwendung nicht die Methode encodeURL(String url) oder encodeRedirectURL(String url) aufruft.
Beim Neuschreiben von URL muss an allen Links, die an den Browser zurückgeschickt oder umgeleitet werden, die Sitzungs-ID angehängt sein. Beispiel: Die Webseiten-Link
<a href="store/catalog">
wird neugeschrieben als
<a href="store/catalog;$jsessionid$DA32242SSGE2">
Wenn der Benutzer diese Link anklickt, wird die neu geschriebene Form des URL als Teil der Client-Anforderung an den Server gesendet. Die Servlet-Steuerkomponente erkennt ;$jsessionid$DA32242SSGE2 als Sitzungs-ID und speichert sie, um das richtige HttpSession-Objekt für diesen Benutzer abrufen zu können.
Das folgende Beispiel zeigt, wie Java-Code in eine JSP-Datei eingebettet werden kann:
<%
response.encodeURL ("/store/catalog");
%>
Um die an den Browser zurückgeschickten URLs neu zu schrieben, rufen Sie die Methode encodeURL() in Ihrer JSP-Schablone auf, bevor Sie die URL an den Ausgabedatenstrom senden. Beispiel: Hat eine JSP-Schablone, die kein Neuschreiben für URL verwendet, Folgendes:
out.println("<a href=\"/store/catalog\">catalog</a>")"
ersetzen Sie es durch Folgendes:
out.println("<a href=\"");
out.println(response.encodeURL ("/store/catalog"));
out.println("\">catalog</a>");
Um die umgeleiteten URLs neu zu schreiben, rufen Sie die Methode encodeRedirctURL() auf. Beispielsweise, wenn Ihre JSP-Schablone Folgendes hat:
response.sendRedirect (response.encodeRedirectURL ("http://myhost/store/catalog"));
Die Methoden encodeURL() und encodeRedirectURL() sind Teil des HttpServletResponse-Objekts. In beiden Fällen prüfen diese Aufrufe, ob das Neuschreiben für URL konfiguriert ist, bevor URLs codiert werden. Ist das Neuschreiben nicht konfiguriert, werden jeweils die ursprünglichen URLs zurückgeschickt.
Um Formulare zur Übergabe zu schreiben, rufen Sie response.encodeURL("Logon"); im Befehl ACTION der Formularschablone auf. Beispiel:
String strLoginPost = response.encodeURL("Logon");
<FORM NAME="Logon" METHOD="post" ACTION= <%= strLoginPost %> >
...
</FORM>
Die Eingangsseite (normalerweise die Homepage) kann keine Rahmen enthalten. Wenn Sie in Ihrem Geschäft Rahmen verwenden wollen, können Sie als Eingangsseite zum Geschäft eine Nicht-Rahmenseite mit einem Link zum Geschäft verwenden. Wenn das Geschäft jedoch Rahmen verwendet, und ein Kunde versucht, auf diese Seiten mit Rahmen zuzugreifen, ohne zunächst die Eingangsseite zu verwenden, geht die Sitzung möglicherweise verloren. Kunden können ihre Sitzung auch dann verlieren, wenn sie den Knopf Zurück (nur mit Rahmen) verwenden, um zur Eingangsseite zurückzukehren und diese zu aktualisieren. Beim Aktualisieren der Eingangsseite erhalten Sie eine neue Sitzungs-ID. Ein Link zurück zur Eingangsseite als Alternative zum Knopf Zurück ist erforderlich, um solche Sitzungsverluste zu verhindern.
![]() |