Der gesamte Prozess, bei dem der Client eine Verbindung mit dem Server herstellt, eine Anfrage sendet, bis der Server auf die Anfrage des Clients antwortet, wird als Sitzung bezeichnet.
Empfohlener Kurs: Java-Tutorial.
Die Kommunikation zwischen dem Browser und dem Server erfolgt über das HTTP-Protokoll, und das HTTP-Protokoll ist ein „zustandsloses“ Protokoll, das keine Kundeninformationen, also die Verbindung, speichern kann Nachdem eine Antwort abgeschlossen ist, wird die Verbindung getrennt und die nächste Anfrage muss erneut verbunden werden. Wenn ein Benutzer zwischen mehreren Seiten auf derselben Website wechselt, kann nicht festgestellt werden, ob die Sitzungsverfolgungstechnologie diese Anforderung erfüllen kann.
Cookie
Bei der Beantwortung einer Anfrage kann der Server durch die Antwortinformationen einige Daten auf dem Client in Form von „Schlüssel-Wert“-Paaren speichern. Wenn der Browser erneut auf dieselbe Anwendung zugreift, wird das ursprüngliche Cookie mit der Sitzungs-ID über die Anforderungsinformationen an den Server übermittelt. Der Netzwerkserver stellt jeden Client dar, indem er die eindeutige Sitzungs-ID identifiziert und so den nächsten Schritt dieser Client-Anfrage identifiziert.
Cookie ist kein integriertes Objekt, Sie müssen selbst eine Instanz von Cookie erstellen. Es handelt sich um Textinformationen, die vom Server an den Client geschrieben werden. Diese Informationen können geändert werden, sodass das Cookie im Allgemeinen einige nicht vertrauliche Informationen speichert. Wenn der Client den Server erneut anfordert, wird das Cookie an den Server gesendet die Form eines Anforderungsheaders. Zu diesem Zeitpunkt kann der Server unterscheiden, wer zugreift.
Cookies, die zur Sitzungsverfolgung verwendet werden, werden Sitzungscookies genannt. Der Cookie-Name für die Sitzungsverfolgung in der Servlet-Spezifikation muss JSESSIONID sein, der im Speicher des Browsers gespeichert wird.
Cookies können verwendet werden, um den Sitzungsstatus des Benutzers aufrechtzuerhalten, aber Cookie-Informationen werden auf dem Client gespeichert, was ein großes Sicherheitsrisiko darstellt, und allgemeine Browser haben strenge Beschränkungen hinsichtlich der Anzahl von Cookies und der Datengröße. In Webanwendungen wird der Sitzungsstatus im Allgemeinen über das HttpSession-Objekt verwaltet.
Cookie cookie = new Cookie("键", "值"); //创建cookie cookie.setMaxAge(60*60*24); //设置cookie的有效期 cookie.setPath("/"); //设置cookie的有效范围(路径) response.addCookie(cookie); //将cookie写入到客户端
Session
Die Sitzung wird auf der Serverseite gespeichert, was sicherer ist. Jeder Benutzer hat eine andere Sitzung, die nicht von mehreren Benutzern gemeinsam genutzt werden kann.
Sitzung basiert auf Cookies. Wenn Cookies deaktiviert sind, ist die Sitzung ebenfalls ungültig.
Sitzungstechnologie ist eine serverseitige Lösung, die den Status über den Server verwaltet. In Java wird es durch Aufrufen der getSession-Methode von HttpServletRequest erstellt (mit true als Parameter). Beim Erstellen einer Sitzung generiert der Server eine eindeutige Sitzungs-ID. Diese Sitzungs-ID wird verwendet, um die erstellte Sitzung in nachfolgenden Anforderungen wiederherzustellen. Nachdem die Sitzung erstellt wurde, können Sie die sitzungsbezogene Methode zum Hinzufügen von Inhalten aufrufen zur Sitzung, und diese Inhalte werden nur auf dem Server gespeichert und nur die Sitzungs-ID wird an den Client gesendet. Wenn der Client erneut eine Anfrage sendet, wird diese Sitzungs-ID angezeigt und der Server findet die entsprechende Sitzung basierend auf die Sitzungs-ID und verwenden Sie sie erneut. Durch die Formalisierung eines solchen Prozesses bleibt der Status des Benutzers erhalten.
session.setAttribute(String name,Object obj); //往session中存放内容(通过键和值的形式) session.getAtrribute(String name); //通过键从session中获取内容 session.removeAttribute(String name); //把存储在session中的对象移除 session.invalidate(); //销毁session
Verstecktes Formularfeld
Verstecktes Formularfeld dient zum Hinzufügen der Sitzungs-ID zur verborgenen Form von HTML (Eingabetyp ausgeblendet). Umleiten und weiterleiten
Informationen über übertragen. Es wird über ein Formular an den Server übermittelt, zeigt sich jedoch nicht selbst.
Zum Beispiel erhält das zweite Formular den Inhalt des ersten Formulars, akzeptiert den Inhalt des ersten Formulars als ausgeblendetes Feld (Textfeldtyp ist ausgeblendet) und übergibt ihn erneut an die Mitte des dritten Formulars. Laienhaft ausgedrückt ist die Reihenfolge der Anfragen wie folgt: Formular 1 - - > Formular 2 - - > Formular 3 muss jedoch den von Formular 1 übermittelten Inhalt verwenden, daher wird Formular 2 als Übergang benötigt . Der Inhalt wird als verstecktes Feld gespeichert, bevor er an Formular drei übergeben wird.
URL neu schreiben
Kodieren Sie die Sitzungs-ID in der URL. Beispiel: counter.jjsp;jsessionnid=be8d697876787876befdbde898789098980 Auf diese Weise kann eine Sitzungsverfolgung auch dann erreicht werden, wenn der Browser keine Cookies unterstützt.
Für die URL-Replikation extrahiert der Server die Sitzungs-ID aus dem angeforderten URI und ordnet die Anfrage der entsprechenden Sitzung zu. Beim Zugriff auf die Sitzungsdaten wird die JSP-Seite dann auf die gleiche Weise verarbeitet wie bei der Verwendung von Cookies zur Sitzungsverfolgung IDs auf genau die gleiche Weise. Daher hängt die Implementierung der Sitzung von der Cookie- oder URL-Kopiertechnologie ab.
String sessionId = request.getRequestedSessionId(); //获得sessionId
Schreiben Sie den URL-Wert über die encodeURL (StringURL) des Antwortobjekts neu:
<a href="<%=response.encodeURL("index.jsp") %>"> index页面</a>
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 Methode encodeURL() aufgerufen und die Sitzungs-ID des Benutzers wird automatisch in die URL umgeschrieben. Die Ausgabe nach dem Umschreiben könnte wie folgt aussehen:
a href="index.jsp?jsessionid=0E0C61100AEB06DE6A95EB1CD1DA8158">index页面</a>
Die HttpServletResponse-Schnittstelle definiert zwei Methoden zum Umschreiben von URLs:
encodeURL-Methode, die für Hyperlinks verwendet wird. Schreiben Sie die in der festgelegte URL neu Das Aktionsattribut des Formulars
encodeRedirectURL-Methode wird verwendet, um die an die HttpServletResponse.sendRedirect()-Methode
übergebene URL neu zu schreibenSie entscheiden, ob die URL neu geschrieben werden soll, basierend darauf, ob die Anforderungsnachricht das Cookie-Header-Feld enthält. Durch Übergabe der URL als Parameter an diese beiden Methoden können sie das Umschreiben der URL abschließen und den Parameter jsessionid und seinen Wert nach der URL hinzufügen. Sie können die Cookies des Browsers deaktivieren und dann ein Experiment durchführen, um zu überprüfen, ob hinter der URL in der Quelldatei der Webseite ein jsessionid-Parameter und sein Wert vorhanden sind.
Das obige ist der detaillierte Inhalt vonWas ist eine JSP/Servlet-Sitzung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!