Cookies são arquivos de texto armazenados no computador cliente e salvam uma grande quantidade de informações de rastreamento. Baseado na tecnologia servlet, o JSP pode obviamente fornecer suporte para cookies HTTP.
Normalmente existem três etapas para identificar clientes recorrentes:
O script do servidor envia uma série de cookies para o navegador. Como nome, idade, número de identificação, etc.
O navegador armazena essas informações localmente no computador, caso seja necessário.
Na próxima vez que o navegador enviar qualquer solicitação ao servidor, ele também enviará essas informações do cookie ao servidor e, em seguida, o servidor usará essas informações para identificar o usuário ou fazer outras coisas.
Esta seção ensinará como definir ou redefinir cookies, como acessá-los e como excluí-los.
Os cookies geralmente são definidos em cabeçalhos HTTP (embora o JavaScript possa definir cookies diretamente no navegador). Em JSP, a configuração de um cookie requer o envio do seguinte cabeçalho de informações ao servidor:
HTTP/1.1 200 OKData: Sexta-feira, 04 de fevereiro de 2000 21:03:38 GMTServer: Apache/1.3.9 (UNIX) PHP/4.0b3Set-Cookie: name=xyz expira=sexta-feira, 04-fev-07 22:03: 38 GMT caminho=/; domínio=tutorialspoint.comConexão: closeContent-Type: texto/html
Como você pode ver, o cabeçalho Set-Cookie contém um par de valores-chave, um horário GMT (horário de Greenwich), um caminho e um nome de domínio. Os pares de valores-chave serão codificados como URLs. O campo da data de expiração é uma instrução que informa ao navegador após qual período ele poderá limpar esse cookie.
Se o seu navegador estiver configurado para armazenar cookies, ele reterá essas informações até que expirem. Se alguma página visitada pelo usuário corresponder ao caminho e nome de domínio do cookie, o navegador reenviará o cookie de volta ao servidor. O cabeçalho do lado do navegador é assim:
GET / HTTP/1.0Conexão: Keep-AliveUser-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)Host: zink.demon.co.uk:1126Aceitar: imagem/gif, */*Aceitar- Codificação: gzipAccept-Language: enAccept-Charset: iso-8859-1,*,utf-8Cookie: nome=xyz
Os scripts JSP acessam esses cookies por meio do método getCookies() no objeto de solicitação. Este método retorna uma matriz de objetos Cookie.
A tabela a seguir lista os métodos comumente usados em objetos Cookie:
número de série | Método e Descrição |
---|---|
1 | public void setDomain(String pattern) define o nome de domínio do cookie, como w3cschool.cn |
2 | public String getDomain() obtém o nome de domínio do cookie, como w3cschool.cn |
3 | public void setMaxAge(int expiration) define o período de validade do cookie em segundos. O período de validade padrão é o tempo de sobrevivência da sessão atual. |
4 | public int getMaxAge() obtém o período de validade do cookie em segundos, o padrão é -1, indicando que o cookie permanecerá ativo até que o navegador seja fechado |
5 | public String getName() retorna o nome do cookie. O nome não pode ser modificado após ser criado. |
6 | public void setValue(String newValue) define o valor do cookie |
7 | public String getValue() obtém o valor do cookie |
8 | public void setPath(String uri) define o caminho do cookie, cujo padrão é todos os URLs no diretório da página atual e todos os subdiretórios neste diretório. |
9 | public String getPath() obtém o caminho do cookie |
10 | public void setSecure(sinalizador booleano) indica se o cookie deve ser criptografado para transmissão |
11 | public void setComment(String Purpose) define o comentário para descrever a finalidade do cookie. As anotações podem ser úteis quando o navegador exibe o cookie ao usuário |
12 | public String getComment() retorna um comentário descrevendo a finalidade do cookie, ou null se não houver nenhum |
A configuração de cookies usando JSP envolve três etapas:
(1) Crie um objeto Cookie: Chame o construtor Cookie, usando um nome e valor de cookie como parâmetros, sendo que ambos são strings.
Cookie cookie = new Cookie("chave","valor");
É importante lembrar que nem o nome nem o valor podem conter espaços ou os seguintes caracteres:
[ ] ( ) = , " / ? @ : ;
(2) Defina o período de validade: Chame a função setMaxAge() para indicar por quanto tempo (em segundos) o cookie é válido. A operação a seguir define o período de validade para 24 horas.
cookie.setMaxAge(60*60*24);
(3) Envie cookies para o cabeçalho de resposta HTTP: chame a função response.addCookie() para adicionar cookies ao cabeçalho de resposta HTTP.
resposta.addCookie(cookie);
<% // Definir cookies para nome e sobrenome Cookie firstName = new Cookie("first_name", request.getParameter("first_name")); //Defina o tempo de expiração do cookie para 24 horas. firstName.setMaxAge(60*60*24); lastName.setMaxAge(60*60*24); // Adicionar cookie ao cabeçalho de resposta response.addCookie( firstName ); head><title>Configurando cookies</title></head><body><center><h1>Configuração Cookies</h1></center><ul><li><p><b>Nome:</b><%= request.getParameter("first_name")%></p></li>< li><p><b>Sobrenome:</b> <%= request.getParameter("last_name")%></p></li></ul></body></html>
Coloque o arquivo acima no diretório <diretório de instalação do Tomcat>/webapps/ROOT e visite http://localhost:8080/hello.jsp, você obterá a seguinte saída:
Tente inserir o nome e o sobrenome e clique no botão enviar. Ele exibirá o nome e o sobrenome na tela e definirá dois cookies, nome e sobrenome, que serão enviados ao servidor na próxima vez que você clicar. o botão enviar.
Para ler cookies, você precisa chamar o método request.getCookies() para obter uma matriz de objetos javax.servlet.http.Cookie, em seguida, iterar pela matriz e usar o método getName() e o método getValue() para obter cada cookie .nome e valor.
Vamos ler os cookies do exemplo anterior.
<html><head><title>Leitura de cookies</title></head><body><center><h1>Leitura de cookies</h1></center><% Cookie cookie = null Cookie[] cookies =; null; // Obtém dados do cookie, que é uma matriz cookies = request.getCookies(); if( cookies != null ){ out.println("<h2> Nome e valor dos cookies encontrados</h2>"); int eu = 0; i < cookies.length; i++){ cookie = cookies[i]; ( )+" <br/>"); }else{ out.println("<h2>Nenhum cookie encontrado</h2>");
Se você definir o cookie do primeiro nome como "John" e o sobrenome como "Player" e visitar http://localhost:8080/main.jsp, obterá a seguinte saída:
Nome e Valor dos Cookies Encontrados: first_name, Valor: John Nome: last_name, Valor: Player
Excluir cookies é muito fácil. Se você deseja excluir um cookie, basta seguir os passos abaixo:
Obtenha um cookie existente e armazene-o no objeto Cookie.
Defina a data de expiração do cookie como 0.
Adicione este cookie de volta ao cabeçalho de resposta.
O programa a seguir exclui um cookie chamado "first_name". Na próxima vez que você executar main.jsp, first_name será nulo.
<html><head><title>Leitura de cookies</title></head><body><center> <h1>Leitura de cookies</h1></center><% Cookie cookie = null Cookie[] cookies =; null; // Obtenha os cookies sob o nome de domínio atual, que é uma matriz cookies = request.getCookies(); if( cookies != null ){ out.println("<h2> Nome e valor dos cookies encontrados</h2> "); para (int eu = 0; i < cookies.length; i++){ cookie = cookies[i]; (cookie); out.print("Cookie excluído: " + cookie.getName() + "<br/>"); out.print("Valor: " + cookie.getValue()+" <br/>"); } }else{ out.println( "<h2>Nenhum cookie encontrado</h2>"); corpo></html>
Acessá-lo fornecerá a seguinte saída:
Nome e valor dos cookies Cookie excluído: first_nameName: first_name, Valor: JohnName: last_name, Valor: Player
Visite http://localhost:8080/main.jsp novamente e você obterá os seguintes resultados:
Nome e valor dos cookies encontrados: last_name, valor: Player
Você também pode excluir os cookies manualmente no seu navegador. Clique no item de menu Ferramentas, selecione Opções da Internet e clique em Excluir cookies para excluir todos os cookies.