Heim > Java > javaLernprogramm > Verwendung von Cookies und Sitzungstechnologie in Java

Verwendung von Cookies und Sitzungstechnologie in Java

王林
Freigeben: 2023-04-23 18:55:07
nach vorne
1262 Leute haben es durchsucht

    Lösung für das zustandslose HTTP-Protokoll:

    HTTP ist ein zustandsloses Protokoll. Bei zustandslosen Protokollen ist es nicht erforderlich, dass der Server über mehrere Anfragen hinweg Informationen oder Status über jeden Benutzer behält.

    Aber einige Webanwendungen müssen möglicherweise den Fortschritt des Benutzers von einer Seite zur anderen verfolgen, beispielsweise wenn der Webserver den Webseiteninhalt für den Benutzer anpassen muss. Zu den Lösungen für diese Situationen gehören:

    • Verwendung von HTTP-Cookies.

    • Serverseitige Sitzung.

    • Versteckte Variable (wenn die aktuelle Seite ein Formular enthält)

    • URL-Umschreibung mit URI-codierten Parametern, zum Beispiel /index.php?session_id=some_unique_session_code.

    Der Grund dafür, das Protokoll zustandslos zu machen, besteht darin, dass der Server den Status mehrerer Anfragen nicht verfolgen muss, nicht, dass er dies nicht tun kann, wenn er möchte. Dies vereinfacht den Vertrag zwischen Client und Server und minimiert in vielen Fällen (z. B. bei der Bereitstellung statischer Daten über ein CDN) die zu übertragende Datenmenge. Wenn der Server den Zustand des Client-Zugriffs aufrechterhalten muss, wird die Struktur zum Erstellen und Beantworten von Anforderungen komplexer. Tatsächlich ist die Einfachheit des Modells eines seiner größten Merkmale.

    1. Das Konzept von Cookies

    Cookie ist eine Sitzungstechnologie, die auf dem Server erstellt und verwaltet wird, aber auf der Browserseite gespeichert wird. Cookie-Anwendungsszenarien: Benutzername und Passwort merken, keine Anmeldung erforderlich für sieben Tage

    2. Erstellung von Cookies

    //创建cookie
    Cookie cookie = new Cookie("username", "admin");
    //将cookie响应到浏览器
    response.addCookie(cookie);
    Nach dem Login kopieren

    Wie Cookies in Nachrichten dargestellt werden:

    Wenn ein Cookie auf dem Server erstellt und an den Browser geantwortet wird, erscheint die Antwortnachricht: Set-Cookie: Benutzername=Administrator

    Jedes Mal, wenn der Browser danach eine Anfrage an den Server sendet, trägt er dieses Cookie und erscheint in der Anfragenachricht: Cookie: Benutzername=Administrator

    Nachdem der Browser auf das Cookie geantwortet hat, wird es gespeichert im laufenden Speicher des Browsers, wenn der Browser geschlossen wird, wird der aktuelle Speicher des Browsers freigegeben, sodass die Cookies gelöscht werden. Daher beträgt die Standardgültigkeitszeit der Sitzung vom Zeitpunkt des Öffnens des Browsers bis zum Zeitpunkt des Schließens des Browsers. Wertformat, Sie müssen nur verschiedene mit demselben Schlüssel erstellen. Wenn Sie auf den Browser antworten, wird der Wert des entsprechenden Cookies überschrieben

    b>Verwenden Sie cookie.setValue()

    //获取浏览器发送请求所携带的所有cookie
    Cookie[] cookies = request.getCookies();
    if(cookies != null){
        for (Cookie cookie : cookies) {
            System.out.println(cookie.getName() + "," + cookie.getValue());
        }
    }
    Nach dem Login kopieren

    5 Das Cookie

    Nachdem der Browser auf das Cookie reagiert hat, wird es im laufenden Speicher des Browsers gespeichert. Wenn der Browser geschlossen wird, wird der laufende Speicher des Browsers freigegeben, sodass das Cookie gelöscht wird. Daher beträgt die Standardgültigkeitszeit der Sitzung vom Zeitpunkt des Öffnens des Browsers bis zum Zeitpunkt des Schließens des Browsers

    Aber die Gültigkeitszeit des Cookies kann über cookie.setMaxAge()

    a> festgelegt werden Zeit ist eine negative Ganzzahl, es gibt keine Auswirkung, d. h. die Gültigkeitszeit. Öffnen Sie den Browser, um den Browser zu schließen.

    b> Die festgelegte Gültigkeitszeit ist eine positive Ganzzahl.

    Wenn die Gültigkeitszeit weniger als eine Sitzung beträgt, ist das Cookie abgelaufen. Nach der angegebenen Zeit wird es automatisch aus dem laufenden Speicher gelöscht.

    Wenn die effektive Zeit größer als eine Sitzung ist, wann Der Browser wird geschlossen, die Daten im Cookie werden auf der Festplatte gespeichert. Wenn der Browser erneut geöffnet wird, werden die Daten in der Festplatte wiederhergestellt.

    6. Legen Sie den effektiven Pfad des Cookies fest cookie.setPath();

    Wenn das Cookie erstellt und dem Browser geantwortet wird, wird das Cookie nur beim Zugriff auf den angegebenen Pfad übertragen

    1 der Sitzung

    Sitzung ist eine Sitzungstechnologie, die auf dem Server erstellt und verwaltet und auf der Serverseite gespeichert wird

    Sitzungsanwendungsszenarien: Aufzeichnen des Anmeldestatus des Benutzers

    2 Beobachten Sie die Änderungen in der Nachricht, wenn Sie die Sitzung erhalten

    Rufen Sie das Sitzungsobjekt über request.getSession() ab

    Wenn in dieser Sitzung zum ersten Mal auf request.getSession() zugegriffen wird, um das Sitzungsobjekt abzurufen, wird in der Antwortnachricht ein Schlüssel angezeigt. Es handelt sich um ein JSESSIONID-Cookie

    Alle Sobald eine Anfrage über den Browser an den Server gesendet wird, enthält dieser dieses JSESSIONID-Cookie

    Verwenden Sie auch beim Zugriff auf den Server request.getSession(), um das Sitzungsobjekt erneut abzurufen, solange JSESSIONID im Cookie der Anforderungsnachricht vorhanden ist , dieses Cookie wird nicht mehr in der Antwortnachricht angezeigt

    3 Das Sitzungsprinzip

    F:

    Das Sitzungsprinzip?

    Welche Beziehung besteht zwischen Sitzung und Cookies?

    Warum werden die gleichen Sitzungen in einer Sitzung erreicht?

    Antwort:

    Wenn die Sitzung über request.getSession() abgerufen wird, wird das Cookie mit dem Schlüssel JSESSIONID in der Anforderungsnachricht abgerufen.

    Wenn in der Anforderungsnachricht kein Cookie mit dem Schlüssel JSESSIONID vorhanden ist dass die aktuelle Sitzung gerade begonnen hat, ist das erste Mal, dass das Sitzungsobjekt in der aktuellen Sitzung abgerufen wird. Zu diesem Zeitpunkt wird ein Sitzungsobjekt innerhalb des Servers erstellt und ein Cookie mit dem Schlüssel JSESSIONID und dem Wert einer zufälligen Folge von UUID erstellt. Anschließend wird das erstellte Sitzungsobjekt in einer vom Server verwalteten Kartensammlung gespeichert. mit der zufälligen UUID-Sequenz als Schlüssel, unter Verwendung des Sitzungsobjekts als Wert und antwortet schließlich auf das Cookie von JSESSIONID an den Browser

    若请求报文中存在键为JSESSIONID的cookie,此时获取该cookie的值,即UUID随机序列,以UUID随机序列为键,从服务器所维护的map集合中就可以获取唯一的session对象

    4、session的常用方法

    4.1、session存在域对象的数据

    void setAttribute(String name, Object value);

    Object getAttribute(String name);

    void removeAttribute(String name);

    4.2、设置session的时效

    session的时效指在指定时间内,若没有对session进行任何的操作,此时session会自动失效

    a>通过web.xml设置,单位是分钟

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
    Nach dem Login kopieren

    b>通过session.setMaxInactiveInterval()设置,单位是秒

    session.setMaxInactiveInterval(1800);
    Nach dem Login kopieren
    4.3、强制使session失效

    session.invalidate()

    5、session的钝化和活化

    session的钝化指服务器关闭,但是浏览器没有关闭,此时session中的数据会被序列化到磁盘上

    session的活化指服务器启动,并且浏览器仍然没有关闭,此时会将序列化到磁盘上的数据重新加载到内存中

    注意:若session中存储的是实体类对象,此时若要钝化,则该实体类和该实体类的成员变量也都要实现序列化的接口

    三、cookie和session的区别

    1、cookie存储在浏览器端,session存储在服务器端,因此cookie相对而言不安全

    2、cookie只能存储字符串类型的键值对,session可以存储任意类型的数据,因此若存储相同的数据,cookie可能会产生大量的cookie

    3、由于每次浏览器发送请求都会携带cookie,若有大量的cookie,就会造成网络负担

    Das obige ist der detaillierte Inhalt vonVerwendung von Cookies und Sitzungstechnologie in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:yisu.com
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage