Java para Desenvolvimento Web Cookies Um nada mais é que um bloco de informação que é enviado do servidor para o navegador no cabeçalho da página. A partir de então, dependendo do tempo de validade do, o navegador reenvia essa informação para o servidor a cada nova requisição. Dependo do caso o é também armazenado no disco da máquina cliente e quando o site é novamente visitado o é enviado para o servidor, fornecendo a informação desejada. Cookies são importantes para identificar usuários, tendo em vista que o protocolo HTTP não permite essa identificação por ser um protocolo orientado a conexão, s hoje são amplamente adotados em sistemas na internet. A identificação de clientes surgiu de algumas necessidades que antes dos Cookies não eram possíveis, tais como observação de comportamento do usuário realizando adaptações para o mesmo, fornecer uma visualização e um conjunto de funcionalidades adequadas às suas preferências e várias outras características. No entanto o usuário pode evitar o uso de s no navegador impossibilitando o servidor de conhecer o cliente que faz a requisição. Para utilizar s a API de Servlets provê sua manipulação explícita, para utilizar s deve-se usar a classe javax.servlet.http.cookie. Veja os métodos da classe Cookie a seguir.
Métodos Método String getname() String getvalue() String getdomain() String getpath() boolean getsecure() void setvalue(string newvalue) void setdomain(string pattern) void setpath(string url) void setmaxage(int expiry) getcomment() getmaxage() setcomment(string) Descrição retorna o nome do retorna o valor armazenado no retorna o servidor ou domínio do qual o pode ser acessado retorna o caminho de URL do qual o pode ser acessado indica se o acompanha solicitações HTTP ou HTTPS atribui um novo valor para o define o servidor ou domínio do qual o pode ser acessado define o caminho de URL do qual o pode ser acessado define o tempo restante (em segundos) antes que o expire retorna o comentário colocado no, ou nulo caso não tenha sido setado retorna o tempo que o irá existir na máquina define um comentário sobre o Definindo um Cookie Para se utilizar um em JSP não é necessário importar a classe javax.servlet.http.cookie já que o JSP importa todas as classes do pacote javax.servlet.http automaticamente. Para criar o deve utilizar o seu construtor passando um nome e um valor para o, sendo ambos instância de String. Veja o exemplo onde é criado no servidor um que dura 60 segundos.
<% Cookie c = new Cookie("nomeUsuario","José"); c.setmaxage(60); exemplo1.jsp Os objetos da classe Cookie possuem vários métodos para controle do uso de s. É possível definir tempo de vida máximo do, os domínios que devem receber o (por default o domínio que deve receber o é o que o criou), o diretório da página que deve receber o, se o deve ser enviado somente sob um protocolo seguro e etc. Por exemplo, para definir a idade máxima de um devemos utilizar o método setmaxage(), passando um inteiro como parâmetro. Se o inteiro for positivo indicará em segundos o tempo máximo de vida do. Um valor negativo indica que o deve ser apagado quando o navegador terminar. O valor zero indica que o deve ser apagado imediatamente. Apesar do objeto criado na página note que o não foi adicionado ao seu navegador. Vejamos o porque. Objetos Implícitos e Cookies Gerenciando Cookies Além de criar o em uma página JSP, o objeto deve ser enviado na resposta na qual a página dará a requisição que foi feita, só assim as informações do irão ao cabeçalho da resposta. Utilizamos os objetos implícitos request e response. Colocando Cookies nos Clientes Com o objeto implícito response podemos enviar um como resposta utilizandoo o método addcookie().
<% Cookie c = new Cookie("nomeUsuario","José"); c.setmaxage(60); response.addcookie(c); exemplo2.jsp Recuperando Cookies Além de enviar s, os objetos implícitos nos permitem recuperá-los de uma requisição feita, logo o objeto implícito request nos auxilia nessa tarefa. O método getcookies() retorna um array de Cookies existentes na máquina do cliente. <% Cookie[] co = request.getcookies(); if (co!= null){ out.println("number of Cookies:"+co.length+"<br>"); for (int i=0; i<co.length; i++) { out.println(co[i].getname()+":\t"+co[i].getvalue()+"<br>"); } } exemplo3.jsp Cookies são muito utilizados hoje para diversas utilidades, porém ele possui algumas características de restrição, o tamanho dos dados armazenado (nome e valor) não deve ultrapassar 4K e O navegador pode armazenar múltiplos s, contanto obedece a um certo limite. Um navegador armazena até 20 s por configuração de domínio. O navegador armazena também 300 s em geral. Se quaisquer uns
destes dois limites forem alcançados, espera-se que o navegador exclua s menos utilizados.