1. Qu'est-ce qu'un cookie? Commentaires des internautes de Baidu
Autrement dit, un cookie est une information stockée temporairement sur votre ordinateur par le serveur afin que le serveur puisse l'utiliser pour identifier votre ordinateur. Lorsque vous parcourez un site Web, le serveur Web enverra d'abord une petite quantité d'informations pour les mettre sur votre ordinateur. Lorsque vous visitez le même site Web la prochaine fois, le serveur Web vérifiera d'abord s'il y a des informations de cookie qu'il a laissés la dernière fois. Si c'est le cas, l'utilisateur sera jugé en fonction du contenu du cookie et vous enverra du contenu de page Web spécifique.
2. Où sont les cookies?
3. Les cookies peuvent-ils être supprimés?
4. Principe de mise en œuvre des cookies
La première fois que je demande le navigateur, dans le magasin de cookies du navigateur, il n'y a pas de cookies,
La première visite ne contient pas de cookies. Le navigateur ajoute un en-tête de demande de cookie au message de demande HTTP pour transmettre le cookie au serveur Web. Le navigateur stockera le fragment d'information du cookie sous la forme de paires "nom / valeur" (paires de valeurs de nom). La prochaine fois que vous accédez, le serveur Web ajoute un en-tête de réponse Set-Cookie au message de réponse HTTP pour envoyer les informations de cookie au navigateur.
Jetons un coup d'œil aux cookies par réalité
Créer un cookie.jsp, set session = "false" pour une observation facile
<% @ page Language = "Java" contentType = "Text / html; charset = utf-8" pageencoding = "utf-8" session = "false"%> <! doctype html public "- // w3c // dtd html 4.01 transitional // en" "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" contenu-type "contenu =" text / html; charset = utf-8 "> <Title> insert le titre </ title> </-head> <pody> <% // Créer un cookie de cuisine = nouveau> </-head> Cookie ("nom", "wyf"); réponse.addcookie (cookie);%> </body> </html>Nous accédons d'abord dans le fichier cookie.jsp, entrez-le dans IE
http: // localhost: 8080 / day01 / cookie.jsp
Dans l'en-tête de demande, vous pouvez voir que la première visite ne porte pas de cookies.
Dans l'en-tête de réponse, il est renvoyé via Set-Cookie et enregistré dans le magasin de cookies local du navigateur
Nous accédons au fichier cook.jsp pour la deuxième fois pour voir s'il y a un changement
Dans l'en-tête de demande, vous pouvez voir que l'accès est une demande qui transporte les cookies de la zone de stockage des cookies locale du navigateur.
Ce qui suit est l'en-tête de réponse:
Utilisons un graphique interactif pour comprendre le mécanisme des cookies:
Jetons un coup d'œil à la création et à l'acquisition de cookies
Le code dans cookie.jsp signifie: s'il n'y a pas de cookie dans la demande, il sera créé et retourné. Si la demande contient un cookie, il sortira une paire de valeurs de clé cookie (valeur de nom)
<% @ page Language = "Java" contentType = "Text / html; charset = utf-8" pageencoding = "utf-8" session = "false"%> <! doctype html public "- // w3c // dtd html 4.01 transitional // en" "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" contenu-type "contenu =" text / html; charset = utf-8 "> <Title> Titre ici </ title> </-head> <pody> <% Cookie [] cookies = request.getcookies (); if (cookies! = null && cookies.length> 0) {for (cookie cookie: cookies) {out.print (cookie.getName () + ":" + cookie.getValue ());}} else {out.print ("pas de cookie, est créé et retourné"); Cookie ("nom", "wyf"); réponse.addcookie (cookie);}%> </body> </html>Première visite
Deuxième visite
L'opération ci-dessus est que nous devons fermer à nouveau le navigateur. Pourquoi déboglons-nous?
Parce que par défaut, un cookie est un cookie au niveau de session, stocké dans le noyau du navigateur, et l'utilisateur est supprimé après avoir quitté le navigateur. Si vous voulez que le navigateur stockait le cookie sur le disque, vous devez utiliser Maxage, qui est en quelques secondes
Jetons un coup d'œil aux cookies persistants
<% Cookie [] cookies = request.getcookies (); if (cookies! = Null && cookies.length> 0) {for (cookie cookie: cookies) {out.print (cookie.getName () + ":" + cookie.getValue ());}} else {out.print ("pas de cookie, est créé et retourné"); Cookie = new) Cookie ("nom", "wyf"); cookie.setMaxage (30); réponse.addcookie (cookie);}%>cookie.setMaxage (30); réglé sur 30 secondes, donc je ne prends pas de capture d'écran ici. Dites simplement que c'est sous votre nom. Si vous n'avez pas de cookies pour la première fois, vous pouvez créer des cookies pour la deuxième fois. Si vous n'avez pas de cookies pour la deuxième fois, vous pouvez fermer le navigateur et accéder dans les 30 secondes. Vous invitez toujours les cookies pour la paire de valeurs clés, au lieu de l'invite précédente, vous n'avez pas de cookies pour les cookies pour le précédent. Vous n'avez pas de cookies pour les cookies pour le précédent.
Connexion automatique
login.jsp
<% @ Page Language = "Java" ContentType = "Text / Html; charSet = UTF-8" Pageencoding = "UTF-8"%> <! Doctype HTML Public "- // W3C // DTD HTML 4.01 Transitional // en" "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" contenu-type "contenu =" Text / html; charset = utf-8 "> <Title> insert titre ici </ title> </-head> <body> <formulaire Action =" Success. type = "text" name = "name" /> <input type = "soumi" value = "sumit" // </ form> </ body> </html>
succès.jsp
<% @ page Language = "Java" contentType = "Text / html; charset = utf-8" pageencoding = "utf-8" session = "false"%> <! doctype html public "- // w3c // dtd html 4.01 transitional // en" "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" contenu-type "contenu =" Text / html; charset = utf-8 "> <Title> Insérez le titre ici </ Title> </-head> <pody> <% // Les informations dans le temps et définissez l'heure du cookie String name = request.getParameter ("name"); if (name! = null &&! name.trim (). equals ("")) {cookie cookie = new cookie ("nameCookie", name); cookie.setMaxage (60); réponse. cookie et lire les informations utilisateur du cookie. S'il y a, imprimez le message de bienvenue cookie [] cookies = request.getcookies (); if (cookies! = Null && cookies.length> 0) {for (cookie cookie: cookies) {string cookiename = cookie.getName (); if ("nameCookie" .equals (cookienName)) {String Val = Cookie.getValue (); name = Val; ! = null &&! name.trim (). equals ("")) {out.print ("hello" + name);} else {// s'il n'y a pas de paramètres de demande et pas de cookies, rediriger vers Login.jspResponse.SenDredirect ("Login.jsp");}%> </odody> </html> La première fois que vous visitez http: // localhost: 8080 / day01 / login.jsp, entrez la valeur du paramètre du nom et soumettez-la. Dans Success.jsp, obtenez d'abord la valeur du nom du paramètre soumis. S'il n'est pas nul, définissez directement un cookie, enregistrez la valeur du nom du paramètre, puis publiez la valeur du paramètre de nom sur la page. Lorsque vous visitez la deuxième fois, vous entrez directement http: // localhost: 8080 / day01 / success.jsp,
Étant donné que cette fois nous portons la valeur du nom du paramètre, nous devons seulement obtenir la valeur de la valeur de la valeur du cookie, puis afficher la sortie
Afficher une histoire du shopping récent
livres.jsp
<% @ Page Language = "Java" ContentType = "Text / Html; charSet = UTF-8" Pageencoding = "UTF-8"%> <! Doctype HTML Public "- // W3C // DTD HTML 4.01 Transitional // en" "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" contenu-type "contenu =" Text / html; charset = utf-8 "> </ h4> </ title> </-head> <pody> <h4> Page de livres </h4> <a les livres de livres </ a des livres <h href = "book.jsp? book = javaweb"> javaweb </a> <a href = "book.jsp? book = java"> java </a> <a href = "book.jsp? book = oracle"> oracle </a> <a href = "book.jsp? book = ajax"> ajax </a> href = "book.jsp? book = javascript"> javascript </a> <a href = "book.jsp? book = android"> android </a> <a href = "book.jsp? book = jbpm"> jbpm </a> <br> <br> <% // obtenir tous les cookies [] cookies = request.getcokies (); // cookiescookies [] cookies = request Réserver, si Cookiename est atguigu_book_, il remplit les conditions si (cookies! = Null && cookies.length> 0) {for (cookie c: cookies) {string cookiename = c.getName (); if (Cookiename.startswith ("safly")) {// show show Cookievalueout.println (c.getValue ()); out.print ("<br>");}}}%> </body> </html>book.jsp
<% @ page import = "java.util.arraylist"%> <% @ page linguisse = "java" contentType = "text / html; charset = utf-8" pageencoding = "utf-8"%> <! doctype html public "- // w3c // dtd html 4.01 transitional // en" "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" contenu-type "contenu =" Text / html; charset = utf-8 "> <pitle> insert ire </ title> </ head> <pody> books: book" %> <br> <br> <a href = "books.jsp"> return </a> <% String book = request.getParameter ("book"); // déterminer le cookie à être supprimé cookie [] cookies = request.getcookies (); // Enregistrer tous les cookies à partir de saflyArraylist <utilise des bookies pour books = newslist <cookie> (); cookie assorti par le livre entrant cookie tempcookie = null; if (cookies! = null && cookies.length> 0) {for (cookie c: cookies) {string cookiename = c.getName (); if (CookIeName.startswith ("Safly")) {bookcookies.add (c); // après avoir sélectionné 5, sélectionnant un seul de 5 if (c.getValue (). Equals (book)) {out.print ("c.getValue (). Equals (book)"); tempcookie = c;}}}}} // sélectionner 5 livres autres que ces 5 livres if (bookcookies = bookcokies.get.get (0); //out.print("Tempcookie == null ");} // s'il y est dedans, supprimez le bookcookie lui-même, supprimez les cookies en double dans la liste et transmettez-le si (tempcookie! = null) {tempcookie.setMaxage (0); réponse.addcookie (tempcookie);} // renvoie le livre passé de books.jsp en tant que cookie cookie cook = new cookie ("safly" + livre, livre); réponse.addcookie (cuisinier);%> </ body> </html>Parlons de la relation logique:
Dans books.jsp, ci-dessous est une liste de livres.
Javaweb
Java
Oracle
Ajax
Javascrip
Androïde
JBPM
Je sélectionne au hasard un lien (comme Javaweb) pour sauter sur book.jsp. La première fois que je l'ai accédé, il n'y avait pas de cookie, alors j'ai appelé la méthode suivante de Book.jsp et créé un cookie. Dans la page book.jsp, cliquez sur Retour pour revenir à books.jsp et retirer le cookievalue apporté par Cooks.jsp, puis afficher la liste de livres sélectionnée.
Cookie Cook = New Cookie ("SAFLY" + livre, livre); Response.Addcookie (Cook); Maintenant, nous sommes retournés à Books.jsp et avons sélectionné un livre Javaweb. Nous choisissons un livre (en supposant Java), puis nous sautons sur books.jsp. En ce moment, nous apporterons un cookie (il m'a été transmis lorsque Javaweb a été sélectionné pour la première fois pour accéder à des livres.jsp). La valeur clé de ce cookie est saflyjavawebjavaweb, mais quoi? La sélection du deuxième livre Java ne vient pas avec des cookies (pas de saflyjava)
Entrez ensuite Cooks.jsp
if (Cookiename.startswith ("safly")) {bookcookies.add (c);}Donc, mettez SAFLYJAVAWEBJAVAWEB dans un bookcookies (stockant la liste de livres sélectionnés), puis, la SAFLYJAVAJAVA sera créée. Lorsque vous cliquez sur Renturn, donnez des cookies.jsp Reverse
. . . . Lors du choix d'un livre pour les 3e, 4e et 5e fois, c'est le même processus. Si vous choisissez 5 livres dans books.jsp, comment y faire face lorsque vous choisissez l'un de ces 5 livres?
c.getValue (). égal (livre) pour obtenir le livre sélectionné. Nous devons supprimer ce cookie, puis l'ajouter à nouveau et le ramener au code cookies.jsp comme suit:
tempcookie.setMaxage (0); réponse.addcookie (tempcookie);
Si vous choisissez 5 livres dans books.jsp et choisissez le 6ème livre qui n'est pas les 5 livres, comment y faire face?
Let's Just tempcookie = bookcookies.get (0); Sortez le premier livre des 5 livres, puis tempcookie.setMaxage (0); Supprimez le premier cookie, puis créez le cookie vers les cookies.jsp
Voici quelques captures d'écran:
Le chemin d'action des cookies
cookie2.jsp
<% @ Page Language = "Java" ContentType = "Text / Html; charSet = UTF-8" Pageencoding = "UTF-8"%> <! Doctype HTML Public "- // W3C // DTD HTML 4.01 Transitional // en" "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" contenu-type "contenu =" Text / html; charset = utf-8 "> <t titre> insert ici </ title> </-head> <pody> <% String Cookievalie = Null; cookies [] = </-thend> </ body> <1% String CookiElLue = Null; Cookies = </-head> </ Body> <1% String CookievlaLe = Null; Cookies [] = </-thend> </ Body> </ Cookeptor request.getcookies (); if (cookies! = null && cookies.length> 0) {for (cookie cookie: cookies) {if ("cookiepath" .equals (cookie.getName ())) {Cookievalue = cookie.getValue ();}}} if (Cookievalue! = null) {out.print (Cookievalue);} else {out.print ("pas de cookie spécifié");}%> </ body> </html>writeCookie.jsp
<% @ Page Language = "Java" ContentType = "Text / Html; charSet = UTF-8" Pageencoding = "UTF-8"%> <! Doctype HTML Public "- // W3C // DTD HTML 4.01 Transitional // en" "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" contenu-type "contenu =" Text / html; charset = utf-8 "> <it titre> Insérez le titre de rédaction et le sous-titre de la curette de la fonction de la rédaction et de la fonction du cure répertoire, mais ne peut pas agir sur le répertoire précédent du répertoire actuel // peut définir la portée du cookie via SetPath, / représente le répertoire racine du site cookie = new cookie ("cookiepath", "cookiePathValue"); cookie.setpath (request.getContextPath (); réponse. cookie2.jsp </a> </body> </html>à cookie2.jsp est le cookie2.jsp qui accède au répertoire supérieur de l'écriture.jsp
Ce qui précède est le développement de Javaweb utilisant des cookies pour créer - obtenir - la persistance, la connexion automatique, les enregistrements d'achat et les chemins de fonction. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!