Primero, comprendamos qué son las cookies:
Las cookies son en realidad datos que existen en su disco duro, pero estos datos son muy especiales y solo se pueden enviar al navegador para el almacenamiento de ayuda por aplicaciones web. También podemos leer las galletas del navegador.
Las aplicaciones web generalmente solo almacenan información del usuario y otros datos pequeños y temporales en cookies. Si la cantidad de datos es grande, no es adecuado para almacenarlos en cookies.
En general, los navegadores les darán 40 cookies para almacenar datos para cada aplicación web, y el tamaño de cada cookie no excede 4K (escuché que algunos navegadores pueden almacenar datos grandes, pero generalmente no almacenamos datos tan grandes porque la eficiencia de extracción de datos no es alta, lo que afecta el rendimiento)
Después de decir tantas tonterías, finalmente llegó el punto
Java accede a los datos de las cookies en las solicitudes del navegador a través de la interfaz HttpservletRequest (permítanme entender toda la historia de las cookies aquí, y el código se dará más adelante)
Cada cookie tiene dos atributos: clave y valor (sin cadena de formato específica, por lo que puede almacenar datos en bricolaje, pero debe prestar atención a los problemas de codificación de URL. Los problemas de codificación se discutirán junto con el código más adelante)
Si necesitamos almacenar nuevas cookies, podemos nuevas una instancia de cookies y enviarla al navegador a través de httpservletrsponse, y luego almacenarla localmente
Aquí hay una clase común para cookies
/* * This class can extract cookies from the browser request and perform related operations on cookies* */public class CookiesUtil extends BaseController { /** * Get cookies by name * * @param request * @param name * cookie name* @return */ public static Cookie getCookieByName(HttpServletRequest request, String name) { Map<String, Cookie> cookieMap = ReadCookiEmap (solicitud); if (cookiEmap.containskey (nombre)) {cookie cookie = (cookie) CookiEmap.get (nombre); Cookie de regreso; } else {return null; }} / ** * Encapsula cookies en el mapa * * @param solicitud * @return * / private static map <string, cookie> readcookiEmap (httpservletrequest request) {map <string, cookie> cookiEmap = new Hashmap <String, Cookie> (); Cookie [] cookies = request.getcookies (); if (null! = cookies) {para (cookie cookie: cookies) {cookiEmap.put (cookie.getName (), cookie); }} return CookiEmap; } / ** * Guardar cookies * * @param Respuesta * Solicitud de servlet * @param Valor * Guardar valor * @author jxf * / public static httpServletResponse setcookie (httpservletResponse Respuesta, name de cadena, valor de cadena, intime) {// nuevo objeto de cookie, par de key-value es un parámetro cookie = new Cookie (nueva cookie (nuevo valor); // Multi-aplicaciones compartidas Cookie.SetPath ("/"); // Si el valor de la cookie contiene chino, la cookie debe codificarse, de lo contrario se generará el código confuso. intente {urlencoder.encode (valor, "utf-8"); } catch (UnsupportedEncodingException e) {E.PrintStackTrace (); } cookie.setMaxage (tiempo); // Agregue la cookie a la respuesta para hacer que la respuesta al respecto. Addcookie (Cookie); // Después del addcookie, si la cookie ya existe el mismo nombre, la última sobrescribe la antigua respuesta de devolución de cookies; }Con la clase general anterior podemos leer y crear nuevas cookies. Aquí me gustaría mencionar una cosa: si el nombre de la nueva cookie ya existe, no se agregará repetidamente, y la cookie anterior se sobrescribirá.
¿Cómo ve el navegador las cookies solicitadas y las cookies devueltas? Tome un navegador de Google para una tontería
Entonces es posible que necesitemos eliminar cookies
/** * <p> Eliminar cookies no válidas </p> * <p> no válido? 1. Obsolete 2. No publicado </p> * @param Solicitud * @param Respuesta * @param list */ private void delectcookiebyname (httpservletRequest request, httpservletResponse respuesta, string deletekey) lanza nullpointerException {12 map <string, cookie> cookiEmap = readcookiEmap (solicitud); 17 para (string key: key: key: key de string: key: keyeMap. {if (key == DeleteKey && Key.equals (deletrekey)) {Cookie Cookie = CookieMap.get (Key); 21 Cookie.setMaxage (0); // Establezca el tiempo de validez de las cookies en 0 Cookie.setPath ("/"); // No establezca la respuesta de la ruta de almacenamiento. Addcookie (cookie); }}}Tenga en cuenta que eliminar las cookies debe tener parámetros de tiempo y ruta, de lo contrario, algunos navegadores no pueden eliminarlas.
Lo anterior es la recopilación de datos de Java para leer y escribir en las cookies del navegador. Continuaremos agregando información relevante en el futuro. ¡Gracias por su apoyo para este sitio!