Qual a idéia de usar Cookies e Sessions juntas?

Eu estava olhando esse tópico aqui mesmo no portal, e tive a seguinte dúvida: Há como usar cookies e sessions juntas? E qual a idéia de se usar as duas juntas?

Olá…
Bom eu nunca usei as duas juntas mas se não me engano você pode usá-los sim.
Vamos entender primeiro o significados dos dois.

Cookies - Arquivos que o servidor web (site) armazena no computador do cliente(seu computador) para possível referência quando você entrar novamente no mesmo site. O cookie pode guardar informações sobre seu login, locais que visitou no site, etc.
Por exemplo, Eu entro em um site de compras qualquer e consulto o preço de umas 3 TV de Plasma da marca X por exemplo…Aí, no outro dia, eu resolvo entrar no mesmo site de novo e tem lá no canto o link das 3 TVs que eu consultei. Como ele fez isso?? O site armazenou em cookies no meu computador o que eu consultei nele…Quando eu entro novamente no site ele verifica meu PC e encontra um cookie já existente, então ele faz a coleta das informações para servir como um tipo de referência.
Tem gente que não gosta de usar cookies por medo dos mesmos poderem coletar informações pessoais…

Session - Funciona de forma parecida com o Cookie por um detalhe, ele não coleta informações do seu computador pelo fato de ser feita do lado do servidor. Dessa forma trazendo mais segurança para o usuário, pois nenhum arquivo é guardado no computador do cliente. Ela não coleta informações, mas armazena (como as informações armazenadas no carrinho em sites de compra).
Exemplo de uso- Sites que você entra e faz o login. Depois de um determinado tempo de inatividade, se você atualizar a página é necessário fazer o login de novo, pois se a Session não estiver em constante atualização, seu tempo de vida expira e todas iformações contidas nela são perdidas.

Agora qual a utilização das duas juntas?? Bom, tem várias razões, mas um exemplo…
Ponho uma Sessão para controlar o login dos usuários e um cookie para armazenar as informações que ele consultou no meu site. Se o computador for o de uma Lan House por exemplo, a Sessão poderia impedir de um usuário fazer uma compra usando o Login de outro que usou o computador anteriormente ( a não ser que a sessão esteja com um tempo de vida gigante!), e o Cookie, serviria para meu servidor saber quais são os produtos mais procurados pelos usuários daquele computador.

Agora viajando um pouquinho (mas isso é claramente possível de acontecer), Uma determinada empresa poderia utilizar-se dos cookies dos usuários para poder, por exemplo, descobrir as preferências de uma população de uma determinada região do país e assim, poder fazer promoções diferenciadas para cada tipo de cliente. Isso também pode ser feito de maneira mais simples utilizando os “Agentes de Software” mas isso é outra história!

Espero ter tirado suas dúvidas. Se escrevi algo errado por favor, sintam-se à vontade para me corrigir!

Abraços!

Hum…agora vamos baixar o nível um pouquinho, digamos que eu tenha uma classe de Sessão então dentro dela, quando o cara acessar o login e senha do bd, então eu chamaria uma classe de Cookie para fazer o resto do serviço (digo, a funcionalidade do site)?

moacirjava,

nao entendi direito a pergunta… mas… esse exemplo que vc deu poderia ficar assim:

-Imagine uma classe chamada Usuario, e nela tem os atribs: login, senha, nome… etc…
-Ao se logar no site eu gravo as infos do usuario vindas do banco no objeto user (vamos supor que eu fiz uma consulta no bd e retornou o nome, e login dele):

//instancia de usuario passando o nome e login vindos do bd
Usuario user = new Usuario(nome,login);

agora… se o usuario visitar outro link da minha pagina… o ‘estado’ do objeto sera perdido… ou seja vou perder as infos dele, entao pra isso nao acontecer vou gravar o ‘estado’ do objeto na sessao:

//guardo o OBJETO usuario contendo as infos dele
session.setAttribute("usuario", user);

agora digamos q ele procurou um produto chamado “chave de desentortar vidro…” que no bd tem id = 10… vou gravar um cookie com o id do produto que ele procurou…

//obtenho o 'estado' do objeto usuario que esta gravado na sessao
Usuario user = (Usuario) session.getAttribute("usuario");
//o cast eh necessario, pois ele retorna um 'Object' sem forma...

//to colocando assim so pra funcionar visualmente^^
String produtoID = 10;
Cookie c = new Cookie(user.getLogin(),produtoID);
c.setMaxAge("tempo de vida do cookie");

se esse usuario sair do site, a sessao vai morrer…
entao quando ele entrar denovo, o site pode procurar se existe algum cookie gravado na maquina dele, se existir ele fara uma busca no bd passando o id do produto procurado anteriormente…

Nao entendi muito bem a pergunta mas espero que o ‘exemplinho’ sirva…

flws

Oh, muito obrigado sephil!!

Então eu posso ter uma Sessão para distinguir usuários de um sistema, e Cookies para “mapear” o que ele faz ou fez ali!!

Valeu mesmo, tirou minhas dúvidas!!