Cet article explique en détail:
1. Démontrer l'utilisation de base des cookies
2. Démontrer les autorisations d'accès des cookies
3. Démouler la suppression des cookies
4. Utilisez des cookies pour afficher la dernière fois que l'utilisateur s'est connecté
5. Utilisez la technologie des cookies pour afficher plusieurs images récemment parcours par les utilisateurs
6. Testez combien de cookies et quelle est la taille du cookie maximum du navigateur Firefox?
1. Démontrer l'utilisation de base des cookies
index.jsp:
<% @ page Language = "Java" import = "java.util. *" Pageencoding = "utf-8"%> <! doctype html public "- // w3c // dtd html 4.01 transitional // en"> <html> <a head> </ head> <h1h> démontre la technologie de cookie </ h1> <a href = "Cookiedemo"> Démontrer l'utilisation de base du cookie </a> <br/> </body> </html>
web.xml:
<? xml version = "1.0" encoding = "utf-8"?> <web-app version = "3.0" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http://www.w3.org/2001/xmlschema-ristance" xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <splay-name> </splay-name> <Servlet> <Serplet-Name> <Serplet-Class> CN.hncu.servlets.cookiedemo </ servlet-Class> </ Servlet> <Servlet-Mapping> <Serplet-Name> CookiedoMo </ Servlet-Name> <Url-Pattern> / Cookiedemo </ Url-Pattern> </ Servlet-Mapping> <Deenked-File-list> <Welcome-file> INDEX.JSP </ WENDELFILE> </ Welcome-File-list> </ web-app>
Cookiedemo.java:
Package cn.hncu.servlets; import java.io.ioexception; import java.io.printwriter; import java.net.urldecoder; import java.net.urlencoder; import java.util.random; import javax.servlet.servlexception; import javax.servlet.http.cookie; javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; public class cookiedemo étend httpservlet {public void dopet (httpservletest demande, httServlet Servlexception, ioException {réponse.setContentType ("text / html; charset = utf-8"); Printwriter out = réponse.getWriter (); // Écrivez des cookies au client aléatoire r = new random (); int n = r.Nextint (100); String name = "Jack"; // Le format de Cookie: Key = Value Cookie C = new Cookie ("Name", nom + n); C.SetMaxage (60 * 60); // définir le temps d'expiration, en secondes c.setPath (request.getContextPath ()); // ce chemin est: / nom du projet // Dans le mécanisme des cookies, les autorisations sont contrôlées par chemin. Seuls les servlets avec le même chemin que le chemin ou le sous-chemin peuvent accéder au cookie // Si le chemin d'un cookie est défini en tant que répertoire racine du projet, alors tous les servlets du projet peuvent accéder à la réponse. Addcookie (C); // Ce cookie de démonstration a une chaîne chinoise str = "i apporte chinois"; str = urlencoder.encode (str, "utf-8"); // Définissez le codage en chinois! ! ! Urlencode codant pour cookie cstr = nouveau cookie ("str", str); // Si setMaxage n'est pas défini, le navigateur expire dès qu'il est fermé Cstr.setPath ("/"); réponse.addcookie (CSTR); // Lire cookie cs [] = request.getCookies (); // lire cookie if (cs! = Null) {// méfiez-vous de (cookie cc: cs) {string name2 = cc.getName (); String val = cc.GetValue (); val = urldecoder.decode (val, "utf-8"); // il s'avère qu'il le décodera tel qu'il est codé! Décodage chinois, ASCII est tel qu'il est! out.print (name2 + "=" + val + "<br/>"); }} out.print ("Cook Sauved réussi!"); }}Résultats de la démonstration:
Sur le premier clic! La session sera discutée la prochaine fois! Tomcat est automatiquement généré et envoyé au client!
En entrant à nouveau!
Nom + N Parce que le n derrière est généré au hasard, ce clic affiche toujours les informations de la précédente!
2. Démontrer les autorisations d'accès des cookies
index.jsp:
<a href = "servlet / cookiedemo2"> démontrent les autorisations d'accès des cookies </a> <br/> web.xml: <stertlet> <servlet-name> cookiedemo2 </ servlet-name> </vrlet-class> cn.hncu.servlets.cookiedemo2 </servlet-classe> </vrlett> <Servlet-Name> CookieDemo2 </ Servlet-Name> <Url-Pattern> / Servlet / CookiedoMo2 </url-Pattern> </ Servlet-Mapping>
COOKIEDEMO2.JAVA:
Package cn.hncu.servlets; importer java.io.ioexception; import java.io.printwriter; import java.util.random; import javax.servlet.servletException; import javax.servlet.http.cookie; import javax.servlet.http.httpservlet; import; javax.servlet.http.httpservletRequest; Importer javax.servlet.http.httpservletResponse; public class cookiedemo2 étend httpservlet {public void Doget (httpservletRequest request, httpservletResponse Response) throws serpletException, ioexception { Response.SetContentType ("Text / HTML; charSet = UTF-8"); Printwriter out = réponse.getWriter (); // Écrivez des cookies au client aléatoire r = new random (); int n = r.Nextint (100); Cookie C = nouveau cookie ("âge", "" + n); C.SetMaxage (60 * 60); // Temps d'expiration C.SetPath (request.getContextPath () + "/ Servlet / CookieDemo2"); // Dans le mécanisme cookie, les autorisations sont contrôlées par PATH // puisque le Pattifier URL de Cookiedo est le projet Root Directory / Cookiedo, et ne peut pas être consulté! ! ! Si le chemin est différent, le cookie est un objet différent, ce qui signifie que le cookie du même nom ne sera pas chevauché! réponse.addcookie (c); // Lire les cookies envoyés à partir du client Cookie CS [] = request.getCookies (); if (cs! = null) {for (cookie cc: cs) {String name = cc.GetName (); String val = cc.GetValue (); out.print ("22222 -" + name + "=" + val + "<br/>"); }} out.print ("Cookie est sauvé avec succès!"); }}Résultats de la démonstration:
Entrez d'abord la page CookiedoMo2 pour accéder au cookiemo-name-cookie
Entrez à nouveau sur la page Cookiedemo et ne peut pas accéder au Cookiedemo2 Age-Cookie
3. Démouler la suppression des cookies
index.jsp:
<a href = "servlet / delcookiedemo"> démontre la suppression des cookies </a> <br/>
web.xml:
<Serplet> <Serplet-Name> Delcookiedemo </ Servlet-Name> <Servlet-Class> CN.hncu.servlets.delcookiedemo </ Servlet-Class> </servlet> <servlet-mapping> <Servlet-name> delcookiedemo </ servlet-name> <url-Pattern> / Servlettlet / Delcookiedemo </ URL-Pattern> / Servlettlet / DelcokeeDemo </ Url-Pattern> / Servlettlet / Delcookiedemo </ Url-Pattern> / Servlettle
Delcookiedemo.java:
Package CN.HNCU.Servlets; Importer Java.io.ioException; Importer Java.io.printwriter; Importer Javax.servlet.servletException; Importer Javax.servlet.http.cookie; Importer Javax.servlet.http.httpservlet; Importer Javax.servlet.http.httplets; javax.servlet.http.httpservletRequest; Importer javax.servlet.http.httpservletResponse; public class delcookiedemo étend httpservlet {public void DOGTE Response.SetContentType ("Text / HTML; charSet = UTF-8"); Printwriter out = réponse.getWriter (); Cookie cs [] = request.getCookies (); if (cs! = null) {for (cookie c: cs) {// Pour traverser le cookie "nom", le servlet actuel doit avoir une autorisation de lecture, c'est-à-dire que le chemin d'url du servlet doit être le chemin défini par le cookie ou le sous-chemin du chemin défini par IT // supprimer le nom cookie if ("name". eequals (c.getname ()) {C.Set request.getContextPath ()); // Lors de la suppression, l'autorisation est jugée par cette phrase! Cela doit être exactement le même que le chemin d'origine défini pour supprimer, sinon il ne peut pas être supprimé! // Pour la phrase précédente, ma compréhension personnelle est: parce que si les paramètres de votre chemin sont différents, c'est en fait comme un nouveau cookie est ouvert. Le temps d'expiration du nouveau cookie est 0, et le nom est "Nom" C.SetMaxage (0); // Lorsque l'expiration, voir Set To 0, ce qui signifie la suppression --- Le logo de suppression est juste défini ici pour répondre.Addcookie (C); }}}}}}Résultats de la démonstration:
Pour le moment, le nom existe toujours.
Nous visitons Delcookiedemo.
Accédez au premier lien pour lire:
Le nom est parti!
Firefox supprimera automatiquement les cookies expirés:
4. Utilisez des cookies pour afficher la dernière fois que l'utilisateur s'est connecté
index.jsp:
<a href = "LoginServlet"> Utilisez des cookies pour afficher la dernière fois que l'utilisateur s'est connecté à </a>
web.xml:
<VerTlet> <Servlet-Name> LoginServlet </ Servlet-Name> <Servlet-Class> CN.HNCU.Servlets.logInservlet </ Servlet-Class> </ Servlet> <Serplet-Mapping> <Servlet-Name> LoginServlet </vrlet-name> <Url-Pattern> / LoginServlet </Url-Pattern>
LoginServlet.java:
Package CN.HNCU.Servlets; Importer Java.io.ioException; Importer java.io.printwriter; Importer java.text.simpledateFormat; Importer Java.util.Date; Importer Javax.Servlet.Servlexception; javax.servlet.http.httpservletRequest; Importer javax.servlet.http.httpservletResponse; public class LoginServlet étend httpservlet {public void Doget (httpservletRequest request, httpservletResponse Response) throws serpletException, ioexception { Response.SetContentType ("Text / HTML; charSet = UTF-8"); Printwriter out = réponse.getWriter (); out.println ("<! doctype html public /" - // w3c // dtd html 4.01 transitional // en / ">"); out.println ("<html>"); out.println ("<read> <tight> Démontrer l'utilisation des cookies pour afficher le dernier temps de connexion de l'utilisateur </TITAL> </A-HEAD>"); out.println ("<porce>"); // Lire le cookie Cookie du client CS [] = request.getCookies (); booléen boo = false; if (cs! = null) {for (cookie c: cs) {// voyage if ("logInTime" .Equals (c.getName ())) {String val = c.getValue (); long dt = long.parselong (val); Date D = nouvelle date (dt); SimpledateFormat sdf = new SimpledateFormat ("Yyyyy Year MM MOSD DD DAT HH: MM: SS"); out.print ("Votre dernier temps de connexion était:" + sdf.format (d)); boo = true; casser; }}} if (boo == false) {// signifie qu'il n'y a pas d'enregistrement d'accès dans un an avant! Parce que le temps d'expiration que nous enregistrons ci-dessous est sorti.print ("Vous visitez pour la première fois l'année dernière ..."); } // Que ce soit des utilisateurs nouveaux ou anciens, un cookie sera créé au cours des deux dernières fois et écrit au client. Ce que j'avais à l'origine, c'est la date d'heure de mise à jour d = new Date (); Cookie C = new Cookie ("LoginTime", "" + D.GetTime ()); C.SetPath (request.getContextPath ()); C.SetMaxage (60 * 60 * 24 * 30 * 12); réponse.addcookie (c); out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); }}Résultats de la démonstration:
Première visite;
Visitez à nouveau:
5. Utilisez la technologie des cookies pour afficher plusieurs images récemment parcours par les utilisateurs
index.jsp:
<a href = "jsps / show.jsp"> Regardez la technologie des cookies de beautés pour afficher plusieurs images récemment parcourues par les utilisateurs </a>
web.xml:
<VerTlet> <Serplet-Name> Showerservlet </ servlet-name> <servlet-class> cn.hncu.servlets.showservlet </ servlet-class> </vrlet> <servlet-mapping> </ servlet-name> showservlet </vrlett-name> <url-sattern> / showimg </rll-potending> </vrleth-mapping>
show.jsp:
<% @ page import = "java.io.file"%> <% @ page linguisse = "java" import = "java.util. *" Pageencoding = "utf-8"%> <! doctype html public "- // w3c // dtd html 4.01 transitional // En"> <html> <hierf Border: 0px solide # 000; Largeur: 100px; hauteur: 100px; débordement: caché; } .span img {max-width: 100px; _Width: Expression (this.width> 100? "100px": this.width); } .spans {border: 0px solide # 000; Largeur: 50px; hauteur: 50px; débordement: caché; } .spans img {max-width: 50px; _Width: Expression (this.width> 50? "50px": this.width); } </ style> </ head> <body> <h1> Regardez la technologie des cookies à usage de beautés pour afficher plusieurs images récemment parvenues par les utilisateurs </h1> <a href = "/ mycookieweb / jsps / show.jsp"> Regardez la technologie de cookie using beauté pour afficher plusieurs images récemment parcourues par l'utilisateur </a> <% String str = null; Cookie cs [] = request.getCookies (); if (cs! = null) {for (cookie c: cs) {if ("images" .equals (c.getName ())) {str = c.getValue (); // ***. jpg break; }}} if (str! = null) {String strs [] = str.split (","); pour (String S: strs) {%> <span> <img src = "<% = request.getContextPath ()%> / imgs / <% = s%>" /> </ span> <%}} %> <br/> <hr /> <br/> <% // Utiliser un fichier pour traverser toutes les images et les afficher. String path = getServletContext (). GetRealPath ("/ imgs"); //System.out.printf(path); //D:/apache-tomcat-7.0.30/webapps/mycookieweb/jsps file file = new Java.io.file (path); File [] files = file.listFiles (); if (files! = null) {%> <% for (file f: files) {string imGname = f.getName (); %> <span> <a href = "<% = request.getContextPath ()%> / showImg? img = <% = imgname%>"> <img src = "<% = request.getContextPath ()%> / imgs / <% = imgname %>" /> </a> </ span> <%}%> <%} %>Showervlet.java:
Package CN.HNCU.Servlets; Importer Java.io.ioException; Importer Java.io.printwriter; Importer Javax.servlet.servletException; Importer Javax.servlet.http.cookie; Importer Javax.servlet.http.httpservlet; Importer Javax.servlet.http.httplets; javax.servlet.http.httpservletResponse; classe publique showervlet étend httpservlet {public void doget (httpservletRequest request, httpservletResponse réponse) lance le servletException, ioException {réponse.setContentType ("text / html"); Printwriter out = réponse.getWriter (); out.println ("<! doctype html public /" - // w3c // dtd html 4.01 transitional // en / ">"); out.println ("<html>"); out.println ("<adread> <itle> un servlet </Title> </A-head>"); out.println ("<porce>"); String img = request.getParameter ("img"); String imgstr = "<img src = '" + request.getContextPath () + "/ imgs /" + img + "' //>" + img + "'' '' ' if ("images" .equals (c.getName ())) {// J'ai déjà des images String Imgs = c.getValue (); if (imgstrs [i] .equals (img)) {if (i == 1 && imgsts.length == 2) {imgs = imgstrs [i] + "," + imgstrs [0]; imgs = imgstrs [i] + "," + imgstrs [0] + "," + imgsts [1]; imgs = img + "," + imgs; // ce sera un peu difficile d'utiliser la méthode suivante: imgs + "," + img if (imgs.split (","). longueur> 3) {// si l'image a visité plus de 3 fois imgs = imgs.substring (0, imgs.lastIndexof (",")) Ceci, il est préférable d'inverser l'ordre d'ajouter ce qui précède des images en double.//imgs+" ,"+IMG Méthode: imgs = imgs + "," + img; if (imgs.split (","). longueur> 3) {// si l'image a visité plus de 3 fois imgs = imgs.substring (imgs.indexof (",") + 1, imgs.length ()); } * /} C.SetValue (IMGS); // Update C.SetMaxage (60 * 60 * 24 * 30); C.SetPath ("/"); // équivalent à des droits d'accès complètement relaxants, c'est-à-dire que tous les projets peuvent accéder à la réponse.Addcookie (c); boo = true; casser; }}} if (boo == false) {// indique la première visite, c'est-à-dire qu'il n'y a pas de navigation d'image dans le cookie du navigateur C = new cookie ("images", img); C.SetMaxage (60 * 60 * 24 * 30); C.SetPath ("/"); réponse.addcookie (c); } out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); }}Résultats de la démonstration:
6. Testez combien de cookies et quelle est la taille du cookie maximum du navigateur Firefox?
index.jsp:
<a href = "servlet / howmanycookieservlet"> tester le nombre maximal de cookies et un cookie que le navigateur Firefox prend en charge </a> <br/>
web.xml:
<Serplet> <Serplet-Name> HowManyCookie </ Servlet-Name> <Servlet-Class> Cn.hncu.Servlets.HowManyCookie </ Servlet-Class> </ Servlet> <Servlet-Mapping> <Servlet-Name> HowManyCookie </vlet-name> <Url-Pattern> / Servlet / HowMyCookieservlet </ratter> </ Servlet / Servlet / HowmanyCookieServert </ URL-Pattern> </ Servlet / Servlet / HowmanyCookieServer
Howmanycookie.java:
Package cn.hncu.servlets; importer java.io.ioexception; import java.io.printwriter; import java.net.urldecoder; import javax.servlet.servletException; import javax.servlet.http.cookie; import javax.servlet.http.httprlet; import; import; javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; classe publique howMyycookie étend httpservlet {public void Doget (httpservletRequest request, httpservletResponse réponse) throws servlexception, ioexception {imprimers Outwerwrwing =. / * // Num of Tests - Firefox 47.0.1 prend en charge jusqu'à 110 pour (int i = 1; i <= 110; i ++) {cookie c = new cookie ("textnum" + i, "" + i); C.SetMaxage (60 * 15); C.SetPath ("/"); réponse.addcookie (c); } * / // Taille de test --- 4092 octets est la chaîne de stockage de cookie unique la plus prise en charge s = ""; for (int i = 0; i <4092; i ++) {s + = "1"; } Cookie c = nouveau cookie ("test", s); C.SetMaxage (60 * 15); C.SetPath ("/"); réponse.addcookie (c); Cookie cs [] = request.getCookies (); // Lire le cookie if (cs! = Null) {// méfiez-vous de (cookie cc: cs) {string key = cc.GetName (); String val = cc.GetValue (); out.print (key + "=" + val + ""); }}}}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.