Objeto Sessão ASP

O objeto Session é usado para armazenar informações do usuário. As variáveis armazenadas no objeto session mantêm informações de um único usuário e estão disponíveis em todas as páginas de um aplicativo.

Objeto Session

Quando você opera um aplicativo, você o abre, faz algumas mudanças e então o fecha. Isso é muito semelhante a uma conversa (Session). O computador sabe quem você é. Ele sabe o momento em que você abriu e fechou o aplicativo. Mas há um problema na Internet: devido ao fato de que os endereços HTTP não podem manter o estado, o servidor web não sabe quem você é nem o que você fez.

O ASP resolveu esse problema criando um cookie único para cada usuário. O cookie é transmitido para o cliente e contém informações que identificam o usuário. Este tipo de interface é chamada de objeto Session.

O objeto Session é usado para armazenar informações sobre o usuário ou para alterar as configurações de sessão de um usuário. As variáveis armazenadas no objeto Session contêm informações de um único usuário e são acessíveis em todas as páginas do aplicativo. As informações armazenadas no objeto Session são geralmente nome, id e parâmetros. O servidor cria uma nova sessão para cada novo usuário e revoga o objeto de sessão quando a sessão expira.

Quando começa a sessão?

A sessão começa:

  • Quando um novo usuário solicita um arquivo ASP e o arquivo Global.asa chama a subrotina Session_OnStart;
  • Quando um valor é armazenado na variável de sessão;
  • Quando um usuário solicita um arquivo ASP e o Global.asa utiliza a tag <object> para exemplificar um objeto através do escopo da sessão;

Quando a sessão termina?

Se o usuário não solicitar ou atualizar a página no aplicativo dentro do tempo especificado, a sessão será encerrada. O valor padrão é 20 minutos.

Se você desejar ajustar o intervalo de tempo de timeout para um valor maior ou menor, você pode ajustar Timeout Atributo.

O exemplo a seguir define um intervalo de tempo de timeout de 5 minutos:

<%
Sessão.Timeout=5
%>

Para encerrar a sessão imediatamente, você pode usar Abandonar Método:

<%
Sessão.Abandonar
%>

Atenção:O principal problema ao usar sessão é determinar quando ela deve terminar. Não sabemos se a última solicitação do usuário foi a última solicitação. Portanto, não sabemos por quanto tempo a sessão deve "viver". Esperar por uma sessão ociosa por muito tempo pode esgotar os recursos do servidor. No entanto, se a sessão for excluída过早, o usuário terá que começar novamente várias vezes, pois o servidor já excluiu todas as informações. Encontrar um intervalo de tempo adequado para o timeout é difícil.

Dica:Se você estiver usando variáveis de sessão, não armazene dados em grande quantidade nelas.

Armazenamento e recuperação de variáveis de sessão

A maior vantagem do objeto Session é que é possível armazenar variáveis nele, para que as páginas subsequentes possam lê-las, sua aplicação é muito ampla.

O exemplo a seguir atribui "Donald Duck" à variável de sessão chamada username e atribui "50" à variável de sessão chamada age:

<%
Session("nome_de_usuário")="Donald Duck"
Session("idade")=50
%>

Uma vez que o valor seja armazenado na variável de sessão, ele pode ser usado por qualquer página do aplicativo ASP:

Bem-vindo <%Response.Write(Session("nome_de_usuário"))%>

O resultado da linha de código acima é: "Bem-vindo Donald Duck".

Também é possível salvar parâmetros do usuário no objeto de sessão e, em seguida, acessar esses parâmetros para determinar qual página retornar ao usuário.

O exemplo a seguir determina que, se o usuário estiver usando uma resolução de显示器 baixa, será retornada a versão de texto da página:

<%Se Session("screenres")="low" Então%> 
  Esta é a versão de texto da página
<%Senão%> 
  Esta é a versão multimídia da página
<%Fim Se%>

Remover variável de sessão

A coleção contents contém todas as variáveis de sessão.

Você pode remover variáveis de sessão usando o método remove.

No exemplo a seguir, se o valor da variável de sessão "idade" for menor que 18, remova a variável de sessão "sale":

<%
Se Session.Contents("idade")<18 então 
  Session.Contents.Remove("sale")
Fim Se 
%>

Se precisar remover todas as variáveis da sessão, use o método RemoveAll:

<%
Session.Contents.RemoveAll%
%>

Percorrer a coleção contents

A coleção contents contém todas as variáveis de sessão. Você pode percorrê-la para ver quais variáveis estão armazenadas:

<%
Session("nome_de_usuário")="Donald Duck"
Session("idade")=50
dim i
For Each i in Session.Contents
  Response.Write(i & "<br />")
Next
%>

Resultado:

nome_de_usuário
idade

Se precisar saber o número de itens na coleção contents, você pode usar a propriedade count:

<%
dim i
dim j
j=Count de Session.Contents
Response.Write("Variáveis de sessão: " & j)
Para i=1 até j
  Response.Write(Session.Contents(i) & "<br />")
Next
%>

Resultado:

Variáveis de sessão: 2
Donald Duck
50

Percorrer a coleção StaticObjects

Pode-se percorrer a coleção StaticObjects para ver os valores de todos os objetos armazenados no objeto sessão:

<%
dim i
For Each i in Session.StaticObjects
  Response.Write(i & "<br />")
Next
%>