Monitoramento de Sessão – Fundamentos Parte 1
Guilherme Mello do Nascimento (JavaPlayer)
Introdução
O monitoramento de sessão é vital em quase todas as aplicações Web. Em termos simples, o monitoramento de sessão é a identificação de usuários individuais à medida que eles navegam pelo seu site.
O protocolo de rede que os servidores web e browsers cliente usam para se comunicar é o HTTP, sendo a linguagem web. As conexões HTTP são iniciadas por um browser cliente que envia uma solicitação HTTP. Então, o servidor web responde com uma resposta HTTP, num comportamento simplificado. Portanto se um cliente solicitar um outro recurso do servidor, ele precisará abrir uma outra conexão HTTP para o servidor.
Por exemplo:
Atualmente, muitos dos sites da Web utilizam um carrinho de compras. Suponha que um usuário preencha um formulário on-line com todas as informações sobre a entrega de uma compra. Em seguida, é apresentada a esse usuário uma outra página, mas a conexão que utilizou ao enviar os dados está fechada. Quando o usuário envia o próximo formulário que solicita seu número de cartão de crédito, o servidor de alguma maneira precisa identificar que essas duas submissões de formulário vieram da mesma pessoa. Este processo de tentar manter o estado através de múltiplas solicitações é chamado de monitoramento de sessão.
As principais técnicas de monitoramento são:
?? Objeto Session
?? Cookies
?? Campos ocultos
?? Rescrita de URL
Nessa primeira parte do tutorial, veremos o objeto session, representado pela interface javax.servlet.http.HttpSession, que é o mais fácil de usar e o mais poderoso.
Objeto Session
O objeto session é do tipo javax.servlet.http.HttpSession. O contêiner implementa essa interface, e a cada usuário dentro de um site pode ser atribuído um objeto session no servidor. O objeto session tem dois papéis-chave:
HTTP: HyperText Transfer
Por exemplo:
Atualmente, muitos dos sites da Web utilizam um carrinho de compras. Suponha que um usuário preencha um formulário on-line com todas as informações sobre a entrega de uma compra. Em seguida, é apresentada a esse usuário uma outra página, mas a conexão que utilizou ao enviar os dados está fechada. Quando o usuário envia o próximo formulário que solicita seu número de cartão de crédito, o servidor de alguma maneira precisa identificar que essas duas submissões de formulário vieram da mesma pessoa. Este processo de tentar manter o estado através de múltiplas solicitações é chamado de monitoramento de sessão.
As principais técnicas de monitoramento são:
?? Objeto Session
?? Cookies
?? Campos ocultos
?? Rescrita de URL
Nessa primeira parte do tutorial, veremos o objeto session, representado pela interface javax.servlet.http.HttpSession, que é o mais fácil de usar e o mais poderoso.
Objeto Session
O objeto session é do tipo javax.servlet.http.HttpSession. O contêiner implementa essa interface, e a cada usuário dentro de um site pode ser atribuído um objeto session no servidor. O objeto session tem dois papéis-chave:
?? Ele armazena as informações sobre a data e a hora de criação e de último acesso para uma sessão particular, junto com um ID de sessão único (ID Session).
?? Ele também permite que outros objetos sejam “amarrados” à sessão, como carrinhos de compras e outros exemplos.
O objeto session age como uma Hashtable, onde você pode armazenar qualquer quantidade de pares chave /objeto. O objeto HttpSession é acessível a partir de outros servlets no mesmo aplicativo. Para recuperar um objeto previamente armazenado, você só precisa passar a chave.
O ID session é simplesmente um número único, chamado de session identifier. Esse identificador de sessão é usado para associar um usuário a um objeto session no servidor. Ou seja, se houver 10 usuários simultâneos, 10 objetos session serão criados no servidor e cada usuário poderá acessar seu próprio objeto HttpSession
Quando uma sessão é criada, por meio de uma visita de um usuário a um site We, é criado no servidor um objeto session, que pode então ser utilizado para monitorar o usuário pelo site.
O método getSession da interface javax.servlet.http.HttpServletRequest tem duas sobrecargas:
?? HttpSession getSession()
?? HttpSession getSession(boolean create)
A primeira sobrecarga retorna a sessão atual associada a essa solicitação ou, se a solicitação não tiver um identificador de sessão, ela cria um novo.
A segunda retorna um HttpSession corrente associado com o request, ou se não existir uma session corrente e create for igual a true, retorna uma nova session .
A Interface javax.servlet.http.HttpSession
?? getAttribute
Retorna o objeto vinculado à sessão com esse nome específico. Retorna null se nenhum ojeto estiver vinculado a esse nome.
?? getAttributeNames
Retorna todos os nomes de atributos vinculados como um array de Strings.
?? getCreationTime
Retorna em milissegundos a data/hora em que a sessão foi criada desde meia noite de 1º de janeiro de 1970 GMT .
?? getID
Retorna o identificador de sessão como uma String.
?? getlastAccessedTime
Retorna em milissegundos a data/hora em que a sessão foi acessada pela última vez desde meia noite de 1º de janeiro de 1970 GMT.
?? getMaxInactiveInterval
Retorna quantos segundos a sessão permanecerá ativa enquanto o usuário permanecer inativo.
?? getgetServletContext
Retorna o ServletContext atual para essa sessão.
?? invalidate
Encerra a sessão e desvincula quaisquer objetos que estão vinculados a ela.
?? isNew
Retorna true se a sessão atual não estiver sendo utilizada pelo cliente.
?? removeAttribute
Disvincula um objeto do objeto session.
?? setAttribute
Vincula a sessão o objeto passado como um parâmetro com o nome definido pelo parâmetro String.
?? setMaxInactiveInterval
Configura o tempo em segundos que essa sessão permanecerá ativa enquanto o usuário permanecer inativo
Os métodos Desaprovados são:
• getSessionContext – Deprecated
• getValue - Deprecated
• getValueNames - Deprecated
• putValue - Deprecated
• removeValue – Deprecated
Agora que já conheçemos todos os métodos da interface javax.servlet.http.HttpSession, vamos a um exemplo de uso de alguns métodos:
<%@ page import="java.util.*" %>
<html>
<head>
<title>Exemplo do Objeto Session</title>
</head>
<body>
<h1>O Objeto Session</h1>
Exemplo de uso de alguns métodos da interface javax.servlet.http.HttpSession
<br><br>A sessão foi criada em: <%= session.getCreationTime() %>
<br>A sessão ficará inativa em um intervalo de: <%= session.getMaxInactiveInterval() %>
<br>O ID Session é: <%= session.getId() %>
<br>A sessão atual está sendo usada? <%= session.isNew() %>
<br>A sessão foi acessada pela última vez em: <%= session.getLastAccessedTime() %>
<br>A sessão foi criada em: <%= session.getCreationTime() %>
</body>
</html>
Na Segunda Parte deste tutorial veremos como trabalhar com Cookies, não perca!
Até a próxima!