Buscar

Aula 8 - Cookies e Sessão - Linguagem Web

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

*
*
Roteiro
*
Cookies
Sessões
Referências
*
*
Cookies
Os cookies permitem que um site armazene informações no computador do usuário e depois as recupere
As informações são armazenadas como pares de nome-valor
Há dois tipos de cookies: cookies de sessão e cookies persistentes
Cookies de Sessão
Permanecem no computador do cliente somente enquanto ele está visitando o seu site da Web
Cookies Persistentes
São armazenados em um arquivo de texto no computador do cliente, podem durar meses ou até anos
*
*
Usando Cookies com a API de Servlets
Enviado pelo objeto response (HttpServletResponse)
Obtidos através do request (HttpServletRequest)
Cookie cookie = new Cookie(“nome”, ”Tarcisio”);
response.addCookie(cookie);
Cookie[] = resquest.getCookies();
*
*
Criando Cookies
Para criar cookies que duram mais que uma sessão (cookies persistentes no disco do cliente) é preciso
Criar um novo objeto Cookie
Definir a duração do cookie com o método setMaxAge()
Chamando o método setMaxAge () passando -1 indica que o cookie é de sessão
Definir outros métodos se necessário
Adicionar o cookie à resposta
*
*
Criando Cookies
Exemplo de gravação: 
1) definir um cookie que contenha o nome do usuário recebido como parâmetro na requisição
String nome = request.getParameter("nome");
Cookie c = new Cookie("usuario", nome);
2) Definir a duração do cookie em segundos
c.setMaxAge(1000 * 24 * 3600 * 60); // 60 dias
3) Adicionar o cookie à resposta
response.addCookie(c);
Exemplo de leitura: 
1) recuperar o cookie da requisição
Cookie[] cookies = request.getCookies();
2) Extrair cookie para um objeto local
for (int i = 0; i < cookies.length; i++) {
 if (cookies[i].getName().equals("nome") {
 usuario = cookies[i].getValue();
 }
}
*
*
API Cookie
Retorna (get) ou modifica (set) valor contido no Cookie.
Retorna o nome do Cookie.
Retorna (get) ou modifica (set) o tempo de vida do Cookie em segundos, setMaxAge(-1) indica que o cookie é de sessão
*
*
Sessões
Como o HTTP não mantém estado de sessão, são as aplicações Web que precisam cuidar de mantê-lo quando necessário
O objeto HttpSession pode manter o estado de conversação durante várias solicitações do mesmo cliente
Podemos usá-lo para guardar tudo que recebemos do cliente em todas as solicitações que ele faz durante uma sessão
O Container é o responsável por reconhecer que determinadas solicitações estão partindo de um mesmo cliente
*
*
Sessões
Como o Container reconhece as solicitações do mesmo cliente?
Lembre-se que para o Container cada solicitação é de um NOVO cliente.
*
*
Sessões
Como o Container reconhece as solicitações do mesmo cliente?
Cookie com ID
*
*
Sessões
Como o Container reconhece as solicitações do mesmo cliente?
*
*
Sessões
Sessões são representados por objetos HttpSession e são obtidas a partir de uma requisição
Dois métodos podem ser usados
HttpSession session = request.getSession(false);
Se a sessão não existir, retorna null, caso contrário retorna sessão.
HttpSession session = request.getSession();
Retorna a sessão ou cria uma nova. Mesmo que getSession(true)
*
*
Interface HttpSession
Esses nós já vimos em outros escopos.
*
*
Interface HttpSession
Retorna o identificador da sessão
*
*
Interface HttpSession
Retorna o momento em que a sessão foi criada pela primeira vez.
*
*
Interface HttpSession
Retorna a última vez que o Container recebeu uma solicitação com essa session ID.
*
*
Interface HttpSession
Retorna (get) ou modifica (set) o intervalo de tempo máximo (em segundos) que o Container permite a uma sessão ficar sem acesso por parte do cliente. 
Passado esse tempo a sessão é destruída.
*
*
Interface HttpSession
Finaliza a sessão.
*
*
Interface HttpSession
Retorna se a sessão foi criada na solicitação corrente.
*
*
Formas de Destruir uma Sessão
Não há como saber que cliente não precisa mais da sessão
Algumas das formas de destruir uma sessão são:
Chamando o método invalidate()
Configurando o timeout
Configurando o timeout da sessão no DD
Configurar o timeout no DD tem quase o mesmo efeito de chamar o setMaxInactiveInterval() para cada sessão que é criada.
Configurando o timeout para uma sessão específica.
<web-app...>
 <session-timeout>tempo em minutos</session-timeout>
</web-app>
session.setMaxInactiveInterval(tempo em segundos);
*
*
Sessão à prova de clientes
Por padrão a sessão é implementada com cookies
OK, mas e se o usuário bloquear os cookies no seu browser? 
Embora os browsers por default permitam o uso de cookies, o usuário pode configurar seu browser para não aceitá-los.
Teremos que ficar dependentes da boa vontade do usuário?
NÃO! Existe outra opção, mas teremos que trabalhar mais para implantá-la.
*
*
Passando o ID da sessão pela URL
O ID que identifica a sessão pode ser passado pela URL.
Mas isso significa que todos os links de sua página devem codificar o ID Session, ou seja, todos os seus links devem ser criados dinamicamente.
Cliente
Servidor
URL2 + ;jsessionid=1234567
URL2 + ;jsessionid=1234567
*
*
Passando o ID da sessão pela URL
O método String encodeURL(String) da interface HttpServletResponse inclui numa URL o identificador da sessão. Se a sessão não existir ou o browser suportar cookies, o método não altera a URL.
public void doGet(... response, ... response){
 ....
 HttpSession session = request.getSession();
 out.println(“<a href=\”” + response.encondeURL(“/BeerTest.do”)
 + “\”>click me</a>”);
 ...
}
*
*
Captura de Eventos de Sessões
É preciso registrar o listener no web.xml
*
*
Dúvidas
*
*
Referências
Aulas da disciplina de Java Web do Prof. Tarcísio Lucas

Outros materiais