Você está na página 1de 6

DAWJ Desenvolvimento de Aplicativos Web com Servlet e JSP Controle de sesso Introduo

O protocolo HTTP stateless (sem estado), no dispondo de mecanismo para controlar o estado do cliente. Como conseqncia disso, do ponto de vista do continer , cada requisio de pgina JSP ou Servlet vista como distinta e separada de outras requisies e no associada ao mesmo cliente. No obstante essa limitao do protocolo HTTP, com freqncia necessrio rastrear a sesso de um cliente para, por exemplo, acompanhar seu pedido em uma loja virtual ou registrar suas preferncias. (Por sesso, entende-se a srie de conversaes entre o cliente e o aplicativo Web no continer ao longo de um perodo de tempo) Dois mecanismos muito usados para gerenciar sesso de um cliente so cookie e objeto HttpSession. Nesta nota de aula, eles sero vistos.

Contedo
Conceitos de cookies Aplicaes dos cookies API de Cookie Como enviar cookies Como receber cookies API de HttpSession Como associar atributo a uma sesso Como buscar atributo associado a uma sesso Como descartar atributo de uma sesso Bibliografia

Conceitos de cookies
Cookies so pequenos pedaos de informao textual que um servidor Web envia para um navegador e que o navegador retorna mais tarde sem modificao ao visitar o mesmo site Web ou domnio (Hall e Brown, 2005). Um cookie nada mais que uma pequena quantidade de informao que pode ser enviada pelo Servlet, atravs do navegador, para que seja gravada na mquina cliente e, mais tarde, devolvida ao servidor para que seja utilizado pela aplicao (Santos, 2007). Cookies so arquivos texto que armazenam conjuntos de pares param/value (Qian, Allen, Gan e Brown, 2010). 1

2010 Antonio Passos | http://ead.antoniopassos.com.br | Todos os direitos reservados

DAWJ Desenvolvimento de Aplicativos Web com Servlet e JSP Controle de sesso Aplicaes dos cookies
Identificar um usurio durante uma sesso de comrcio eletrnico; Lembrar de nomes de usurios e de senhas; Customizar sites; Focalizar anncios

API de Cookie
Construtor/Mtodo Cookie(String nome, String valor) public String getComment() public void setComment(String comentario) public String getDomain() public void setDomain(String dominio) public int getMaxAge() public void setMaxAge(int tempoEmSegundos) public String getName() public String getPath() public void setPath(String path) public boolean getSecure() Descrio Cria um cookie com o nome e valor especificados Obtm o comentrio associado ao cookie Especifica um comentrio associado ao cookie Obtm o domnio ao qual o cookie aplicado Especifica o domnio ao qual o cookie aplicado Obtm o tempo que deve decorrer antes que o cookie expire Especifica quanto tempo deve decorrer antes que o cookie expire Obtm o nome do cookie Obtm o caminho ao qual o cookie aplicado Especifica o caminho ao qual o cookie aplicado Obtm o valor booleano que especifica se o cookie deve ou no ser enviado somente por meio de conexes seguras Especifica se o cookie deve ou no ser enviado somente por meio de conexes seguras Obtm o valor do cookie Especifica o valor do cookie Obtm a verso do protocolo do cookie Especifica a verso do protocolo do cookie

public void setSecure(boolean flag)

public String getValue() public void setValue(String valor) public int getVersion() public void setVersion(int versao)

2010 Antonio Passos | http://ead.antoniopassos.com.br | Todos os direitos reservados

DAWJ Desenvolvimento de Aplicativos Web com Servlet e JSP Controle de sesso Como enviar cookies
Para enviar um cookie para o cliente, deve-se executar os seguintes passos. 1. Criar um objeto Cookie Exemplo: Cookie ckUserID = new Cookie(userID, fulano); 2. Especificar o tempo de vida do Cookie Exemplo: ckUserID.setMaxAge(60 * 60 * 24 * 30); // Um ms ou trinta dias 3. Armazenar o Cookie no objeto HttpServletResponse Exemplo: response.addCookie(ckUserID);

Como receber cookies


Para receber um cookie do cliente, deve-se executar os seguintes passos. 1. Chamar o mtodo getCookies do objeto HttpServletRequest; Exemplo: Cookie[] cookies = request.getCookies(); 2. Fazer uma varredura no array de Cookies, chamando getName() em cada um at encontrar o objeto Cookie de interesse. Exemplo: if (cookies != null) { for (int i = 0; i < cookies.length; i++) { Cookie cookie = cookies[i]; if (nomeDoCookie.equals(cookie.getName())) { String valor = cookie.getValue(); // Continua... } } } 2010 Antonio Passos | http://ead.antoniopassos.com.br | Todos os direitos reservados

DAWJ Desenvolvimento de Aplicativos Web com Servlet e JSP Controle de sesso API de HttpSession
Mtodo public Object getAttribute(String nome) public Enumeration getAttributeNames() public void setAttribute(String nome, Object valor) public void removeAttribute(String nome) public void invalidate() public void logout() public String getId() public boolean isNew() Descrio Obtm o valor do atributo especificado Obtm o nome de todos os atributos da sesso Armazena um objeto como um atributo em uma sesso com o nome especificado Remove o atributo especificado da sesso Invalida a sesso Remove o cliente do continer e invalida todas as sesses a ele associadas Obtm o identificador nico gerado pelo continer para a sesso Retorna true se a sesso for nova e o cliente ainda no sabe disso. Retorna false para sesso preexistente Obtm a data e a hora em que a sesso foi criada em milissegundos Obtm a data e a hora em que a sesso foi acessada pela ltima vez pelo cliente em milissegundos Obtm o tempo, em segundos, que uma sesso pode ficar sem acesso antes de ser invalidada Especifica o tempo, em segundos, que uma sesso pode ficar sem acesso antes de ser invalidada automaticamente

public long getCreationTime() public long getLastAccessedTime()

public int getMaxInactiveInterval()

public void setMaxInactiveInterval(int segundos)

Como associar atributo a uma sesso


Para associar um atributo a uma sesso, deve-se executar os seguintes passos. 1. Chamar o mtodo getSession() do objeto HttpServletRequest Exemplo: HttpSession sessao = request.getSession(); 2. Armazenar o objeto na sesso como um atributo Exemplo: String isbn = 978-1-890774-44-8; sessao.setAttribute(isbn, isbn);

2010 Antonio Passos | http://ead.antoniopassos.com.br | Todos os direitos reservados

DAWJ Desenvolvimento de Aplicativos Web com Servlet e JSP Controle de sesso Como buscar atributo associado a uma sesso
Para buscar um atributo associado a uma sesso, deve-se executar os seguintes passos. 1. Chamar o mtodo getSession() do objeto HttpServletRequest Exemplo: HttpSession sessao = request.getSession(); 2. Chamar o mtodo getAttribute() Exemplo: String isbn = (String)session.getAttribute(isbn);

Como descartar atributo de uma sesso


Para descartar um atributo associado a uma sesso, tem-se trs opes: Remover somente os atributos que o Servlet criou Exemplo: sessao.removeAttribute(isbn); Deletar toda a sesso Exemplo session.invalidade(); Realizar o logout do usurio Exemplo session.logout();

2010 Antonio Passos | http://ead.antoniopassos.com.br | Todos os direitos reservados

DAWJ Desenvolvimento de Aplicativos Web com Servlet e JSP Controle de sesso Bibliografia
CHOPRA, Vivek et al. Beginning JavaServer Pages. Wrox, 2005. MURACH, Joel; STEELMAN, Andrea. Murachs Java Servlets and JSP. Mike Murach & Associates, Inc, 2008. GONALVES, Edson. Desenvolvendo aplicaes Web com JSP, Servlets, JavaServer Faces, Hibernate, EJB 3 Persistence e Ajax. Rio de Janeiro: Editora Cincia Moderna Ltda, 2007. HALL, Marty; BROWN, Larry. Core Servlets e JavaServer Pages: tecnologias core. Rio de Janeiro: Editora Cincia Moderna Ltda., 2005. PERRY, Bruce W. Java Servlet & JSP Cookbook. OReilly Media, Inc., 2004. QIAN, Kai et al. Desenvolvimento Web Java. Rio de Janeiro: LTD, 2010.

2010 Antonio Passos | http://ead.antoniopassos.com.br | Todos os direitos reservados

Você também pode gostar