isaquebressy

November 4, 2015

[Aprendendo Java EE] Cookies

É possível manter algumas informações do usuário através de cookies. Um cookie é uma estrutura de chave e valor que é enviada do servidor para o cliente e que este armazena por um tempo previamente determinado. Esse par de Strings é criado no servidor através da classe Cookie (javax.servlet.http) e enviado através do response HttpServletResponse (javax.servlet.http).

Cookie cookie = new Cookie("key", "value");
resp.addCookie(cookie);

Após o cookie estar armazenado no cliente, a cada chamada ao servidor, o cookie é enviado na requisição. No servidor, os cookies podem ser pegos através do método da requisição getCookies.

Cookie[] cookies = req.getCookies();

Este método retornará todos os cookies enviados para o servidor e pode-se iterar nesse array para encontrar a chave que se está procurando.

Porém, há uma particularidade na utilização de cookies. Como os cookies são armazenados no lado do cliente, o usuário pode manipular as informações contidas nesses cookies e então reenviar ao servidor. Assim, o servidor pode receber essas alterações e processá-las indevidamente. Sendo assim, é desencorajada a utilização de cookies para envio de informações que serão usadas sem algum tipo de validação das mesmas.

Quando o cookie é enviado para o cliente, ele vai com uma informação referente ao tempo que aquele cookie viverá. Caso se deseje setar ou alterar essa informação deve-se utilizar o método maxAge contido no cookie, sendo o parâmetro passado um valor em segundos.

cookie.setMaxAge(10); // O tempo de vida desse cookie é de 10 segundos.

Caso deseje-se remover o cookie, alteramos o valor para 0:

cookie.setMaxAge(0); // Remove o cookie da requisição.
resp.addCookie(cookie); // Envia o cookie de volta para o cliente através do response.


Category: java learning

Tags: java language programming


# Back