Lassen Sie uns zunächst verstehen, was Cookies sind:
Cookies sind tatsächlich Daten, die in Ihrer Festplatte vorhanden sind. Diese Daten sind jedoch etwas ganz Besonderes und können nur dem Browser über die Speicherung von Webanwendungen übermittelt werden. Wir können auch die Cookies des Browsers lesen.
Webanwendungen speichern im Allgemeinen nur einige Benutzerinformationen und andere kleine und temporäre Daten in Cookies. Wenn die Datenmenge groß ist, ist sie nicht zum Speichern in Cookies geeignet.
Im Allgemeinen geben Browser ihnen 40 Cookies, um Daten für jede Webanwendung zu speichern, und die Größe jedes Cookies überschreitet nicht 4K (ich habe gehört, dass einige Browser große Daten speichern können. Wir speichern jedoch im Allgemeinen keine solchen großen Daten, da die Datenextraktionseffizienz nicht hoch ist, was die Leistung beeinträchtigt).
Nachdem er so viel Unsinn gesagt hatte, kam der Punkt schließlich
Java greift auf Cookies -Daten in Browseranfragen über die HTTPServletRequest -Schnittstelle zu (lassen Sie mich die ganze Geschichte von Cookies hier verstehen, und der Code wird später gegeben)
Jedes Cookie hat zwei Attribute: Schlüssel und Wert (keine spezifische Formatzeichenfolge, sodass Sie Daten in DIY speichern können. Sie sollten jedoch auf URL -Codierungsprobleme achten. Die Codierungsprobleme werden zusammen mit dem Code später zusammen mit dem Code besprochen).
Wenn wir neue Cookies speichern müssen, können wir eine Cookie -Instanz neu erstellen und sie über httpServletrsponse an den Browser senden und dann lokal speichern
Hier ist eine gemeinsame Klasse für Kekse
/ * * Diese Klasse kann Cookies aus der Browseranforderung extrahieren und verwandte Operationen auf Cookies ausführen Readcookiemap (Anfrage); if (Cookiemap.ContainsKey (Name)) {Cookie Cookie = (Cookie) cookiemap.get (Name); Kekse zurückgeben; } else {return null; }} / ** * Cookies in die Karte einkapseln * * @param request * @return * / private statische Karte <String, Cookie> ReadCookiemap (httpServletRequest Request) {Map <String, Cookie> cookiemap = new Hashmap <String, Cookie> (); Cookie [] Cookies = Request.GetCookies (); if (null! }} return Cookiemap; } / ** * cookies speichern * * @param response * Servlet-Anforderung * @param value * Wert speichern // Multi-Application Sharing Cookie.setPath ("/"); // Wenn der Wert des Keks Chinese enthält, muss das Cookie codiert werden, andernfalls wird der verstümmelte Code generiert. try {urlencoder.encode (Wert, "utf-8"); } catch (unportedenCodingException e) {e.printstacktrace (); } cookie.setMaxage (Zeit); // Fügen Sie das Cookie der Antwort hinzu, damit die Wirkung reagiert.addcookie (Cookie); // Nach dem Addcookie überschreibt der neueste Cookie -Return -Antwort, wenn der Cookie mit demselben Namen bereits existiert. }Mit der oben genannten allgemeinen Klasse können wir neue Cookies lesen und erstellen. Hier möchte ich eines erwähnen: Wenn der Name des neuen Keks bereits existiert, wird er nicht wiederholt hinzugefügt und der vorherige Cookie wird überschrieben.
Wie sieht der Browser die angeforderten Cookies und die zurückgegebenen Cookies an? Nehmen Sie einen Google -Browser für einen albernen
Dann müssen wir möglicherweise Cookies löschen
/** * <P> Ungültige Cookies </p> * <P> Ungültig? 1 löschen. Veraltet 2. nicht veröffentlicht </ p> * @param request * @param antwort * @param list */ private void DeLectCookioName (httpServletRequest Request, httpServletResponse -Antwort, String DeleteKey) wirft NullPoInterException aus {12 MAP <String, Cookie> Cookiemap = ReadCookieMap (ReadCookieMap); cookiemap.keyset ()) {if (key == DeleteKey && key.equals (DeleteKey)) {cookie cookie = cookiemap.get (key); 21 Cookie.SetMaxage (0); // Setzen Sie die Cookie -Gültigkeitszeit auf 0 Cookie.setPath ("/"); // Setzen Sie die Speicherpfadantwort nicht. }}}Beachten Sie, dass das Löschen von Cookies sowohl Zeit- als auch Pfadparameter haben muss, andernfalls können einige Browser sie nicht löschen.
Das obige ist die Sammlung von Javas Daten zum Lesen und Schreiben an Browser -Cookies. Wir werden in Zukunft weiterhin relevante Informationen hinzufügen. Vielen Dank für Ihre Unterstützung für diese Seite!