Programação Server Side I                Aula 2               Cookies    Prof. Elton R C Spode, MsC       E-mail: espode@b...
Cookies• São pequenas seqüências de bits armazenadas no  cliente pelo browser• Surgiram no Netscape para guardar informaçõ...
Aplicações de Cookies• Os usos mais comuns de cookies são:   – Identificação de usuários durante uma sessão de     comérci...
Criação de Cookies• Para criar um cookie:   – Criar um objeto da classe Cookie passando o nome     do cookie e seu valor  ...
Criação de Cookies (cont.)• O nome do cookie não pode conter os seguintes  caracteres: [ ] ( ) = , “ / ? @ : ;• O conteúdo...
Leitura de Cookies• Todos os cookies referentes ao domínio que está  sendo solicitado são automaticamente enviados  juntos...
Cookies API• A API de cookies possui métodos para assinalar  e pegar atributos disponíveis no cookie:• set/getComment• set...
Cookies API (cont.)• Alguns métodos são de interesse especial:• setDomain - altera o domínio do cookie mas não  pode ser u...
Exercício• Alterar o servlet LoginServlet para gravar o id do  usuário em um cookie. Caso o cookie já exista  não solicita...
Sessão• O protocolo HTTP é “stateless”, ou seja, ele não  mantém informações entre conexões• Após a resposta ser enviada a...
Rastreamento de Sessões• Para atingir o objetivo de ligar conexões é necessário  rastrear cada sessão, ou seja, verificar ...
Rastreamento de Sessões• Este controle pode ser feito “manualmente”  através do uso de cookies.• Como o usuário pode desab...
Campos Escondidos• Consiste na inserção do id único do usuário em cada  página gerada através do uso de campos escondidos:...
Reescrita de URLs• Neste método, o id da sessão de cada usuário é  adicionado ao fim de toda URL:  http://www.xyz.com;id=5...
Cookies• Para cada nova requisição, um cookie com o id da  sessão é gravado no browser do cliente• O id é recuperado atrav...
HttpSession API• Para simplificar o rastreamento de sessões utilizamos a  interface HttpSession que realiza as seguintes t...
Criando e Recuperando           Sessões• Para recuperar uma sessão utiliza-se o método  getSession do objeto request:  Htt...
Inserindo um Atributo• Para inserir atributos deve-se usar os métodos  setAttribute (2.2) e putValue de HttpSession• Sinta...
Recuperando Atributos• Para recuperar atributos da sessão, usa-se getAttribute  (2.2) e getValue de HttpSession• Sintaxe: ...
Descartando Sessões• Quando o usuário terminar sua sessão, deve-se  eliminá-la usando o método invalidate()• Sintaxe:  voi...
Outros Métodos• removeAtribute - elimina o atributo da sessão• getId - recupera o ID único gerado• getCreationTime - recup...
Codificação de URLs• O HttpSession escolherá o método de reescrita  de URLs caso não possa usar cookies• Neste caso, o id ...
URLs em Links• Para codificar URLs do próprio site que serão  colocadas em links ou em ações de formulários  utiliza-se o ...
URLs em sendRedirect• Para os casos em que a requisição deva ser  redirecionada para outra URL no mesmo site  usa-se encod...
Exercício• Completar o sistema: Cada opção chamada do  menu deverá operar sobre a conta corrente atual.
Próximos SlideShares
Carregando em…5
×

Programação Server Side I - Aula 2

1.605 visualizações

Publicada em

Apresentação do prof. Elton Regis C. Spode em que aborda controle de sessão em aplicativos web

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.605
No SlideShare
0
A partir de incorporações
0
Número de incorporações
19
Ações
Compartilhamentos
0
Downloads
39
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Programação Server Side I - Aula 2

  1. 1. Programação Server Side I Aula 2 Cookies Prof. Elton R C Spode, MsC E-mail: espode@brturbo.com http://www.inf.unifra.br/~espode
  2. 2. Cookies• São pequenas seqüências de bits armazenadas no cliente pelo browser• Surgiram no Netscape para guardar informações persistentes no cliente• Existem restrições para o seu uso: – Podem ser acessados apenas pelo domínio que os criou – Podem ser desabilitados pelo usuário (privacidade)• Cookies são enviados de volta sempre que o usuário retorna ao domínio que gravou-os
  3. 3. Aplicações de Cookies• Os usos mais comuns de cookies são: – Identificação de usuários durante uma sessão de comércio eletrônico – Diminuir a necessidade de solicitação de senhas para o usuário – Customização de sites de acordo com as preferências de cada visitante – Propaganda dirigida• Como cookies são gravados como arquivos texto eles não representam ameaça à segurança do usuário, apenas à sua privacidade
  4. 4. Criação de Cookies• Para criar um cookie: – Criar um objeto da classe Cookie passando o nome do cookie e seu valor – Indicar o tempo de validade do cookie (em segundos) com o método setMaxAge. Se não for indicado nenhum, o cookie é valido até que o browser seja fechado – Enviar o cookie para o cliente usando o método addCookie do objeto response• Mesmo que sejam criados vários cookies, todos eles serão gravados em apenas um arquivo
  5. 5. Criação de Cookies (cont.)• O nome do cookie não pode conter os seguintes caracteres: [ ] ( ) = , “ / ? @ : ;• O conteúdo do cookie não pode conter o ;• Criando um cookie com a duração de 1 hora: Cookie cookie = new Cookie(“nome”, “João”); cookie.setMaxAge(60*60); response.addCookie(cookie);• Se o cookie não existir, será criado. Caso contrário será alterado.• Também podem ser criados cookies inserindo-se as Headers adequadas no objeto response.
  6. 6. Leitura de Cookies• Todos os cookies referentes ao domínio que está sendo solicitado são automaticamente enviados juntos com a requisição• Eles estão disponíveis no objeto request e podem ser recuperados com getCookies• Este método retorna um array de cookies• Para recuperar um cookie específico é necessário fazer a varredura do array comparando o nome procurado com cookie.getName
  7. 7. Cookies API• A API de cookies possui métodos para assinalar e pegar atributos disponíveis no cookie:• set/getComment• set/getDomain• set/getMaxAge• set/getName• set/getPath• set/getSecure• set/getValue• set/getVersion
  8. 8. Cookies API (cont.)• Alguns métodos são de interesse especial:• setDomain - altera o domínio do cookie mas não pode ser usado livremente, apenas em situações bem específicas.• setPath -altera o path para o qual o cookie se aplica. Em geral é utilizado na forma: cookie.setPath(“/”);• Este comando indica que todas as páginas neste servidor devem receber o cookie de volta.
  9. 9. Exercício• Alterar o servlet LoginServlet para gravar o id do usuário em um cookie. Caso o cookie já exista não solicitar a senha, apenas redirecionar para o CadastroServlet
  10. 10. Sessão• O protocolo HTTP é “stateless”, ou seja, ele não mantém informações entre conexões• Após a resposta ser enviada a uma requisição, a conexão é fechada• Entretanto, é comum o envio de requisições interligadas por um mesmo cliente, como operações de conta corrente ou compras• Este conjunto de requisições e respostas é chamado de sessão
  11. 11. Rastreamento de Sessões• Para atingir o objetivo de ligar conexões é necessário rastrear cada sessão, ou seja, verificar a qual usuário pertence cada requisição• Este método de rastreamento consiste em: – Associar cada requisição recebida com uma sessão específica – Se for uma nova sessão, gerar um identificador único para ela – Recuperar dados da sessão (produtos comprados por exemplo) de um conjunto (lista, tabela hash, etc)
  12. 12. Rastreamento de Sessões• Este controle pode ser feito “manualmente” através do uso de cookies.• Como o usuário pode desabilitar os cookies em sua máquina, os processos alternativos são: uso de campos escondidos em formulários HTML ou através de reescrita de URLs• Entretanto, como este é um processo comum e trabalhoso, existe uma API que realiza todo o tratamento de maneira simples e transparente para o programador: HttpSession
  13. 13. Campos Escondidos• Consiste na inserção do id único do usuário em cada página gerada através do uso de campos escondidos: <input type=“hidden” name=“id” value= “...”>• O id é então recuperado através do getParameter• Este método apresenta duas desvantagens: – Só funciona para páginas geradas dinamicamente pois o id deve ser inserido no HTML – É obrigatório o uso de forms com botões, não sendo possível o uso de links para páginas que façam parte da sessão
  14. 14. Reescrita de URLs• Neste método, o id da sessão de cada usuário é adicionado ao fim de toda URL: http://www.xyz.com;id=563248712354• Para recuperá-lo, também utiliza-se método getParameter• Funciona em qualquer browser, mesmo se o usuário desabilitar os cookies• Entretanto se o usuário acessar a mesma página através de um outro link ou bookmark, a sessão será perdida
  15. 15. Cookies• Para cada nova requisição, um cookie com o id da sessão é gravado no browser do cliente• O id é recuperado através do cookie• Se puder ser usada, é a melhor solução pois funciona em todos os casos.• Como desvantagem, temos a tarefa relativamente trabalhosa de: – Extrair o cookie de id do array – Assinalar um tempo de validade adequado – Associar cada requisição com uma sessão – Gerar os ids únicos
  16. 16. HttpSession API• Para simplificar o rastreamento de sessões utilizamos a interface HttpSession que realiza as seguintes tarefas de maneira transparente: – Gera ids únicos – Mantém informações de todas as sessões atuais – Associa requisições com suas respectivas sessões – Utiliza o método de rastreamento disponível para cada usuário: cookies se estiverem habilitados ou reescrita de URLs – Possibilita o armazenamento de objetos na sessão – Descarta sessões completas ou abandonadas
  17. 17. Criando e Recuperando Sessões• Para recuperar uma sessão utiliza-se o método getSession do objeto request: HttpSession session = request.getSession();• Se não existir sessão o método retorna null• Para criar uma sessão deve-se usar: HttpSession session = request.getSession(boolean criar);• Se o parâmetro for true uma sessão será criada caso não exista, se for false o método retornará null como no caso anterior• Para verificar se ela é nova usa-se isNew()
  18. 18. Inserindo um Atributo• Para inserir atributos deve-se usar os métodos setAttribute (2.2) e putValue de HttpSession• Sintaxe: void putValue(String nome, Object Valor);• Objetos inseridos com este método estarão disponíveis até que a sessão do usuário correspondente termine• Como cada usuário terá sua própria sessão, esta é uma excelente maneira de armazenar e organizar os dados de cada um
  19. 19. Recuperando Atributos• Para recuperar atributos da sessão, usa-se getAttribute (2.2) e getValue de HttpSession• Sintaxe: Object getValue(String nome);• Se o atributo não existir, será retornado null• Para se recuperar todos os atributos associados com uma sessão, usa-se getAttributeNames(2.2) ou getValueNames• Sintaxe: Enumeration getAttributeNames(); String [] getValueNames();
  20. 20. Descartando Sessões• Quando o usuário terminar sua sessão, deve-se eliminá-la usando o método invalidate()• Sintaxe: void invalidate();• Este método finaliza a sessão e retira a ligação de todos os objetos anteriormente associados• Repare que ele não libera os objetos associados, apenas elimina suas ligações
  21. 21. Outros Métodos• removeAtribute - elimina o atributo da sessão• getId - recupera o ID único gerado• getCreationTime - recupera a hora de criação da sessão em milisegundos• getLastAccessedTime - recupera o último acesso a esta sessão em milisegundos• setMaxInactiveInterval - altera o tempo de inatividade em que uma sessão será invalidada• getMaxInactiveInterval - recupera o tempo de inatividade
  22. 22. Codificação de URLs• O HttpSession escolherá o método de reescrita de URLs caso não possa usar cookies• Neste caso, o id da sessão será adicionado a toda URL requisitada• Nas respostas enviadas pelos servlets é comum a inserção de URLs em links, ações de formulários ou em redirecionamentos• Para o correto funcionamento da sessão é necessária a inserção do id nestas URLs• Usam-se os métodos do objeto response: encondeURL e encodeRedirectURL
  23. 23. URLs em Links• Para codificar URLs do próprio site que serão colocadas em links ou em ações de formulários utiliza-se o método encodeURL• Sintaxe: String encodeURL(String URL);• Exemplo: String novaURL = response.encodeURL(URL); out.println(“<a href=” + novaURL + ”>Clique aqui </a>);
  24. 24. URLs em sendRedirect• Para os casos em que a requisição deva ser redirecionada para outra URL no mesmo site usa-se encodeRedirectURL• Sintaxe: String encodeRedirectURL(String URL);• Exemplo: String URL = response.encodeRedirectURL(URL); response.sendRedirect(novaURL);
  25. 25. Exercício• Completar o sistema: Cada opção chamada do menu deverá operar sobre a conta corrente atual.

×