Beruflich Dokumente
Kultur Dokumente
Controle de sesses
Profa. Karen Selbach Borges
Sesses
O protocolo HTTP no suporta informaes
permanentes que poderiam ajudar um
servidor Web a determinar que uma
solicitao de um cliente particular.
As sesses servem para identificar o
usurio durante vrias requisies ou
visitas a um site da Web
A sesso de um usurio persiste durante
um perodo de tempo que normalmente
configurado no servidor
Introduo
O Servlet API fornece 3 maneiras de
controlar o estado do cliente :
Cookies
Reescrita de URL
Monitoramento de sesso
Cookies
Mecanismo utilizado por um servlet para
armazenar uma pequena quantidade de
informao de estado associado a um
cliente.
Exemplos de uso :
Quando o cliente loga-se em um site, verificar
se ele j esteve neste site
Armazenar informaes a respeito das
preferncias do usurio
Cookies
So pequenos arquivos enviados pela
servlet como parte de uma resposta ao
cliente, que ficam armazenados na
mquina do cliente.
Quando um HttpServlet recebe uma
solicitao, o cabealho inclui as
informaes (ex. tipo de solicitao GET
ou POST) e os cookies armazenados na
mquina do cliente.
Cookies
So automaticamente excludos quando
expiram (isto , alcanam sua idade
mxima).
mtodo setMaxAge(int segundos)
Segundos < 0 : cookie expira assim que o
navegador fechar
Segundos == 0 navegador apaga o cookie.
Adicionando Cookies
O mtodo addCookie permite o envio de um
cookie ao cliente junto da resposta;
O cookie representado por um objeto da
classe javax.servlet.http.Cookie;
O cookie deve ter um nome e um valor, para tanto
utiliza-se o construtor:
public Cookie(String name, String value);
Recuperando um cookie:
Cookie cookies[] = request.getCookies();
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
if (cookies[i].getName().equals("id")) {
String identifica = cookies[i].getValue(); }}}
Cookies
Problemas
Muitas pessoas desativam cookies por
questes de privacidade
Reescrita de URL
Reescita de URL a soluo para clientes
que no suportam ou tenham sido
configurados para rejeitar cookies.
Exemplo:
http://host.path/file.html;jsessionid=1234
Reescrita de URL
Mtodo que associa uma ID de sesso
com uma URL o
response.encodeURL(String url)
Mtodo que associa uma ID de sesso e
redireciona para outra pgina o
response.encodeRedirectURL(String url)
Reescrita de URL
Problemas:
No suporta o armazenamento de pares
nome/valor como as cookies
As informaes podem ser perdidas no caso
de uso de retornar ao site atravs de
bookmarks, links ou se a URL for inserida
manualmente.
Monitoramento de Sesso
A maneira mais eficiente para fazer o
monitoramento de sesso atravs do
uso da API HttpSession.
O fornecedor do continer Web
implementa essa interface, e a cada
usurio dentro do site pode ser atribudo
um objeto de sesso no servidor
Monitoramento de Sesso
O objeto session tem dois papis-chave:
Ele armazena informaes sobre data e hora
de criao e de ltimo acesso para uma
sesso particular, junto com um ID de sesso
nico;
Ele tambm permite que outros objetos sejam
amarrados sesso (carrinho de compras,
por exemplo)
Outros Mtodos
void removeAttribute(String nome) :
remove da sesso o objeto associado ao
nome.
String getId() : retorna o valor do
identificador nico da sesso.
long getCreationTime() : retorna a data e
hora (milisegundos) em que o objeto foi
criado.
Outros Mtodos
long getLastAccessdTime() : retorna o a
data e hora (milisegundos) no qual ocorreu
o ltimo pedido enviado pelo cliente da
sesso
ServletContext getServletContext(): retorna
o ServletContext atual para a sesso
boolean isNew(): retorna true se a sesso
atual no estiver sendo utilizada pelo cliente
Outros Mtodos
void setMaxInactiveInterval(int intervalo) :
configura o tempo mximo em
milisssegundos que o container manter a
sesso se o usurio no fizer requisies.
int getMaxInactiveInterval() : retorna o
intervalo mximo em milisssegundos que
o usurio pode ficar sem fazer requisies
sem que sua sesso seja invalidada.