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!