Este artigo explica em detalhes:
1. Demonstre o uso básico de cookies
2. Demonstre as permissões de acesso de cookies
3. Demonstre a exclusão de biscoitos
4. Use cookies para exibir a última vez que o usuário está conectado
5. Use a tecnologia de cookies para exibir várias fotos recentemente navegadas por usuários
6. Teste quantos cookies e qual o tamanho do biscoito máximo do navegador Firefox?
1. Demonstre o uso básico de cookies
index.jsp:
<%@ Page Language = "java" import = "java.util.*" PageEncoding = "utf-8"%> <! href = "Cookiedemo"> Demonstrar uso básico de cookie </a> <br/> </body> </html>
web.xml:
<?xml version="1.0" encoding="UTF-8"?><web-app version="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"> <lame-name> </sision-nlet> <ervertlet> <ervertn-name> <Verlet-class-class> cn.hncu.servlets.cookiedemo </servlet-class> </servlet> <Servlet-mapping> <Verlet-name> Cookiedemo </servlet-name> <url-plattern>/Cookiedemo </url-tattern> </servlet-mapping> <lorde--File-list> </list-list> </web-App>
Cookiedemo.java:
pacote cn.hncu.servlets; importar java.io.ioException; importar java.io.printwriter; importar java.net.urldecoder; importar java.net.urlencoder; import java.util.random; import javax.servlet.servTeTexception; javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class CookieDemo extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws Servletexception, ioException {Response.SetContentType ("text/html; charset = utf-8"); PrintWriter out = Response.getWriter (); // Escreva cookies no cliente aleatório r = new aleatom (); int n = r.nextint (100); String name = "jack"; // o formato do cookie: key = value cookie c = novo cookie ("nome", nome+n); c.setMaxage (60*60); // Defina o tempo de expiração, em segundos c.setPath (request.getContextPath ()); // Este caminho é:/Nome do projeto // No mecanismo de cookie, as permissões são controladas através do caminho. Somente servlets com o mesmo caminho que o caminho ou subspata podem acessar o cookie // Se o caminho de um cookie for definido como o diretório raiz do projeto, todos os servlets do projeto podem acessar a resposta. // Este cookie de demonstração tem string chinesa str = "eu trago chinês"; str = urlencoder.encode (STR, "UTF-8"); // Definir codificação em chinês! ! ! Urlencode que codifica cookie cstr = novo cookie ("str", str); // Se o setMaxage não estiver definido, o navegador expira assim que estiver fechado cstr.setPath ("/"); Response.Addcookie (CSTR); // leia cookie cs [] = request.getcookies (); // leia cookie if (cs! = Null) {// bewar de for (cookie cc: cs) {string name2 = cc.getName (); String val = cc.getValue (); val = urldecoder.decode (val, "utf-8"); // Acontece que ele o decodificará à medida que é codificado! Decodificação chinesa, ASCII é como é! out.print (nome2+"="+val+"<br/>"); }} out.print ("Cook salvo com sucesso!"); }}Resultados da demonstração:
No primeiro clique! A sessão será discutida na próxima vez! O Tomcat é gerado automaticamente e enviado ao cliente!
Ao entrar de novo!
Nome+N Como o N por trás está sendo gerado aleatoriamente, esse clique sempre exibe as informações do anterior!
2. Demonstre as permissões de acesso de cookies
index.jsp:
<a href = "servlet/bookiedemo2"> demonstram as permissões de acesso de cookies </a> <br/> web.xml: <servlet> <Servlet-name> Cookiedemo2 </servlet-name> </servlet-class> cn.hncu.servlets.cookiedemo2 </servlet-class> <Verlet-name> Cookiedemo2 </servlet-name> <url-Pattern>/servlet/Cookiedemo2 </url-tattern> </servlet-mapping>
Cookiedemo2.Java:
package 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; importar javax.servlet.http.httpServletResponse; public class Cookiedemo2 estende httpservlet {public void Doget (httpSertleTreQuest Solicution, hTtPeseptSonsept) Response.setContentType ("Texto/html; charset = utf-8"); PrintWriter out = Response.getWriter (); // Escreva cookies no cliente aleatório r = new aleatom (); int n = r.nextint (100); Cookie c = novo cookie ("idade", ""+n); c.setMaxAge(60*60);//Expiration time c.setPath( request.getContextPath()+"/servlet/CookieDemo2");//In the Cookie mechanism, permissions are controlled through path // Since the url-pattern of CookieDemo is the project root directory/CookieDemo, and is not a subdirectory of the path set by the current cookie, the cookie cannot be accessed //Note! ! ! Se o caminho for diferente, o cookie é um objeto diferente, o que significa que o cookie com o mesmo nome não será sobreposto! Response.Addcookie (C); // Leia os cookies enviados do cookie do cliente CS [] = request.getCookies (); if (cs! = null) {for (cookie cc: cs) {string name = cc.getName (); String val = cc.getValue (); out.print ("22222-"+nome+"="+val+"<br/>"); }} out.print ("Cookie é salvo com sucesso!"); }}Resultados da demonstração:
Primeiro, digite a página Cookiedemo2 para acessar o Nome Cookiedemo-Cookie
Digite a página Cookiedemo novamente e não pode acessar o Cookie-Cookie Cookiedemo2
3. Demonstre a exclusão de biscoitos
index.jsp:
<a href = "servlet/delcookiedemo"> demonstrar a exclusão de cookies </a> <br/>
web.xml:
<servlet> <servlet-name>DelCookieDemo</servlet-name> <servlet-class>cn.hncu.servlets.DelCookieDemo</servlet-class> </servlet> <servlet-mapping> <servlet-name>DelCookieDemo</servlet-name> <url-pattern>/servlet/DelCookieDemo</url-pattern> </servlet-mapping>
Delcookiedemo.java:
pacote cn.hncu.servlets; importar java.io.ioexception; importar java.io.printwriter; importar javax.servlet.servletexception; importar javax.servlet.http.cookie; importação javax.serv.http.htttTlet; javax.servlet.http.httpServletReQuest; importar javax.servlet.http.httpServletResponse; classe pública Delcookiedemo estende httpServlet {public void Doget (httpSleTreQuest, htttseption {vazio a servir (httpsleTrequest, solicitação de, httPeseptSonsEnscent). Response.setContentType ("Texto/html; charset = utf-8"); PrintWriter out = Response.getWriter (); Cookie cs [] = request.getcookies (); if (cs! = null) {for (cookie c: cs) {// para atravessar o cookie "nome", o servlet atual deve ter permissão de leitura, ou seja, o padrão de URL do servlet deve ser o caminho definido pelo cano (". request.getContextPath ()); // Ao excluir, a permissão é julgada por esta frase! Isso deve ser exatamente o mesmo que o caminho original definido para excluir, caso contrário, não poderá ser excluído! // Para a frase anterior, meu entendimento pessoal é: porque se as configurações do seu caminho são diferentes, é realmente como um novo cookie é aberto. O tempo de validade do novo cookie é 0 e o nome é "nome" c.setMaxage (0); // Quando a expiração, consulte definido como 0, o que significa exclusão --- O logotipo da exclusão é definido aqui para responder.Addcookie (c); }}}}}}Resultados da demonstração:
Neste momento, o nome ainda existe.
Visitamos Delcookiedemo.
Vá para o primeiro link para ler:
O nome se foi!
O Firefox excluirá automaticamente os cookies vencidos:
4. Use cookies para exibir a última vez que o usuário está conectado
index.jsp:
<a href = "LogInservlet"> Use cookies para exibir a última vez que o usuário está conectado a </a>
web.xml:
<Verlet> <Verlet-name> LogInservlet </Servlet-Name> <Servlet-Class> cn.hncu.servlets.loginservlet </servlet-class> </servlet> <vattern-Mapping> </url-divistn </url-divatter </url--tattern>/LoginsVletn>
LogInservlet.java:
pacote cn.hncu.servlets; importar java.io.ioException; importar java.io.printwriter; importar java.text.simpledEformat; importar java.util.date; importação javax.cokie. javax.servlet.http.httpServlet; importar javax.servlet.http.httpServletRequest; importar javax.servlet.http.httpServletResponse; classe pública Logins ServLends httpslet {Public Void Doget (HTTPSRESTLE Servletexception, ioException {Response.SetContentType ("text/html; charset = utf-8"); PrintWriter out = Response.getWriter (); out.println ("<! doctype html public/"-// w3c // dtd html 4.01 transitório // en/">"); out.println ("<html>"); out.println ("<head> <title> demonstrar usando cookies para exibir o último horário de login do usuário </title> </head>"); out.println ("<body>"); // Leia o cookie de cookie do cliente CS [] = request.getCookies (); Boolean boo = false; if (cs! = null) {for (cookie c: cs) {// Travel if ("LogIntime" .equals (c.getName ())) {string val = c.getValue (); dt longo = long.parselong (val); Data d = nova data (dt); SimpledateFormat sdf = new SimpleDateFormat ("AA YYYYY ANO MM Mês DD Data HH: MM: SS"); out.print ("Seu último tempo de login foi:"+sdf.format (d)); boo = true; quebrar; }}} if (boo == false) {// significa que não há registro de acesso em um ano antes! Porque o tempo de validade que economizamos abaixo está fora.Print ("Você está visitando pela primeira vez no ano passado ..."); } // Seja Usuários novos ou antigos, um cookie será criado nas últimas duas vezes e escrito para o cliente. O que eu tive originalmente é a data da atualização d = new Date (); Cookie C = novo cookie ("LogIntime", ""+D.Gettime ()); c.setPath (request.getContextPath ()); c.setMaxage (60*60*24*30*12); Response.Addcookie (C); out.println ("</body>"); out.println ("</html>"); out.flush (); out.Close (); }}Resultados da demonstração:
Primeira visita;
Visite novamente:
5. Use a tecnologia de cookies para exibir várias fotos recentemente navegadas por usuários
index.jsp:
<a href = "jsps/show.jsp"> Veja a tecnologia de biscoitos que usam belezas para exibir várias fotos recentemente navegadas por usuários </a>
web.xml:
<Verlet> <Verlet-name> ShowServlet </servlet-name> <Servlet-Class> cn.hncu.servlets.showServlet </servlet-class> </servlet> <sirtlet-mapping> <sutlet-name> ShowServlet </servlet-name> <url-tattern>
show.jsp:
<%@ página import = "java.io.file"%> <%@ página linguagem = "java" import = "java.util. borda: 0px sólido #000; Largura: 100px; Altura: 100px; estouro: oculto; } .span img {max-width: 100px; _width: expressão (this.width> 100? "100px": this.width); } .spans {borda: 0px Solid #000; Largura: 50px; Altura: 50px; estouro: oculto; } .sspans img {max-width: 50px; _width: expressão (this.width> 50? "50px": this.width); } </style> </ad Head> <body> <h1> Veja a tecnologia de biscoitos de belezas-exibir várias fotos recentemente lançadas pelos usuários </h1> <a href = "/mycookiebeb/jsps/show.jsp"> observe a tecnologia de biscoitos de beleza recentemente: </a> <h3> Brows Brows Browsed Receio: </a> visualizações-> <% string str = null; Cookie cs [] = request.getcookies (); if (cs! = null) {for (cookie c: cs) {if ("imagens" .equals (c.getName ())) {str = c.getValue (); // ***. jpg break; }}} if (str! = null) {string strs [] = str.split (","); para (string s: strs) {%> <pan> <img src = "<%= request.getContextPath ()%>/imgs/<%= s%>"/> </span> <%}}%> <br/> <hr/> <br/> <%// use o arquivo para atravessar todas as figuras e exibi -las. String Path = getServletContext (). GetRealPath ("/imgs"); //System.out.printf(Path); //D:/apache-tomcat-7.0.30/webapps/mycookieweb/jspss file = new java.io.file (caminho); Arquivo [] arquivos = file.listfiles (); if (files! = null) { %> < % para (arquivo f: arquivos) {string imggname = f.getName (); %> <pan> <a href = "<%= request.getContextPath ()%>/showImg? img = <%= imgName%>"> <img src = "<%= request.getContextPath ()%>/imgs/<<sggname>"/> </a> </span> <%>ShowServlet.java:
pacote cn.hncu.servlets; importar java.io.ioexception; importar java.io.printwriter; importar javax.servlet.servletexception; importar javax.servlet.http.cookie; importação javax.serv.http.htttTlet; javax.servlet.http.httpServletResponse; classe pública ShowServlet estende httpServlet {public void Doget (solicitação httpServletRequest, httpServLeTResponse) lança servletexception, ioxception {Respons.setContentType ("text/htmml/htmlpen; PrintWriter out = Response.getWriter (); out.println ("<! doctype html public/"-// w3c // dtd html 4.01 transitório // en/">"); out.println ("<html>"); out.println ("<head> <title> um servlet </ititle> </ad Head>"); out.println ("<body>"); String img = request.getParameter ("img"); String imgstr = "<img src = '"+request.getContextPath ()+"/imgs/"+img+"' //>"+img+"'// use cookies para gravar as informações da imagem visitadas pelo usuário cs) = null.l) () para (); se ("imagens" .quals (c.getName ())) {// Eu já tenho imagens cookie string 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á um pouco problemático usar o seguinte método: imgs+","+img if (imgs.split (","). length> 3) {// não a imagem visitada mais de 3 vezes (iMgs =). É melhor reverter a ordem de adicionar as imagens duplicadas acima. if (imgs.split (","). Comprimento> 3) {// se a imagem visitou mais de 3 vezes imgs = imgs.substring (imgs.indexOf (",")+1, imgs.length ()); }*/} C.SetValue (imgs); // Atualize C.SetMaxage (60*60*24*30); c.setPath ("/"); // equivalente a direitos de acesso completamente relaxantes, ou seja, todos os projetos podem acessar a resposta.addcookie (c); boo = true; quebrar; }}} if (boo == false) {// indica a primeira visita, ou seja, não há imagem navegando no biscoito do navegador C = new Cookie ("imagens", img); c.setMaxage (60*60*24*30); c.setPath ("/"); Response.Addcookie (C); } out.println ("</body>"); out.println ("</html>"); out.flush (); out.Close (); }}Resultados da demonstração:
6. Teste quantos cookies e qual o tamanho do biscoito máximo do navegador Firefox?
index.jsp:
<a href = "servlet/HowManyCookieServlet"> Teste o número máximo de cookies e um cookie que o Firefox Browser suporta </a> <br/>
web.xml:
<Verlet> <Verlet-name> HowManycookie </servlet-name> <Servlet-Class> cn.hncu.servlets.howmanycookie </servlet-class> </servlet> <url-patnating> <Verlet-name> Howmanycookie </servlet-name> <url-Pattern>/servlet/houkanycookie </servlet> </servlet-mapping>
Howmanycookie.java:
package 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 javax.servlet.http.httpServletRequest; importar javax.servlet.http.httpServletResponse; classe pública HowManyCookie estende httpServlet {public void Doget (httpSleTreQuest Solicution, htttseption nsenscent) resposta.getWriter (); /* // Número de testes-Firefox 47.0.1 suporta até 110 para (int i = 1; i <= 110; i ++) {cookie c = novo cookie ("textnum"+i ""+i); c.setMaxage (60*15); c.setPath ("/"); Response.Addcookie (C); } */// Tamanho do teste --- 4092 Bytes é a maior sequência de armazenamento de biscoito único suportado único S = ""; for (int i = 0; i <4092; i ++) {s+= "1"; } Cookie c = novo cookie ("teste", s); c.setMaxage (60*15); c.setPath ("/"); Response.Addcookie (C); Cookie cs [] = request.getCookies (); // leia cookie if (cs! = Null) {// Cuidado de for (cookie cc: cs) {string key = cc.getName (); String val = cc.getValue (); out.print (chave+"="+val+""); }}}}O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.