1. O que é um biscoito? Comentários dos internautas de Baidu
Simplificando, um cookie é uma informação armazenada temporariamente no seu computador pelo servidor para que o servidor possa usá -lo para identificar seu computador. Quando você está navegando em um site, o servidor da Web enviará primeiro uma pequena quantidade de informações para colocá -lo no seu computador. Quando você visita o mesmo site na próxima vez, o servidor da web verá primeiro se há informações de cookies que deixou para trás da última vez. Nesse caso, o usuário será julgado com base no conteúdo do cookie e enviará conteúdo específico da página da web.
2. Onde estão os cookies?
3. Os cookies podem ser excluídos?
4. Princípio de implementação de cookies
A primeira vez que solicito o navegador, na loja de biscoitos do navegador, não há cookies,
A primeira visita não contém cookies. O navegador adiciona um cabeçalho de solicitação de cookie à mensagem de solicitação HTTP para passar o cookie de volta ao servidor da Web. O navegador armazenará o fragmento de informação do cookie na forma de pares "Nome/Valor" (pares de nomes-valor). Na próxima vez que você acessar, o servidor da web adiciona um cabeçalho de resposta ao conjunto de cookie à mensagem de resposta HTTP para enviar as informações do cookie ao navegador.
Vamos dar uma olhada nos cookies pela realidade
Crie um cookie.jsp, set session = "false" para facilitar a observação
<%@ página de página = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8" session = "false"%> <! Doctype html public "-// w3c // dtd html 4.01 transitória // en" "http://www.w3.org/tr/html4/loose.dtd"><html> <head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <title> um título aqui </title <////html; charset = utf-8"> <title> um título aqui </título Cookie ("Nome", "Wyf"); Response.addcookie (Cookie);%> </body> </html>Primeiro, acessamos o arquivo cookie.jsp, insira -o no ie
http: // localhost: 8080/Day01/cookie.jsp
No cabeçalho da solicitação, você pode ver que a primeira visita não carrega cookies.
No cabeçalho da resposta, ele é enviado de volta através do Set-Cookie e salvo na loja de biscoitos local do navegador
Acessamos o arquivo cook.jsp pela segunda vez para ver se há alguma mudança
No cabeçalho da solicitação, você pode ver que o acesso é uma solicitação que carrega cookies da área de armazenamento de biscoitos locais do navegador.
A seguir, o cabeçalho da resposta:
Vamos usar um gráfico interativo para entender o mecanismo de cookies:
Vamos dar uma olhada na criação e aquisição de cookies
O código no cookie.jsp significa: se não houver cookie na solicitação, ele será criado e devolvido. Se a solicitação contiver um cookie, ele produzirá um par de valores-chave de cookie (valor de nome)
<%@ página de página = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8" session = "false"%> <! Doctype html public "-// w3c // dtd html 4.01 transitória // en" "http://www.w3.org/tr/html4/loose.dtd"><html> <head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <title> title] (/title </title/head> </html; request.getCookies (); if (cookies! = null && cookies.length> 0) {for (cookie cookie: cookies) {out.print (cookie.getName ()+":"+cookie.getValue ());}} else {out.print ("nenhum cookie, está sendo criado e devoluto"); Cookie ("Nome", "Wyf"); Response.addcookie (Cookie);}%> </body> </html>Primeira visita
Segunda visita
A operação acima é que precisamos fechar o navegador novamente. Por que estamos depurando?
Porque, por padrão, um cookie é um cookie de nível de sessão, armazenado no kernel do navegador, e o usuário é excluído depois de sair do navegador. Se você deseja que o navegador armazene o cookie no disco, você precisa usar o Maxage, que está em segundos
Vamos dar uma olhada em biscoitos persistentes
<%Cookie [] cookies = request.getCookies (); if (cookies! = Null && cookies.length> 0) {for (cookie cookie: cookies) {out.print (cookie.getName ()+":" não é criado, não é criado. Cookie ("Nome", "Wyf"); Cookie.SetMaxage (30); Response.Addcookie (Cookie);}%>Cookie.setMaxage (30); Definido como 30 segundos, para não terei uma captura de tela aqui. Apenas diga que está sob o seu nome. Se você não tiver cookies pela primeira vez, poderá criar cookies pela segunda vez. Se você não tiver cookies pela segunda vez, poderá fechar o navegador e acessar em 30 segundos. Você ainda solicita os cookies para o par de valores-chave, em vez do prompt anterior, não possui cookies para os cookies para o anterior. Você não tem cookies para os cookies para o anterior.
Login automático
login.jsp
<%@ página de página = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transitório // en" "http://www.w3.org/tr/html4/loose.dtd"><html> <head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <tition> title title aqui </." Method = "Post"> Nome: <input type = "text" name = "name"/> <input type = "submit" value = "sumit" // </morm> </body> </html>
succcess.jsp
<%@ página de página = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8" session = "false"%> <! Doctype html public "-// w3c // dtd html 4.01 transitória // en" "http://www.w3.org/tr/html4/loose.dtd"><html> <head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <titter> title title aqui </title> <//html; as informações no cookie e defina a hora do nome da string de cookie = request.getParameter ("nome"); if (nome! Cookie e leia as informações do usuário do cookie. Se houver, imprima o cookie de mensagem de boas -vindas [] cookies = request.getCookies (); if (cookies! = Null && cookies.length> 0) {for (cookie: cookies) {string cookiename = {stringname (); if ("namecookie" .equals (cookiEname) {string val =; ! = null &&! name.trim (). Equals ("")) {out.print ("hello" + nome);} else {// se não houver parâmetros de solicitação e nenhum cookies, redirecreva para login.jspropSonse.sendRedirect ("login.jsp");}%> </body> </htr. Na primeira vez em que você visita http: // localhost: 8080/Day01/login.jsp, digite o valor do parâmetro Nome e envie -o. No sucesso.jsp, primeiro obtenha o valor do nome do parâmetro enviado. Se não for nulo, defina um cookie diretamente, salve o valor do nome do parâmetro e, em seguida, produza o valor do parâmetro Nome na página. Quando você visita a segunda vez, você entra diretamente http: // localhost: 8080/Day01/success.jsp,
Desde então, carregamos o valor do nome do parâmetro, precisamos apenas obter o valor do valor do valor do cookie e depois exibir a saída
Mostre história recente de compras
books.jsp
<%@ página de página = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transitório // en" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><h4>Books Page</h4><a href = "book.jsp? book = javaweb"> javaweb </a> <a href = "book.jsp? book = java"> java </a> <a href = "book.jsp? book = oracle"> oracle </a> <a href = "book.jsp? href = "book.jsp? book = javascript"> javascript </a> <a href = "book.jsp? book = Android"> Android </a> <a href = "book.jsp? bookyies = jbpm"> jbpm <br> <br> <br> <bling.Cookies] Livro filtrado, se Cookiename for atguigu_book_, ele atende às condições se (cookies! CookievAvalueout.println (c.getValue ()); out.print ("<br>");}}}%> </body> </html>book.jsp
<%@página import = "java.util.ArrayList"%> <%@página de página = "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 aqui (" <//" %> <br> <br> <a href = "books.jsp"> retornar </a> < %string book = request.getParameter ("book"); // Determine o cookie excluído [] biscoitos de savoryn/savoryj; O cookie combinado com o livro de biscoitos tempcookie = null; if (cookies! = Null && cookies.length> 0) {for (cookie c: cookies) {string cookiename = c.getName (); if (cookiename.startswith ("Select Afriefing), o bookcookies.ad (c); if (c.getValue (). Equals (livro)) {out.print ("c.getValue (). Equals (book)"); tempcookie = c;}}}}} // selecione 5 livros que não estes 5 livros se (bookies.size ()> = 5 && tempcookie == Nul) {Nul); //out.print("tempcookie == null ");} // Se estiver nele, exclua o próprio Bookcookie, exclua os cookies duplicados na lista e transmita -o se (tempcookie! = null) {tempcookie.setmaxage (0); Response.addcookie (tempcookie);} // retorna o livro passou do books.jsp como um cookie de cookie = new Cookie ("SAFLY"+Book, Book); Response.addcookie (Cook);%> </body> </html>Vamos falar sobre o relacionamento lógico:
No books.jsp, abaixo está uma lista de livros.
Javaweb
Java
Oráculo
Ajax
JavaScript
Android
Jbpm
Selecionei aleatoriamente um link (como Javaweb) para pular para book.jsp. A primeira vez que acessei, não havia biscoito, então liguei para o seguinte método de book.jsp e criei um cookie. Na página book.jsp, clique em Retornar para retornar ao books.jsp e retirar o cozinheiro trazido pelo Cooks.jsp e, em seguida, exibir a lista de livros selecionada.
Cookie Cook = New Cookie ("Safly"+livro, livro); Response.addcookie (Cook); Agora voltamos ao books.jsp e selecionamos um livro Javaweb. Estamos escolhendo um livro (assumindo Java) e depois pulando para o books.jsp. Nesse momento, traremos um biscoito (foi passado para mim quando Javaweb foi selecionado pela primeira vez para acessar os livros.jsp). O valor chave deste cookie é o Saflyjavawebjavaweb, mas o quê? Selecionar o segundo livro Java não vem com cookies (sem Saflyjava)
Em seguida, digite Cooks.jsp
if (Cookiename.StartSwith ("Safly")) {bookookies.add (c);}Portanto, coloque o Saflyjavawebjavaweb em um Bookcookies (armazenando a lista de livros selecionados) e, em seguida, o Saflyjavajava será criado. Ao clicar em Renturn, dê cookies.jsp reverso
. . . . Ao escolher um livro para a 3ª, 4ª e 5ª vezes, é o mesmo processo. Se você escolher 5 livros em livros.jsp, como lidar com isso ao escolher um desses 5 livros?
c.getValue (). Iguals (livro) para obter o livro selecionado. Precisamos excluir este cookie e adicioná -lo novamente e passar de volta ao código Cookies.jsp da seguinte forma:
tempcookie.setMaxage (0); Response.addcookie (tempcookie);
Se você escolher 5 livros em livros.jsp e escolher o 6º livro que não é os 5 livros, como lidar com isso?
Vamos apenas tempcookie = bookookies.get (0); Retire o primeiro livro dos 5 livros e depois tempcookie.setmaxage (0); Exclua o primeiro cookie e depois crie o cookie de volta para cookies.jsp
Aqui estão algumas capturas de tela:
O caminho de ação dos cookies
Cookie2.jsp
<%@ página de página = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transitório // en" "http://www.w3.org/tr/html4/loose.dtd"><html> <head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <title> title title </titleue <//html; request.getcookies (); if (cookies! = null && cookies.length> 0) {for (cookie biscoito: cookies) {if ("cookiepath" .equals (cookie.getName ())) {CookieVAvalue = cookie.getValue ();}}}}} (cookievalue! = null) {out.print (CookieValue);} else {out.print ("sem cookie especificado");}%> </body> </html>writercookie.jsp
<%@ página de página = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transitório // en" "http://www.w3.org/tr/html4/loose.dtd"><html> <head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <title> title the title </title> <////html; charset = utf-8"> <title> title the Currex> <//////html; html; Diretório, mas não pode agir no diretório anterior do diretório atual // pode definir o escopo do cookie através do SetPath,/representa o diretório raiz do site cookie = new Cookie ("cookiepath", "cookiePathValue"); cookie.setPath (solicitação.getContext); resposta.addcookie (cookie); Cookie2.jsp </a> </body> </html>Para cookie2.jsp é o cookie2.jsp que acessa o diretório superior do WriterCookie.jsp
O acima exposto está o desenvolvimento Javaweb usando cookies para criar - persistência, login automático, registros de compras e caminhos de função. Espero que seja útil para todos. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a todos a tempo. Muito obrigado pelo seu apoio ao site wulin.com!