ASP Session Object

Session 对象用于存储用户的信息。存储于 session 对象中的变量持有单一用户的信息,并且对于一个应用程序中的所有页面都是可用的。

Session 对象

当您操作某个应用程序时,您打开它,做些改变,然后将它关闭。这很像一次对话(Session)。计算机知道您是谁。它清楚您在何时打开和关闭应用程序。但是在因特网上有一个问题:由于 HTTP 地址无法存留状态,web 服务器并不知道您是谁以及您做了什么。

ASP 通过为每位用户创建一个唯一的 cookie 的方式解决了这个问题。cookie 被传送至客户端,它含有可识别用户的信息。这种接口被称作 Session 对象。

Session-objektet bruges til at gemme oplysninger om brugeren eller til at ændre indstillinger for en brugers session. Variabler gemt i session-objektet indeholder oplysninger om en enkelt bruger og er tilgængelige for alle sider i applikationen. Oplysninger gemt i session-objektet er typisk navn, id og parametre. Serveren opretter en ny Session for hver ny bruger og opdaterer denne Session-objekt, når sessionen udløber.

Når afsluttes session?

Session begynder:

  • Når en ny bruger anmoder om en ASP-fil, og Global.asa-filen refererer til Session_OnStart-subprogrammet;
  • Når en værdi gemmes i Session-variablen;
  • Når en bruger anmoder om en ASP-fil, og Global.asa bruger <object>-etiketten til at eksemplificere et objekt gennem sessions omfang;

Når afsluttes session?

Hvis brugeren ikke anmoder eller opdaterer siden inden for den angivne tid i applikationen, afsluttes sessionen. Standardværdien er 20 minutter.

Hvis du vil sætte timeout-intervalletiden til en længere eller kortere periode, kan du indstille Timeout Egenskab.

Følgende eksempel sætter en timeout-intervalletid på 5 minutter:

<%
Session.Timeout=5
%>

For at afslutte sessionen med det samme kan du bruge Abandon Metode:

<%
Session.Abandon
%>

Bemærk:Det største problem med brug af session er, når de skal afsluttes. Vi ved ikke, om brugerens seneste forespørgsel er den sidste forespørgsel. Derfor ved vi ikke, hvor længe sessionen skal "leve". At vente for længe på en inaktiv session kan opbruge serverens ressourcer. Dog hvis sessionen afsluttes for tidligt, skal brugeren starte forfra igen, fordi serveren har slettet alle oplysninger. At finde den rigtige timeout-intervalletid er svært.

Tip:Hvis du bruger session-variabler, skal du ikke gemme store mængder data i dem.

Gem og hent session-variabler

Session-objektets største fordel er, at man kan gemme variabler i det til senere læsning af websider, og dens anvendelsesområde er meget bredt.

Følgende eksempel tildeler "Donald Duck" til session-variablen med navnet username og tildeler "50" til session-variablen med navnet age:

<%
Session("username")="Donald Duck"
Session("age")=50
%>

Når værdien er gemt i session-variablen, kan den bruges af enhver side i ASP-applikationen:

Welcome <%Response.Write(Session("username"))%>

Resultatet af denne linje kode er: "Welcome Donald Duck".

Du kan også gemme brugerparametre i session-objektet og derefter tilgå disse parametre for at beslutte, hvilken side der returneres til brugeren.

I nedenstående eksempel bestemmes det, at hvis brugeren bruger en lav skærmløsning, returneres en ren tekstversion af siden:

<%If Session("screenres")="low" Then%> 
  Dette er tekstversionen af siden
<%Else%> 
  Dette er multimedieversionen af siden
<%End If%>

Fjern session-variabler

Contents-samlingen indeholder alle session-variabler.

Du kan fjerne session-variabler ved hjælp af remove-metoden.

I nedenstående eksempel, hvis session-variablen "age" er mindre end 18, fjernes session-variablen "sale":

<%
If Session.Contents("age")<18 then 
  Session.Contents.Remove("sale")
End If 
%>

Hvis du vil fjerne alle variabler fra sessionen, skal du bruge RemoveAll-metoden:

<%
Session.Contents.RemoveAll()
%>

Gennemgå contents-samlingen

Contents-samlingen indeholder alle session-variabler. Du kan gennemgå contents-samlingen for at se de lagrede variabler:

<%
Session("username")="Donald Duck"
Session("age")=50
dim i
For Each i i Session.Contents
  Response.Write(i & "<br />")
Next
%>

Resultat:

username
age

Hvis du vil finde antallet af elementer i contents-samlingen, kan du bruge count-egenskaben:

<%
dim i
dim j
j=Session.Contents.Count
Response.Write("Session variables: " & j)
For i=1 to j
  Response.Write(Session.Contents(i) & "<br />")
Next
%>

Resultat:

Session variables: 2
Donald Duck
50

Gennemgå StaticObjects samlingen

Man kan gennemgå StaticObjects samlingen for at se værdierne af alle objekter gemt i session objektet:

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