ASP- sessie -objek


'n Sessie-objek stoor inligting oor, of verander instellings vir 'n gebruikersessie.


Die Sessie-objek

Wanneer jy met 'n toepassing op jou rekenaar werk, maak jy dit oop, doen 'n paar veranderinge en dan maak jy dit toe. Dit is baie soos 'n sessie. Die rekenaar weet wie jy is. Dit weet wanneer jy die toepassing oopmaak en wanneer jy dit toemaak. Op die internet is daar egter een probleem: die webbediener weet nie wie jy is en wat jy doen nie, want die HTTP-adres handhaaf nie die toestand nie.

ASP los hierdie probleem op deur 'n unieke koekie vir elke gebruiker te skep. Die koekie word na die gebruiker se rekenaar gestuur en dit bevat inligting wat die gebruiker identifiseer. Hierdie koppelvlak word die Sessie-objek genoem.

Die Sessie-objek stoor inligting oor, of verander instellings vir 'n gebruikersessie.

Veranderlikes wat in 'n Sessie-objek gestoor word, bevat inligting oor een enkele gebruiker, en is beskikbaar vir alle bladsye in een toepassing. Algemene inligting wat in sessieveranderlikes gestoor word, is naam, ID en voorkeure. Die bediener skep 'n nuwe sessie-objek vir elke nuwe gebruiker, en vernietig die sessie-objek wanneer die sessie verval.


Wanneer begin 'n sessie?

'n Sessie begin wanneer:

  • 'n Nuwe gebruiker versoek 'n ASP-lêer, en die Global.asa-lêer bevat 'n Session_OnStart-prosedure
  • 'n Waarde word in 'n Sessie-veranderlike gestoor
  • 'n Gebruiker versoek 'n ASP-lêer, en die Global.asa-lêer gebruik die <object>-merker om 'n objek met sessie-omvang te instansieer

Wanneer eindig 'n sessie?

'n Sessie eindig as 'n gebruiker nie 'n bladsy in die toepassing vir 'n bepaalde tydperk versoek of verfris het nie. By verstek is dit 20 minute.

As jy 'n uittelinterval wil stel wat korter of langer is as die verstek, gebruik die Tydvertraging- eienskap.

Die voorbeeld hieronder stel 'n uittelinterval van 5 minute:

<%
Session.Timeout=5
%>

Gebruik die Abandon -metode om 'n sessie onmiddellik te beëindig:

<%
Session.Abandon
%>

Let wel: Die grootste probleem met sessies is WANNEER dit moet eindig. Ons weet nie of die gebruiker se laaste versoek die laaste een was of nie. Ons weet dus nie hoe lank ons ​​die sessie “lewendig” moet hou nie. Om te lank vir 'n ledige sessie te wag, gebruik hulpbronne op die bediener, maar as die sessie te gou uitgevee word, moet die gebruiker van voor af begin omdat die bediener al die inligting uitgevee het. Dit kan moeilik wees om die regte uittelinterval te vind!

Wenk: Stoor slegs KLEIN hoeveelhede data in sessieveranderlikes!



Stoor en haal sessieveranderlikes op

Die belangrikste ding van die Session-objek is dat jy veranderlikes daarin kan stoor.

Die voorbeeld hieronder sal die Sessie-veranderlike gebruikersnaam op "Donald Duck" stel en die Sessie-veranderlike ouderdom op "50":

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

Wanneer die waarde in 'n sessieveranderlike gestoor word, kan dit vanaf ENIGE bladsy in die ASP-toepassing bereik word:

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

Die reël hierbo gee terug: "Welkom Donald Duck".

Jy kan ook gebruikervoorkeure in die Sessie-objek stoor, en dan toegang tot daardie voorkeur kry om te kies watter bladsy om na die gebruiker terug te keer.

Die voorbeeld hieronder spesifiseer 'n teksweergawe van die bladsy as die gebruiker 'n lae skermresolusie het:

<%If Session("screenres")="low" Then%>
  This is the text version of the page
<%Else%>
  This is the multimedia version of the page
<%End If%>

Verwyder sessieveranderlikes

Die inhoudversameling bevat alle sessieveranderlikes.

Dit is moontlik om 'n sessieveranderlike te verwyder met die Verwyder-metode.

Die voorbeeld hieronder verwyder die sessieveranderlike "verkoop" as die waarde van die sessieveranderlike "ouderdom" laer as 18 is:

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

Om alle veranderlikes in 'n sessie te verwyder, gebruik die RemoveAll metode:

<%
Session.Contents.RemoveAll()
%>

Loop deur die inhoudversameling

Die inhoudversameling bevat alle sessieveranderlikes. Jy kan deur die inhoudversameling loop om te sien wat daarin gestoor is:

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

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

Resultaat:

username
age

As jy nie die aantal items in die inhoudversameling ken nie, kan jy die Tel-eienskap gebruik:

<%
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
%>

Resultaat:

Session variables: 2
Donald Duck
50

Loop deur die StaticObjects-versameling

Jy kan deur die StaticObjects-versameling loop om die waardes van alle voorwerpe wat in die Session-objek gestoor is, te sien:

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