O objeto de sessão da tecnologia ASP (Páginas do Servidor Ativo) é usado para armazenar informações privadas dos usuários durante as conversas. As variáveis e objetos definidos no objeto de sessão do usuário atual podem ser compartilhados entre as páginas, mas não podem ser acessados por outros usuários no aplicativo. Informações sobre status.
O objeto da sessão possui uma propriedade muito importante: o tempo limite, que é usado para definir o tempo em que o objeto da sessão pode permanecer inativo antes do lançamento do recurso da sessão (o valor padrão é de 20 minutos). Quando o valor do tempo definido pela propriedade Timeout for esgotado, o recurso de sessão será divulgado. Destrua o objeto da sessão através do atributo de tempo limite, evitando o objeto de sessão gerado no servidor sem restrições e protegendo os recursos do servidor. No entanto, no desenvolvimento real da rede, é frequentemente encontrado que o processo de aplicação não pode ser concluído normalmente devido à falha do objeto de sessão e à perda de informações de status do usuário.
Embora a estratégia de liberar recursos usando o atributo de tempo limite seja o objetivo de proteger o servidor, a falha imprevisível do objeto de sessão se tornou uma desvantagem no desenvolvimento de aplicativos. Portanto, no desenvolvimento da aplicação real, o problema da falha do objeto de sessão deve ser resolvido.
Soluções tradicionais
As soluções existentes são todos para usar os métodos do lado do servidor para resolver o problema da falha do objeto de sessão. Os métodos de tratamento típicos são divididos em duas categorias: tratamento antes da falha e tratamento após falha.
Processamento antes da falha refere -se à transferência e outro processamento de variáveis antes que o objeto de sessão expire para evitar problemas antes que isso aconteça. Uma solução típica é definir um temporizador no aplicativo, acionar o temporizador 5 minutos antes do falha do objeto de sessão e redefinir as várias variáveis e objetos do objeto de sessão. Este método adiciona carga adicional ao servidor porque o timer deve ser mantido em tempo real no lado do servidor e o programa deve ser garantido para estar ativo durante toda a sessão.
O processamento após a falha refere -se a solicitar o usuário a processar imediatamente após o término do objeto da sessão. Uma solução típica é salvar pontos de interrupção no lado do servidor após o falha do objeto de sessão e solicitar ao usuário fazer login novamente e continuar a concluir o trabalho. Esse método é simples de implementar, mas geralmente é reclamado e criticado pelos usuários finais devido à recuperação automática incompleta dos pontos de interrupção e à complexidade do processo de re-login.
Em resposta às deficiências dos dois tipos de soluções acima, na prática de programação, o autor combina as características do objeto Cookie e usa o método de acesso em conjunto com variáveis no nível da sessão no cliente, que não apenas evitam a demanda adicional de servidor Recursos, mas também resolve o problema do problema dos pontos de interrupção não serem restaurados automaticamente e também elimina o problema de fazer login novamente.
Nova solução
Um objeto de cookie é um pequeno pacote de informações que armazena dados sobre o usuário atual, que pode ser passado entre o navegador e o servidor da Web. Nos aplicativos da Web, os cookies fornecem um mecanismo para rastrear e gravar cada localização do usuário. Um dos usos mais comuns dos cookies é salvar a hora e a data da última página da web a serem visitadas em um aplicativo da Web ou no URL a ser visitado.
Geralmente, os objetos de cookie são armazenados no subdiretório de cookies no diretório cliente do Windows System como arquivos. Os dados de informações armazenados no objeto de cookie podem ser armazenados por um longo tempo, portanto, as variáveis no nível da sessão podem ser backups no objeto de cookie. objeto de biscoito.
Um objeto de cookie tem as seguintes propriedades:
● Expira: defina a data em que o objeto de cookie expirar;
● Domínio: determina a transmissão do objeto de cookie como um membro determinado apenas pelo atributo de domínio;
● Caminho: determine o caminho de entrega do objeto de cookie;
● Seguro: esclarecer se o objeto de cookie é seguro;
● Haskeys: retorna se o objeto de cookie contém vários valores.
Se a propriedade Expire do objeto Cookie não estiver explicitamente definida, o objeto de cookie expirará no final da sessão do usuário.
Leia e escreva objetos através da coleção de solicitações e coleta de respostas no ASP. A sintaxe para escrever variáveis em um objeto de cookie é a seguinte:
Response.Cookies (Cookie) [(key) | .Attribute] = Valor
Onde, o cookie é o nome do arquivo de cookie, a chave indica um elemento de dicionário, o atributo é uma natureza específica do cookie e o valor é o valor atribuído ao cookie. Por exemplo, para criar um cookie chamado MyHobby e atribuir seu valor a: basquete, use a seguinte sintaxe:
< %Response.Cookies (MyHobby) = Basketball %>
O método de ler um objeto de cookie na máquina cliente é o seguinte:
Request.cookies (cookie) [(chave) | .Attribute]
Entre eles, o cookie é o nome do cookie solicitado, a chave é o subscrito do valor da subchave e o atributo é usado para indicar o atributo Cookie. Por exemplo: Para extrair informações de um cookie chamado MyHobby e escrever seu valor na página, use a seguinte sintaxe:
< % Request.cookies (myhobby) %>
Deve -se notar que o cabeçalho da página HTTP não pode ser gravado em um objeto de cookie depois que a página HTTP foi enviada para o navegador solicitador. Em outras palavras, as informações de cookies não podem ser enviadas ao navegador depois que qualquer identificador HTML é enviado ao navegador.
Implementação específica
A seguir, é apresentada uma implementação da sala de bate -papo com base na tecnologia ASP para introduzir como lidar com a questão da falha da variável de objeto de sessão.
● Variável inicial no nível da sessão antes do login do usuário: Nome de usuário (usado para armazenar o nome de usuário de login).
<%Sessão (nome de usuário) =%>
// inicialize o objeto de cookie
< % Response.cookies (nome de usuário) = %>
● Quando o usuário efetua login, defina variáveis no nível da sessão e faça o backup do objeto Cookie do cliente.
<%nome de usuário = Trim (request.for (nome de usuário))%>
< % Sessão (nome de usuário) = nome de usuário %>
// Backup de variáveis de nível de sessão para objeto de cookie do cliente
< % Response.cookies (nome de usuário) = nome de usuário %>
● Quando o usuário fala, a variável no nível da sessão é lida.
< % nome de usuário = sessão (nome de usuário) %>
// Se a variável expirou, pesquise o objeto de cookie do cliente
< % se o nome de usuário = então %>
< % nome de usuário = request.cookies (nome de usuário) %>
< % se o nome de usuário = então %>
// Se o usuário inserir a sala de bate -papo sem fazer login, o valor do atributo do objeto de cookie estará vazio. No momento, o usuário é solicitado a ter um erro e recorrer à página de login do usuário
< %Response.Redirect error.html %>
< % else %>
// restaurar esta variável de nível de sessão do objeto de cookie
< % Sessão (nome de usuário) = nome de usuário %>
< % final se %>
< % final se %>
● Quando o usuário sair da sala de bate-papo, limpe o objeto no nível da sessão e o objeto de cookie.
<%Sessão (nome de usuário) =%>
// Limpe o valor do atributo do objeto de cookie para evitar que os usuários digitem a sala de bate -papo sem fazer login
< % Response.cookies (nome de usuário) = %>
O código acima é executado e passado no ambiente Windows NT 4.0 + IIS 4.0 + IE 5.0.
Resumo
O método de acessar variáveis no nível da sessão no cliente é simples e prático e pode efetivamente evitar problemas como login forçado pelos usuários.