1. ¿Qué es una galleta? Comentarios de los internautas de Baidu
En pocas palabras, una cookie es una información almacenada temporalmente en su computadora por el servidor para que el servidor pueda usarla para identificar su computadora. Cuando está navegando por un sitio web, el servidor web primero enviará una pequeña cantidad de información para ponerla en su computadora. Cuando visite el mismo sitio web la próxima vez, el servidor web primero verificará si hay alguna información de cookies que dejó la última vez. Si es así, el usuario será juzgado en función del contenido de la cookie y le enviará contenido específico de la página web.
2. ¿Dónde están las galletas?
3. ¿Se pueden eliminar las cookies?
4. Principio de implementación de cookies
La primera vez que solicito el navegador, en la tienda de galletas del navegador, no hay galletas,
La primera visita no contiene cookies. El navegador agrega un encabezado de solicitud de cookie al mensaje de solicitud HTTP para volver a pasar la cookie al servidor web. El navegador almacenará el fragmento de información de la cookie en forma de pares de "nombre/valor" (pares de valor de nombre). La próxima vez que acceda a acceder, el servidor web agrega un encabezado de respuesta de cookie establecido al mensaje de respuesta HTTP para enviar la información de cookies al navegador.
Echemos un vistazo a las galletas por realidad
Cree un cookie.jsp, set session = "false" para una fácil observación
<%@ page lenguaje = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8" session = "false"%> <! DocType html público "-// w3c // dtd html 4.01 transición // en" " "" http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv = "content-type" content = "text/html; charset = utf-8"> <title> title aquí </titter> </head> <sody <sod <%// //Ecocokie Cookie ("Nombre", "WYF"); Response.addcookie (Cookie);%> </body> </html>Primero accedemos al archivo Cookie.jsp, ingresamos en IE
http: // localhost: 8080/day01/cookie.jsp
En el encabezado de solicitud, puede ver que la primera visita no lleva galletas.
En el encabezado de respuesta, se envía de regreso a través de Set-Cookie y se guarda en la tienda de galletas locales del navegador
Accedemos al archivo Cook.jsp por segunda vez para ver si hay algún cambio
En el encabezado de solicitud, puede ver que el acceso es una solicitud que transporta cookies desde el área local de almacenamiento de cookies del navegador.
El siguiente es el encabezado de respuesta:
Usemos un gráfico interactivo para comprender el mecanismo de cookies:
Echemos un vistazo a la creación y adquisición de cookies
El código en Cookie.jsp significa: Si no hay cookie en la solicitud, se creará y devolverá. Si la solicitud contiene una cookie, emitirá un par de valores clave de cookies (valor-valor)
<%@ page lenguaje = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8" session = "false"%> <! DocType html público "-// w3c // dtd html 4.01 transición // en" " "http://www.w3.org/tr/html4/loose.dtd"> podet ! = null && cookies.length> 0) {for (cookie cookie: cookies) {out.print (cookie.getName ()+":"+cookie.getValue ());}} else {out.print ("No se está creando y devuelto"); Cookie Cookie = neo Cookie ("Nombre", "WYF"); Response.addcookie (cookie);}%> </body> </html>Primera visita
Segunda visita
La operación anterior es que necesitamos cerrar el navegador nuevamente. ¿Por qué estamos depurando?
Porque, por defecto, una cookie es una cookie a nivel de sesión, almacenada en el núcleo del navegador, y el usuario se elimina después de salir del navegador. Si desea que el navegador almacene la cookie en el disco, debe usar Maxage, que es en segundos
Echemos un vistazo a las galletas persistentes
<%Cookie [] cookies = request.getcookies (); if (cookies! = Null && cookies.length> 0) {for (cookie cookie: cookies) {out.print (cookie.getName ()+":"+cookie.getValue ());}} else {out.print ("No cookie, se crea y regresa");;; Cookie ("Nombre", "WYF"); Cookie.SetMaxage (30); Response.addcookie (Cookie);}%>Cookie.setMaxage (30); Establezca en 30 segundos, para que no tomaré una captura de pantalla aquí. Solo di que está bajo tu nombre. Si no tiene galletas por primera vez, puede crear cookies por segunda vez. Si no tiene cookies por segunda vez, puede cerrar el navegador y acceder en 30 segundos. Todavía solicita las cookies para el par de valores clave, en lugar del aviso anterior, no tiene cookies para las cookies para la anterior. No tienes galletas para las cookies para la anterior.
Inicio de sesión automático
Login.jsp
<%@ page lenguaje = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <! DocType html público "-// w3c // dtd html 4.01 transición // en" " "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <title> title aquí </titter> <body> <form action =" exitoso. type = "text" name = "name"/> <input type = "subt" value = "Sumit" // </form> </body> </html>
éxito.jsp
<%@ page lenguaje = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8" session = "false"%> <! DocType html público "-// w3c // dtd html 4.01 transición // en" " "http://www.w3.org/tr/html4/loose.dtd"> podet en la cookie, y establezca la hora de la cadena de cookie name = request.getParameter ("name"); if (name! = null &&! name.trim (). iguales ("")) {cookie cookie = new cookie ("namecookie", name); cookie.setMaxage (60); respuesta.addcookie (cookie);} else} si no hay no hay un parámetro, puede registrarlo con el registro con el registro de la cookie, puede registrarse con el registro de la cookie. y lea información del usuario de la cookie. Si lo hay, imprima el mensaje de bienvenida cookie [] cookies = request.getcookies (); if (cookies! = Null && cookies.length> 0) {for (cookie cookie: cookies) {string cookiename = cookie.getName (); if ("namecookie" .equals (cookiename) {string val = cookie.getvalue (); name = val;} ! = null &&! name.trim (). Equals ("")) {out.print ("hola" + name);} else {// Si no hay parámetros de solicitud y no cookies, redirecte a Login.jspesponse.sendedirect ("Login.jsp");}%> </tbody> </html> La primera vez que visita http: // localhost: 8080/day01/login.jsp, ingrese el valor del parámetro de nombre y envíelo. En Success.jsp, primero obtenga el valor de nombre del parámetro enviado. Si no es nulo, configure una cookie directamente, guarde el valor del nombre del parámetro y luego genere el valor del parámetro de nombre en la página. Cuando visita la segunda vez, ingresa directamente http: // localhost: 8080/day01/success.jsp,
Dado que llevamos el valor del nombre del parámetro, solo necesitamos obtener el valor del valor del valor de la cookie y luego mostrar la salida
Mostrar historial de compras reciente
libros.jsp
<%@ page lenguaje = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <! DocType html público "-// w3c // dtd html 4.01 transición // en" " "http://www.w3.org/tr/html4/loose.dtdendo href = "book.jsp? Book = javaweb"> javaweb </a> <a href = "book.jsp? Book = java"> java </a> <a href = "book.jsp? Libro = oracle"> oracle </a> <a href = "book.jsp? Book = AJax"> AJAX </a> <aJ href = "book.jsp? Book = javascript"> javascript </a> <a href = "book.jsp? Book = Android"> Android </a> <a href = "book.jsp? Book = jbpm"> jbpm </a> <br> <%// obtener todos los cookiescookies [] Cookies = request.getcokies (); Libro, si Cookiename es en Guiguu_Book_, cumple con las condiciones si (cookies! = Null && cookies.length> 0) {para (cookie c: cookies) {string cookiename = c.getName (); if (Cookiename.Startswith ("Safly") {// show Cookievalueout.println (c.getValue ()); Out.print ("<br>");}}}%> </body> </html>book.jsp
<%@page import = "java.util.arraylist"%> <%@page lenguaje = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> < "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <title> title aquí </titter> <tod> <fody> book: <seT = request Parameter (" "" "Título> Título aquí </title> </head> <fody> Libro: <SET = request %> <br> <br> <a href = "books.jsp"> return </a> < %string book = request.getParameter ("book"); // Determine la cookie que se eliminará la cookie [] cookies = request.getcookies (); // Guardar todas las cookies con SaflyRayList <Cookie> bookcookies = New ArrayList <So Cookie> (); La cookie coincidía con el libro entrante Cookie Tempcookie = null; if (cookies! = Null && cookies.length> 0) {for (cookie c: cookies) {string cookiename = c.getName (); if (Cookiename.Startswith ("Safly")) {Bookcookies.add (c); // después de seleccionar 5, seleccionando uno de los 5S 5 if (c.getValue (). Equals (Book)) {out.print ("c.getValue (). iguales (libro)"); tempcookie = c;}}}}} // Seleccione 5 libros distintos de estos 5 libros if (bookcookies.size ()> = 5 && tempcookie == null) {tempookie = bookcokies.get (0); //out.print("tempcookie == null ");} // Si está en él, elimine el bookcookie en sí, elimine las cookies duplicadas en la lista y lo pase si (tempcookie! = null) {tempcookie.setMaxage (0); Response.addcookie (tempcookie);} // Devuelve el libro que pasa de los libros.jsp como cookie cookie Cook = new Cookie ("Safly"+Book, Book); Response.addcookie (Cook);%> </body> </html>Hablemos de la relación lógica:
En Books.jsp, a continuación hay una lista de libros.
Javaweb
Java
Oráculo
Ajax
Javascript
Androide
Jbpm
Selecciono aleatoriamente un enlace (como Javaweb) para saltar al libro.jsp. La primera vez que accedí a él, no había cookie, así que llamé al siguiente método de book.jsp y creé una cookie. En la página Book.jsp, haga clic en Regresar para regresar a Books.jsp y eliminar el Cookievalue traído por Cooks.jsp, y luego muestre la lista de libros seleccionada.
Cookie Cook = New Cookie ("Safly"+Book, Book); Response.AddCookie (Cook); Ahora hemos vuelto a los libros.jsp y hemos seleccionado un libro Javaweb. Estamos eligiendo un libro (suponiendo Java), y luego saltando a los libros. JSP. En este momento, traeremos una cookie (se me pasó cuando Javaweb fue seleccionado por primera vez para acceder a los libros.jsp). El valor clave de esta cookie es SaflyJavawebjavaweb, pero ¿qué? Seleccionar el segundo libro Java no viene con cookies (sin SaflyJava)
Luego ingrese a Cooks.jsp
if (Cookiename.startswith ("Safly")) {Bookcookies.add (c);}Entonces, coloque SaflyJavawebJavaweb en un Bookcookies (almacenando la lista de libros seleccionada) y luego se creará el SaflyJavajava. Cuando haga clic en Renturn, dale cookies.jsp reverso
. . . . Al elegir un libro para 3º, 4º y 5º veces, es el mismo proceso. Si elige 5 libros en libros.jsp, ¿cómo lidiar con él al elegir uno de estos 5 libros?
C.getValue (). Equals (Libro) para obtener el libro seleccionado. Necesitamos eliminar esta cookie y luego agregarla nuevamente y pasarla de vuelta a las cookies.jsp Código de la siguiente manera:
tempCookie.setMaxage (0); Respuesta.addCookie (Tempcookie);
Si elige 5 libros en libros.jsp y elige el sexto libro que no es los 5 libros, ¿cómo lidiar con él?
Solo tempcookie = bookcookies.get (0); Saque el primer libro de los 5 libros, luego Tempcookie.SetMaxage (0); Elimine la primera cookie, luego cree la galleta a las cookies.jsp
Aquí hay algunas capturas de pantalla:
El camino de acción de las cookies
cookie2.jsp
<%@ page lenguaje = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <! DocType html público "-// w3c // dtd html 4.01 transición // en" " "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <title> title aquí </title> </head> <fody> <%string cookievalue; 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 ("sin cookie especificada");}%> </body> </html>WriterCookie.jsp
<%@ page lenguaje = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <! DocType html público "-// w3c // dtd html 4.01 transición // en" " "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <title> title aquí </titter> </head> <cody> <%// puede función como el directorio de corriente y el subsistro de la corriente de la actualidad de Directorio, pero no puede actuar en el directorio anterior del directorio actual // puede establecer el alcance de la cookie a través de setPath,/representa el directorio raíz del sitio cookie = new Cookie ("CookiePath", "CookiePathValue"); Cookie.setPath (request.getContextExtExtPath ()); Response.addcookie (Cookie cookie2.jsp </a> </body> </html>a cookie2.jsp es el cookie2.jsp que accede al escritor de escritor.jsp Directorio superior
Lo anterior es el desarrollo de Javaweb que usa cookies para crear - obtener - persistencia, inicio de sesión automático, registros de compras y rutas de funciones. Espero que sea útil para todos. Si tiene alguna pregunta, déjame un mensaje y el editor responderá a todos a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!