Este artículo explica en detalle:
1. Demuestre el uso básico de las cookies
2. Demuestre los permisos de acceso de las cookies
3. Demuestre la eliminación de cookies
4. Use cookies para mostrar la última vez que el usuario inició sesión
5. Use la tecnología de cookies para mostrar varias imágenes recientemente navegadas por los usuarios
6. Pruebe ¿cuántas galletas y qué tan grande es la galleta máxima del navegador Firefox?
1. Demuestre el uso básico de las cookies
index.jsp:
<%@ page lenguaje = "java" import = "java.util.*" PageEncoding = "utf-8"%> <! DocType html público "-// w3c // dtd html 4.01 transitional // en"> <html> <fead> <bead> <body> <hiRe) href = "Cookiedemo"> Demuestre el uso básico de cookies </a> <br/> </body> </html>
web.xml:
<? xml versión = "1.0" encoding = "utf-8"?> <web-app versión = "3.0" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <lipsion-name> </siple-name> <ervlet> <ervlet-name> Cookiedemo </servleteTlet> <Servlet-class> cn.hncu.servlets.cookiedemo </servlet-class> </servlet> <ervlet-mapping> <ervlet-name> cookiedemo </servlet-name> <url-pattern>/cookiedemo </ url-pattern> </servlet-mapping> <creiez-file-list> <legente-file> índice.jspe-cille> </Welcome-File-List> </beb-app>
Cookiedemo.java:
paquete 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.servletException; import javax.servlet.http.cookie; javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpServletResponse; public class Cookiedemo extiende httpservlet {public void doget (httpservletRequest request, httpSerServeTsEntsEntsEntsEltsEntlet { ServLetException, ioException {Response.SetContentType ("Text/Html; Charset = UTF-8"); PrintWriter out = Response.getWriter (); // Escribir cookies al cliente Random r = new Random (); int n = R.NextInt (100); Name de cadena = "Jack"; // El formato de cookie: Key = Value Cookie C = New Cookie ("Nombre", Nombre+N); C.SetMaxage (60*60); // Establezca el tiempo de vencimiento, en segundos C.SetPath (request.getContextPath ()); // Esta ruta es:/Nombre del proyecto // En el mecanismo de cookies, los permisos se controlan a través de la ruta. Solo los servlets con la misma ruta que la ruta o la subpath pueden acceder a la cookie // si la ruta de una cookie se establece como el directorio de la raíz del proyecto, entonces todos los servlets en el proyecto pueden acceder a su respuesta. Addcookie (c); // Esta cookie de demostración tiene cadena china str = "trajo chino"; str = urlencoder.encode (str, "utf-8"); // establecer codificación en chino! ! ! Urlencode codifica cookie cstr = nueva cookie ("str", str); // Si SetMaxage no está configurado, el navegador expira tan pronto como está cerrado cstr.SetPath ("/"); Respuesta.AddCookie (CSTR); // Leer cookie cs [] = request.getcookies (); // lea cookie if (cs! = Null) {// Cuidado con (cookie cc: cs) {string name2 = cc.getName (); Cadena val = cc.getValue (); val = urldecoder.decode (val, "utf-8"); // Resulta que lo decodificará a medida que está codificado! Decodificación china, ASCII es como es! out.print (name2+"="+val+"<br/>"); }} out.print ("¡Cook guardado con éxito!"); }}Resultados de la demostración:
¡En el primer clic! ¡La sesión se discutirá la próxima vez! ¡Tomcat se genera automáticamente y se envía al cliente!
¡Al entrar de nuevo!
Nombre+n Porque la n detrás se genera al azar, ¡este clic siempre muestra la información del anterior!
2. Demuestre los permisos de acceso de las cookies
index.jsp:
<a href = "servlet/cookiedemo2"> Demuestre los permisos de acceso de las cookies </a> <br/> web.xml: <ervlet> <ervlet-name> cookiedemo2 </servlet-name> <ervlet-class> cn.hncu.servlets.cookiedemo2 </servlet-class> </servlet> <ervlet-mapping> <Servlet-Name> Cookiedemo2 </servlet-name> <url-pattern>/servlet/cookiedemo2 </sl-patern> </servlet-mapping>
Cookiedemo2.Java:
paquete cn.hncu.servlets; import 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; import javax.servlet.http.httpservletResponse; public class Cookiedemo2 extiende httpservlet {public void doget (httpservletRequest solicitud, httpServletResponse Respuesta) lanza ServletException, ioexception { respuesta.setContentType ("text/html; charset = utf-8"); PrintWriter out = Response.getWriter (); // Escribir cookies al cliente Random r = new Random (); int n = R.NextInt (100); Cookie C = nueva cookie ("edad", ""+n); c.setMaxage (60*60); // tiempo de vencimiento c.setPath (request.getContextPath ()+"/Servlet/Cookiedemo2"); // En el mecanismo de cookies, los permisos se controlan a través de la ruta // ya que la patrón de URL de Cookiedemo es el directorio root de proyecto/Cookiedemo, y no es una subdirección de la ruta del set de la ruta actual por el set de la ruta actual. //¡Nota! ! ! Si la ruta es diferente, entonces la cookie es un objeto diferente, lo que significa que la cookie con el mismo nombre no se superpondrá. Respuesta.AddCookie (C); // Leer cookies enviadas desde la cookie del cliente CS [] = request.getcookies (); if (cs! = null) {for (cookie cc: cs) {string name = cc.getName (); Cadena val = cc.getValue (); out.print ("22222-"+name+"="+val+"<br/>"); }} out.print ("¡La cookie se guarda con éxito!"); }}Resultados de la demostración:
Primero ingrese la página Cookiedemo2 para acceder al nombre de nombre de Cookiedemo
Ingrese la página Cookiedemo nuevamente y no pueda acceder al Cookiedemo2 Age Cookie
3. Demuestre la eliminación de cookies
index.jsp:
<a href = "servlet/delcookiedemo"> Demuestre la eliminación de cookies </a> <br/>
web.xml:
<Servlet> <Servlet-name> Delcookiedemo </servlet-name> <ervlet-class> cn.hncu.servlets.delcookiedemo </servlet-class> </servlet> <ervlet-mapping> <ervlet-name> delcookiedemo </servlet-name> <url-pattern>/servlet/delcookiedemo </url-pattern> </servlet-mapphming> </servlet-pattern> </servlet-mapphming> </servlet> </servlet> </servlet-pattern> </servlet-pattern> </servlet-mapphin
Delcookiedemo.java:
paquete cn.hncu.servlets; import java.io.ioException; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.http.cookie; import javax.servlet.http.httpservlet; importar javest.servlet.http.httttttttttt; javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; public class delcookiedemo extiende httpservlet {public void doget respuesta.setContentType ("text/html; charset = utf-8"); PrintWriter out = Response.getWriter (); Cookie CS [] = request.getcookies (); if (cs! = null) {for (cookie c: cs) {// Para atravesar la cookie de "nombre", el servlet actual debe tener permiso de lectura, es decir, el patrón url del servlet debe ser la ruta establecida por la cookie o el subpath de la ruta establecida por él // delete el nombre if ("nombre" .Eutals (c.getName ()) {) {(Deletear // Delete Cookie If ("Name" .Etors (C.getName ()) {(C. request.getContextPath ()); // Al eliminar, ¡el permiso se juzga a través de esta oración! Esto debe ser exactamente lo mismo que la ruta original establecida para eliminar, ¡de lo contrario no se puede eliminar! // Para la oración anterior, mi comprensión personal es: porque si la configuración de su ruta es diferente, en realidad es como se abre una nueva cookie. El tiempo de vencimiento de la nueva cookie es 0, y el nombre es "Nombre" C.SetMaxage (0); // Cuando el vencimiento, vea establecido en 0, lo que significa eliminación --- El logotipo de eliminación se establece aquí para responder.addcookie (c); }}}}}}Resultados de la demostración:
En este momento, el nombre todavía existe.
Visitamos Delcookiedemo.
Vaya al primer enlace para leer:
¡El nombre se ha ido!
Firefox eliminará automáticamente las cookies caducadas:
4. Use cookies para mostrar la última vez que el usuario inició sesión
index.jsp:
<a href = "loginservlet"> Use cookies para mostrar la última vez que el usuario inició sesión </a>
web.xml:
<servlet> <servlet-name> loginservlet </servlet-name> <ervlet-class> cn.hncu.servlets.loginservlet </servlet-class> </servlet> <ervlet-mapping> <ervlet-name> loginservlet </servlet-name> <url-pattern>/loginservlet </ url-pattern> <//////ebarlet-mapping>
LoginServlet.java:
paquete cn.hncu.servlets; import java.io.ioexception; import java.io.printwriter; import java.text.simpledateFormat; import java.util.date; import javax.servlet.servletexception; import javax.servlet.http.cookie; import javax.servlet.servlet javax.servlet.http.httpservletRequest; import javax.servlet.http.httpServletResponse; public class LoginServlet extiende httpservlet {public void doget (httpservletRequest request, htttpServletResponse Respuesta) que sirve a servicio, IOException { respuesta.setContentType ("text/html; charset = utf-8"); PrintWriter out = Response.getWriter (); out.println ("<! DocType html public/"-// w3c // dtd html 4.01 transitional // en/">"); out.println ("<html>"); out.println ("<Evieve> <title> Demuestre el uso de cookies para mostrar la última hora de inicio de sesión del usuario </title> </head>"); out.println ("<body>"); // Lea la cookie de cookie del cliente CS [] = request.getcookies (); boolean boo = falso; if (cs! = null) {for (cookie c: cs) {// viajar if ("logInTime" .equals (c.getName ())) {string val = c.getValue (); dt largo = long.parselong (val); Fecha d = nueva fecha (dt); SimpleDateFormat sdf = new SimpleDateFormat ("yyyyy año mm mes dd fecha hh: mm: ss"); out.print ("Su último tiempo de inicio de sesión fue:"+sdf.format (d)); boo = verdadero; romper; }}} if (boo == falso) {// significa que no hay registro de acceso en un año antes. Porque el tiempo de vencimiento que ahorramos a continuación es Out.print ("Estás visitando por primera vez en el último año ..."); } // Si se trata de usuarios nuevos o antiguos, se creará una cookie en las últimas dos veces y se escribirá al cliente. Lo que originalmente he tenido es la fecha de tiempo de actualización d = nueva fecha (); Cookie c = nueva cookie ("logintime", ""+d.gettime ()); C.SetPath (request.getContextPath ()); c.setMaxage (60*60*24*30*12); Respuesta.AddCookie (C); out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); }}Resultados de la demostración:
Primera visita;
Visite de nuevo:
5. Use la tecnología de cookies para mostrar varias imágenes recientemente navegadas por los usuarios
index.jsp:
<a href = "jsps/show.jsp"> Mire la tecnología de cookies que usa bellezas para mostrar varias imágenes recientemente navegadas por los usuarios </a>
web.xml:
<Servlet> <Servlet-name> showservlet </servlet-name> <ervlet-class> cn.hncu.servlets.showservlet </servlet-class> </servlet> <ervlet-mapping> <ervlet-name> showservlet </servlet-name> <url-pattern>/showimg </ url-pattern> </servletxpapping>
show.jsp:
<%@ page import = "java.io.file"%> <%@ page lenguaje = "java" import = "java.util.*" PageEncoding = "utf-8"%> <! Doctype html público "--/ w3c // dtd html 4.01 transición // en"> <html> <bead> <syle type = "text. borde: 0px Solid #000; Ancho: 100px; Altura: 100px; desbordamiento: oculto; } .span img {max-width: 100px; _Width: Expression (this.width> 100? "100px": this.width); } .spans {border: 0px sólido #000; Ancho: 50px; Altura: 50px; desbordamiento: oculto; } .spans img {max-width: 50px; _Width: Expression (this.width> 50? "50px": this.width); } </style> </head> <body> <h1> Mire la tecnología de cookies de uso de bellezas para mostrar varias imágenes recientemente navegadas por los usuarios </h1> <a href = "/mycookieweb/jsps/show.jsp"> Mire la tecnología de cookies que usa belleza para mostrar varias imágenes recientemente navegadas por el usuario </a> <h3> recientemente fruncidas: </h3>. Vistas-> <% String str = null; Cookie CS [] = request.getcookies (); if (cs! = null) {for (cookie c: cs) {if ("imágenes" .equals (c.getName ())) {str = c.getValue (); // ***. jpg break; }}} if (str! = null) {string strs [] = str.split (","); for (string s: strs) {%> <span> <img src = "<%= request.getContextPath ()%>/imgs/<%= s%>"/> </span> <%}}%> <br/> <hr/> <br/> <%// Use el archivo para atravesar todas las imágenes y mostrarlas. String ruta = getServletContext (). GetRealPath ("/imgs"); //System.out.printf(path); //D:/apache-tomcat-7.0.30/webapps/mycookieweb/jsps file file = new java.io.file (ruta); File [] files = file.listFiles (); if (files! = null) { %> < % para (archivo f: archivos) {string imgname = f.getName (); %> <span> <a href = "<%= request.getContextPath ()%>/showImg? img = <%= imgname%>"> <img src = "<%= request.getContextPath ()%>/imgs/<%= imgnEns%%>"/> </a> </span> <%> <%}%> </htmlameShowservlet.java:
paquete cn.hncu.servlets; import java.io.ioException; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.http.cookie; import javax.servlet.http.httpservlet; importar javest.servlet.http.httttttttttt; javax.servlet.http.httpServletResponse; public class ShowServlet extiende httpservlet {public void doget (httpservletRequest solicitud, httpservletResponse respuesta) lanza ServletException, ioexception {respuesta.setContentTentType ("text/html"); PrintWriter out = Response.getWriter (); out.println ("<! DocType html public/"-// w3c // dtd html 4.01 transitional // en/">"); out.println ("<html>"); out.println ("<Ethead> <title> un servlet </title> </head>"); out.println ("<body>"); Cadena img = request.getParameter ("img"); String imgstr = "<img src = '"+request.getContextPath ()+"/imgs/"+img+"' //>"+img+"'// Use cookies para registrar la información de imagen visitada por el usuario cookie cs [] = request.getcookies (); booan boo = falso; if (cs! = Null) {para (cookie cs) if ("imágenes" .equals (c.getName ())) {// ya tengo una cadena de cookie imgs = c.getValue (); if (imgstrs [i] .equals (img)) {if (i == 1 && imgstrs.length == 2) {imgs = imgstrs [i]+","+imgstrs [0]; imgs = imgstrs [i]+","+imgstrs [0]+","+imgstrs [1]; imgs = img+","+imgs; // será un poco problemático usar el siguiente método: imgs+","+img if (imgs.split (","). Longitud> 3) {// Si la imagen visitada más de 3 veces imgs = imgs.substring (0, imgs.lastindexf (","); // incluye a la izquierda, no es 3 veces imgs = imgs.substring (0, imgs.lastindexf (",")); // incluye a la izquierda, no es 3 veces IMGS = IMGS.Substring (0, imgs.lastindexf (",");//incluye a la izquierda, no es más de 3 veces imgs =//////. Esto, es mejor revertir el orden de agregar las imágenes de prevención anteriores. if (imgs.split (","). Longitud> 3) {// Si la imagen visitó más de 3 veces imgs = imgs.substring (imgs.indexof (",")+1, imgs.length ()); }*/} C.SetValue (IMGS); // Update C.SetMaxage (60*60*24*30); C.SetPath ("/"); // equivalente a los derechos de acceso completamente relajantes, es decir, todos los proyectos pueden acceder a la respuesta. Addcookie (c); boo = verdadero; romper; }}} if (boo == false) {// Indica la primera visita, es decir, no hay imagen de navegación en la cookie del navegador c = nueva cookie ("imágenes", img); C.SetMaxage (60*60*24*30); C.SetPath ("/"); Respuesta.AddCookie (C); } out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); }}Resultados de la demostración:
6. Pruebe ¿cuántas galletas y qué tan grande es la galleta máxima del navegador Firefox?
index.jsp:
<a href = "Servlet/HowManycookieservlet"> Pruebe el número máximo de cookies y una cookie que el navegador Firefox admite </a> <br/>
web.xml:
<Servlet> <Servlet-name> HowManyCookie </servlet-name> <ervlet-class> cn.hncu.servlets.howmanycookie </servlet-class> </servlet> <ervlet-mapping> <ervlet-name> howManycookie </servlet-name> <Ull-patter-patter>/servlet/howmanycookiesevlet </url-patter-patter-patter-patter-patter-patter-patter
HowManyCookie.java:
paquete cn.hncu.servlets; import java.io.ioexception; import java.io.printwriter; import java.net.urldecoder; import javax.servlet.servletexception; import javax.servlet.http.cookie; import javax.servlet.http.httpservlet; import; importar; importar; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpServletResponse; clase pública HowManyCookie extiende httpservlet {public void doget (httpservletRequest solicitud, httpServletResponse) lanza Servletexception, iOexception {PRITWRIter Out = respuesta.getWriter (); /* // Número de pruebas-Firefox 47.0.1 admite hasta 110 para (int i = 1; i <= 110; i ++) {cookie c = new Cookie ("Textnum"+i, ""+i); C.SetMaxage (60*15); C.SetPath ("/"); Respuesta.AddCookie (C); } */// Tamaño de prueba --- 4092 bytes es la cadena de almacenamiento de cookies única más grande con soporte S = ""; para (int i = 0; i <4092; i ++) {s+= "1"; } Cookie c = nueva cookie ("prueba", s); C.SetMaxage (60*15); C.SetPath ("/"); Respuesta.AddCookie (C); Cookie cs [] = request.getCookies (); // Leer cookie if (cs! = Null) {// Cuidado con (cookie cc: cs) {string key = cc.getName (); Cadena val = cc.getValue (); out.print (clave+"="+val+""); }}}}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.