Tout d'abord, comprenons ce que sont les cookies:
Les cookies sont en fait des données qui existent dans votre disque dur, mais ces données sont très spéciales et ne peuvent être soumises qu'au navigateur pour le stockage d'aide par les applications Web. Nous pouvons également lire les cookies du navigateur.
Les applications Web ne stockent généralement que certaines informations utilisateur et d'autres données petites et temporaires dans les cookies. Si le volume de données est important, il ne convient pas pour les stocker dans les cookies.
Généralement, les navigateurs leur donneront 40 cookies pour stocker des données pour chaque application Web, et la taille de chaque cookie ne dépasse pas 4K (j'ai entendu dire que certains navigateurs peuvent stocker de grandes données, mais nous ne stockons généralement pas de telles données de telles grandes données car l'efficacité d'extraction des données n'est pas élevée, ce qui affecte les performances)
Après avoir dit tellement de non-sens, le point est finalement venu
Java accède aux données des cookies dans les demandes de navigateur via l'interface httpservletRequest (permettez-moi de comprendre toute l'histoire des cookies ici, et le code sera donné plus tard)
Chaque cookie a deux attributs: clé et valeur (pas de chaîne de format spécifique, vous pouvez donc stocker des données en bricolage, mais vous devez prêter attention aux problèmes de codage d'URL. Les problèmes de codage seront discutés avec le code plus tard)
Si nous devons stocker de nouveaux cookies, nous pouvons nouveau une instance de cookie et le soumettre au navigateur via HttpservletrPonse, puis le stocker localement
Voici une classe commune pour les cookies
/ * * Cette classe peut extraire des cookies à partir de la demande du navigateur et effectuer des opérations connexes sur les cookies * * / classe publique CookiesUtil étend BaseController {/ ** * Obtenez des cookies par nom * * @param demande * @param name * Cookie Name * @return * / nom de cookie statique GetcookieByName (cookie HTTPServerest, nom de String) {map <string, cookie = cookie = demande ReadcookieMap (demande); if (CookieMap.ContainsKey (nom)) {Cookie Cookie = (Cookie) CookieMap.get (nom); retourner cookie; } else {return null; }} / ** * encapsulent les cookies dans la carte * * @param demande * @return * / carte statique privée <chaîne, cookie> ReadcookieMap (httpservletRequest request) {map <string, cookie> cookiemap = new hashmap <string, cookie> (); Cookie [] cookies = request.getCookies (); if (null! = cookies) {for (cookie cookie: cookies) {Cookiemap.put (cookie.getName (), cookie); }} return CookieMap; } / ** * Enregistrer les cookies * * @Param Response * Servlet Demande * @Param Value * Save Value * @Author Jxf * / Public Static HttpServletResponse setcookie (httpServletResponse Response HttpServletResponse Setcookie {// NOUVEAU Objet Cookie, Value); // Partage multi-application cookie.setpath ("/"); // Si la valeur du cookie contient du chinois, le cookie doit être codé, sinon le code brouillé sera généré. essayez {urlencoder.encode (valeur, "utf-8"); } catch (UnportEnCcodingException e) {e.printStackTrace (); } cookie.setMaxage (temps); // Ajouter le cookie à la réponse pour le faire prendre à effet la réponse.Addcookie (cookie); // Après l'addcookie, si le cookie avec le même nom existe déjà, le dernier écrase l'ancienne réponse de retour sur cookie; }Avec la classe générale ci-dessus, nous pouvons lire et créer de nouveaux cookies. Ici, je voudrais mentionner une chose: si le nom du nouveau cookie existe déjà, il ne sera pas ajouté à plusieurs reprises et que le cookie précédent sera écrasé.
Comment le navigateur affiche-t-il les cookies demandés et les cookies retournés? Prenez un navigateur Google pour un idiot
Ensuite, nous devrons peut-être supprimer des cookies
/ ** * <p> supprimer les cookies non valides </p> * <p> invalides? 1. Obsolete 2. Non publié </p> * @param demande * @param réponse * @param list * / private void delectcookieByName (httpServletRequest request, httpservletResponse réponse, String DeleteKe CookieMap.KeySet ()) {if (key == DeleteKey && key.equals (DeleteKey)) {cookie cookie = CookieMap.get (key); 21 cookie.setMaxage (0); // définissez le temps de validité du cookie sur 0 cookie.setpath ("/"); // ne définissez pas la réponse de chemin de stockage.addcookie (cookie); }}}Notez que la suppression des cookies doit avoir des paramètres de temps et de chemin, sinon certains navigateurs ne peuvent pas les supprimer.
Ce qui précède est la collecte des données de Java à lire et à écrire aux cookies du navigateur. Nous continuerons d'ajouter des informations pertinentes à l'avenir. Merci pour votre soutien à ce site!