Dieser Artikel erklärt ausführlich:
1. Demonstrieren Sie die grundlegende Verwendung von Keksen
2. Demonstrieren Sie die Zugangsberechtigungen von Cookies
3. Demonstrieren Sie die Keksdeletion
4.. Verwenden Sie Cookies, um das letzte Mal anzuzeigen
5. Verwenden Sie Cookie Technology, um mehrere Bilder anzuzeigen, die kürzlich von Benutzern durchsucht wurden
6. Testen Sie, wie viele Kekse und wie groß ist der maximale Keks des Firefox -Browsers?
1. Demonstrieren Sie die grundlegende Verwendung von Keksen
index.jsp:
<%@ page Language = "java" import = "java.util. href = "cookiedemo"> Basisgebrauch von Cookie </a> <br/> </body> </html>
web.xml:
<? xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <servlet> <servlet-name>CookieDemo</servlet-name> <Servlet-Class> cn.hncu.servlets.cookiedemo </Servlet-Klasse> </Servlet> <Servlet-Mapping> <Servlet-Name> Cookiedemo </Servlet-NAME> <URL-Muster>/Cookiedemo </url-pattern> </servlet-maping> <Welcome-File-LIST> -File> Index. </Welcome-File-List> </web-App>
Cookiedemo.java:
Paket cn.hncu.servlets; import Java.io.ioxception; import Java.io.printwriter; import Java.net.urdecoder; import Java.net.urlencoder; Import Java.util.Random; javax.servlet.http.httpServlet; import javax.servlet.http.httpsertRequest; import Javax.servlet.http.httpServletResponse; öffentliche Klasse Cookiedemo erweitert HttpServlet. ServleTexception, ioException {response.setContentType ("text/html; charSet = utf-8"); Printwriter out = response.getWriter (); // Cookies in den Client Random r = new random () schreiben; int n = R.Nextint (100); String name = "Jack"; // Das Format von Cookie: key = value cookie c = neuer Cookie ("Name", Name+n); C.SetMaxage (60*60); // Setzen Sie die Ablaufzeit in Sekunden C.SetPath (request.getContextPath ()); // Dieser Pfad ist:/Projektname // Im Cookie -Mechanismus werden Berechtigungen über Pfad gesteuert. Nur Servlets mit dem gleichen Pfad wie der Pfad oder der Unterfad können auf das Cookie zugreifen // Wenn der Pfad eines Cookies als Projekt Root -Verzeichnis festgelegt wird, können alle Servlets unter dem Projekt auf die Antwort zugreifen. // Dieser Demonstrations -Keks hat chinesische String str = "Ich bringe Chinesisch"; STR = urlencoder.encode (str, "utf-8"); // Setzen Sie die Codierung in Chinesisch! ! ! Urlencode codieren Cookie cstr = neuer Cookie ("Str", str); // Wenn SetMaxage nicht festgelegt ist, läuft der Browser aus, sobald er geschlossen ist. response.addcookie (cstr); // Cookie CS [] = Request.GetCookies (); // Cookie if (cs! = Null) {// Vorsicht von (Cookie CC: CS) {String name2 = cc.getName () lesen; String val = cc.getValue (); val = urdecoder.decode (val, "utf-8"); // Es stellt sich heraus, dass es so kodiert wird! Chinesische Dekodierung, ASCII ist so wie es ist! out.print (name2+"="+val+"<br/>"); }} out.print ("Cook erfolgreich gespeichert!"); }}Demonstrationsergebnisse:
Auf dem ersten Klick! Die Sitzung wird das nächste Mal besprochen! Tomcat wird automatisch generiert und an den Client gesendet!
Beim wieder eingeben!
Name+n Da der n hinterher nach dem Zufallsprinzip generiert wird, zeigt dieser Klick immer die Informationen der vorherigen an!
2. Demonstrieren Sie die Zugangsberechtigungen von Cookies
index.jsp:
<a href="servlet/CookieDemo2">Demonstrate the access permissions of cookies</a><br/>web.xml:<servlet> <servlet-name>CookieDemo2</servlet-name> <servlet-class>cn.hncu.servlets.CookieDemo2</servlet-class> </servlet> <servlet-mapping> <Servlet-name> cookiedemo2 </servlet-name> <URL-Muster>/Servlet/cookiedemo2 </url-pattern> </servlet-Mapping>
Cookiedemo2.java:
Paket cn.hncu.servlets; import Java.io.ioxception; import Java.io.printwriter; import Java.util.random; import Javax.servlet.servletException; import Javax.servlet.http.cookie; Import Javax.Servlet.Http. javax.servlet.http.httpServletRequest; import Javax.servlet.http.httpServletResponse; Public Class Cookiedemo2 erweitert HttpServlet {public void dodget (httpletrequestanfrage, htttpserdresspon Antwort.SetContentType ("text/html; charSet = utf-8"); Printwriter out = response.getWriter (); // Cookies in den Client Random r = new random () schreiben; int n = R.Nextint (100); Cookie C = neues Cookie ("Alter", "+n); C.SetMaxage (60*60); // Ablaufzeit C.SetPath (request.getContextPath ()+"/servlet/cookiedemo2"); // Im Cookie-Mechanismus werden die Berechtigungen durch Pfad gesteuert //, da der URL-Muster von CookieMo das Projekt-Root-Verzeichnis ist. ! ! Wenn der Pfad unterschiedlich ist, ist das Cookie ein anderes Objekt, was bedeutet, dass der Cookie mit demselben Namen nicht überlappt wird! response.addcookie (c); // Cookies lesen, die vom Client Cookie CS [] = Request.GetCookies () gesendet werden; if (cs! = null) {for (Cookie cc: cs) {String name = cc.getName (); String val = cc.getValue (); out.print ("22222-"+name+"="+val+"<br/>"); }} out.print ("Cookie wird erfolgreich gespeichert!"); }}Demonstrationsergebnisse:
Geben Sie zuerst die Seite Cookiedemo2 ein, um auf den Namen Cookiedemo-Namens-Cookie zuzugreifen
Geben Sie die Cookiedemo-Seite erneut ein und können Sie nicht auf den Age-Cookie von Cookiedemo2 zugreifen
3. Demonstrieren Sie die Keksdeletion
index.jsp:
<a href = "servlet/delcookiedemo"> Demonstrieren Sie die Löschung von Cookies </a> <br/>
web.xml:
<servlet> <Servlet-name> delcookiedemo </servlet-name> <Servlet-Klasse> cn.hncu.servlets.delcookiedemo </Servlet-Class> </Servlet> <Servlet-Mapping> <Servlet-name> delcookiedemo </servlet-name> <url-patter>/delcookiedemo </servlet-mapplet>/delcookiedemo </hurl-patter>/delcookiedemo </hurl-patter>/delcookiedemo </hurl-patter>/delcookiedemo </hurl-patter>
Delcookiedemo.java:
Paket cn.hncu.servlets; import Java.io.ioException; import Java.io.printwriter; import Javax.servlet.servletException; import javax.servlet.http.cookie; import. javax.servlet.http.httpServletRequest; import javax.servlet.http.httpsertRetResponse; öffentliche Klasse DelcookieMo erweitert HttpServlet {public void dodget (httpletRequestanfrage, httpervletRespection) throwser -servletException, ioexception {Exception {exception {exception {exception { Antwort.SetContentType ("text/html; charSet = utf-8"); Printwriter out = response.getWriter (); Cookie cs [] = request.getCookies (); if (cs! Request.getContextPath ()); // Beim Löschen wird die Genehmigung durch dieses Urteil beurteilt! Dies muss genau das gleiche wie der ursprüngliche Pfad sein, der gelöscht wird, andernfalls kann er nicht gelöscht werden! // Für den vorherigen Satz lautet mein persönliches Verständnis: Wenn Ihre Pfadeinstellungen unterschiedlich sind, ist es tatsächlich genau wie ein neuer Cookie geöffnet. Die Ablaufzeit des neuen Cookies beträgt 0, und der Name ist "Name" C.SetMaxage (0); // Wenn Ablauf auf 0 gesetzt wird, bedeutet dies, was Löschung --- Das Löschlogo ist nur hier festgelegt, um zu antworten.Addcookie (c); }}}}}}Demonstrationsergebnisse:
Zu diesem Zeitpunkt existiert immer noch der Name.
Wir besuchen Delcookiedemo.
Gehen Sie zum ersten Link zum Lesen:
Der Name ist weg!
Firefox löscht automatisch abgelaufene Cookies:
4.. Verwenden Sie Cookies, um das letzte Mal anzuzeigen
index.jsp:
<a href = "loginServlet"> Verwenden Sie Cookies, um das letzte Mal anzuzeigen, wenn der Benutzer in </a> das letzte Mal angezeigt wird
web.xml:
<servlet> <Servlet-name> LoginServlet </Servlet-name> <Verlet-Klasse> cn.hncu.servlets.loginServlet </Servlet-Class> </Servlet> <Servlet-Mapping> <Servlet-name> loginservlet </servlet-name> <Url-Patter>/loginsservlet </urlpattern> </</servlet-maping> </urlpattern> </</servlet-herkapital;
LoginServlet.java:
Paket cn.hncu.servlets; import Java.io.ioxception; import Java.io.printwriter; Import Java.Text.SimpledateFormat; Import Java.util.date; Javax.Servlet.ServletException; import. javax.servlet.http.httpServletRequest; import Javax.servlet.http.httpServletResponse; öffentliche Klasse LoginServlet erweitert HttpServlet {public void dagget (htttpletRequestanfrage, httpServletReplet), Ioexect, ioexect { Antwort.SetContentType ("text/html; charSet = utf-8"); Printwriter out = response.getWriter (); out.println ("<! docType html public/"-// w3c // dtd html 4.01 transitional // en/">"); out.println ("<html>"); out.println ("<Head> <titels> mit Cookies demonstrieren, um die letzte Anmeldezeit des Benutzers </title> </head>") anzuzeigen; out.println ("<body>"); // Lesen Sie das Cookie Cookie CS [] = Request.GetCookies (); boolean boo = false; if (cs! = null) {für (cookie c: cs) {// ave if ("logintime" .equals (c.GetName ()) {string val = cgetValue (); lange dt = lang.Parselong (Val); Datum d = neues Datum (DT); SimpleDateFormat SDF = new SimpledateFormat ("yyyyy Year Mm Monat DD Datum HH: MM: SS"); out.print ("Ihre letzte Anmeldezeit war:"+sdf.format (d)); boo = true; brechen; }}} if (boo == false) {// bedeutet, dass in einem Jahr zuvor keinen Zugriffsaufzeichnung vorhanden ist! Weil die Ablaufzeit, die wir im Folgenden sparen, out.Print ("Sie besuchen zum ersten Mal im letzten Jahr ..."); } // Egal, ob es sich um neue oder alte Benutzer handelt, ein Cookie wird in den letzten zwei Mal erstellt und an den Client geschrieben. Was ich ursprünglich hatte, ist das Update -Uhrzeitdatum d = neues Datum (); Cookie C = New Cookie ("Logintime", "+D.Getime ()); C.SetPath (request.getContextPath ()); C.SetMaxage (60*60*24*30*12); response.addcookie (c); out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); }}Demonstrationsergebnisse:
Erster Besuch;
Besuchen Sie noch einmal:
5. Verwenden Sie Cookie Technology, um mehrere Bilder anzuzeigen, die kürzlich von Benutzern durchsucht wurden
index.jsp:
<a href = "JSPS/show.jsp"> Sehen Sie sich die Cookie-Technologie an, um die kürzlich von Benutzern durchsuchten Bildern zu verwenden </a>
web.xml:
<servlet> <servlet-name> ShowServlet </servlet-name> <Servlet-Class> cn.hncu.servlets.showServlet </Servlet-Class> </Servlet> <Servlet-Mapping> <Servlet-name> showservlet </servlet-name> <Url-patter>/showimg </url-patter>
show.jsp:
<%@ page import = "java.io.file"%> <%@ page Language = "java" import = "java.util. Grenze: 0px fest #000; Breite: 100px; Höhe: 100px; Überlauf: versteckt; } .span img {max-Width: 100px; _Width: Ausdruck (this.width> 100? "100px": this.width); } .spans {Border: 0px Solid #000; Breite: 50px; Höhe: 50px; Überlauf: versteckt; } .spans img {max-Width: 50px; _width: Ausdruck (this.width> 50? "50px": this.width); } </style> </head> <body> <h1> Siehe Cookie-Technologie mit Schönheitsgebrauch, um mehrere Bilder zu zeigen, die kürzlich von Benutzern gestürzt sind. <% String str = null; Cookie cs [] = request.getCookies (); if (cs! = null) {für (cookie c: cs) {if ("bilder" .equals (c.GetName ()) {str = C.GetValue (); // ***. JPG Break; }}} if (str! = null) {string strs [] = str.split (","); Für (String S: strs) {%> <span> <img src = "<%= request.getContextPath ()%>/imgs/<%= s%>"/> </span> <%}%> <br/> <hr/> <br/> <%// Verwenden Sie die Datei, um alle Bilder zu tragern und anzeigen. String path = getServletContext (). GetRealPath ("/imgs"); //System.out.printf(path); //D:/apache-tomcat-7.0.30/webapps/mycookieweb/jsps-Datei Datei = new java.io.file (Path); File [] file = file.listfiles (); if (Dateien! %> <span> <a href = "<%= request.getContextPath ()%>/showimg? img = <%= imgname%>"> <img src = "<%= request.getContextPath ()%>/imgs/<%= imgname%>"/> </a> </span> <%}%}%}%}%ShowServlet.java:
Paket cn.hncu.servlets; import Java.io.ioException; import Java.io.printwriter; import Javax.servlet.servletException; import javax.servlet.http.cookie; import. javax.servlet.http.httpServletResponse; öffentliche Klasse ShowServlet erweitert HttpServlet {public void dodget (httpServletRequest Request, httpServletResponse -Antwort), die ServletException, IOException {response.setContentType ("text/html"); Printwriter out = response.getWriter (); out.println ("<! docType html public/"-// w3c // dtd html 4.01 transitional // en/">"); out.println ("<html>"); out.println ("<kopf> <titels> a servlet </title> </head>"); out.println ("<body>"); String img = request.getParameter ("img"); String imgstr = "<img src = '"+request.getContextPath ()+"/iMgs/"+img+"' //>"+img+"'// Verwenden Sie Cookies, um die vom Benutzer Cookie CS [] = Anfrage besuchten Bildinformationen aufzuzeichnen. if ("Bilder" .Eequals (C.GetName ()) {// Ich habe bereits Bilder cookie String imgs = c.getValue (); if (imgstrs [i] .equals (img)) {if (i == 1 && imgstrs.Length == 2) {imgs = imgstrs [i]+","+imgstrs [0]; IMGS = Imgstrs [i]+","+imgstrs [0]+","+imgstrs [1]; imgs = img+","+imgs; // Es wird ein wenig störend sein, die folgende Methode zu verwenden: IMGs+","+img if (imgs.splen) (","). Länge> 3) {// Wenn das Bild mehr als 3 mal iMgs = imgs.Substring (0, IMGs.Slasts -Write u. u./yo yo yo you Wraping (ua/you/you/yo)), ")); Dies ist am besten, um die Reihenfolge des Hinzufügens der obigen Hinzufügen von doppelten Bildern zu verhindern. if (imgs.split (","). Länge> 3) {// Wenn das Bild mehr als dreimal imgs = imgs.substring (imgs.indexof (",")+1, imgsgth ())); }*/} C.SetValue (IMGS); // Aktualisieren Sie C.SetMaxage (60*60*24*30); C.SetPath ("/"); // entspricht vollständig entspannende Zugriffsrechte, dh alle Projekte können auf Antwort zugreifen. boo = true; brechen; }}} if (boo == false) {// Geben Sie den ersten Besuch an, dh es gibt kein Bild im Browser Cookie c = new Cookie ("Bilder", IMG); C.SetMaxage (60*60*24*30); C.SetPath ("/"); response.addcookie (c); } out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); }}Demonstrationsergebnisse:
6. Testen Sie, wie viele Kekse und wie groß ist der maximale Keks des Firefox -Browsers?
index.jsp:
<a href = "Servlet/HowmanycookieServlet"> Testen Sie die maximale Anzahl von Cookies und ein Cookie, den Firefox -Browser unterstützt </a> <br/>
web.xml:
<servlet> <servlet-name> Howmanycookie </Servlet-name> <Servlet-Class> cn.hncu.servlets.howManycookie </Servlet-Class> </Servlet> <Servlet-Mapping> <Servlet-Name> Howmanycookie </servlet-name> <url-pattern>/servlet-name/howmanycookie </url-pattern>/howmanycookie </Servlet-Mapping>
Howmanycookie.java:
Paket cn.hncu.servlets; import Java.io.ioxception; import Java.io.printwriter; import Java.net.urdecoder; import Javax.servlet.servletException; import Javax.servlet.http.cookie; Import Javax.Servlet.Http. javax.servlet.http.httpServletRequest; import javax.servlet.http.httpsertResponse; public class Howmanycookie erweitert HttpServlet {public void dodget (httpServletrequestanfrage, druck: htttpletRespectresponse) Outfonse -Out -Out -Out -Out -Out -Out -Out -Out -Out -Out -Out -Out -Out -Reaktion) -Anwahrscheinlichkeit, IOException {-Exception {-Exception {-Excection {-Excection -usw sich) -Anwahrscheinlichkeit, Ioexception {-Exception {-Excection {-Excection -Out -Out -Out -Out -Reaktion). response.getWriter (); /* // num der Tests-firefox 47.0.1 unterstützt bis zu 110 für (int i = 1; i <= 110; i ++) {Cookie c = neues Cookie ("Textnum"+i, ""+i); C.SetMaxage (60*15); C.SetPath ("/"); response.addcookie (c); } */// Testgröße --- 4092 Bytes ist die größte unterstützte Single Cookie-Speicherzeichenfolge s = ""; für (int i = 0; i <4092; i ++) {s+= "1"; } Cookie c = neuer Cookie ("Test", s); C.SetMaxage (60*15); C.SetPath ("/"); response.addcookie (c); Cookie cs [] = request.getCookies (); // Cookie if (cs! = Null) {// Vorsicht von für (Cookie CC: CS) {String key = cc.getName (); String val = cc.getValue (); out.print (Schlüssel+"="+val+""); }}}}Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.