Objekt relace ASP


Objekt Session ukládá informace o uživatelské relaci nebo mění nastavení pro ni.


Objekt Session

Když pracujete s aplikací na počítači, otevřete ji, provedete nějaké změny a poté ji zavřete. To je hodně jako relace. Počítač ví, kdo jste. Ví, kdy aplikaci otevřete a kdy ji zavřete. Na internetu je však jeden problém: webový server neví, kdo jste a co děláte, protože HTTP adresa neudržuje stav.

ASP řeší tento problém vytvořením jedinečného cookie pro každého uživatele. Soubor cookie je odeslán do počítače uživatele a obsahuje informace, které uživatele identifikují. Toto rozhraní se nazývá objekt Session.

Objekt Session ukládá informace o uživatelské relaci nebo mění nastavení pro ni.

Proměnné uložené v objektu Session obsahují informace o jednom jediném uživateli a jsou dostupné všem stránkám v jedné aplikaci. Běžné informace uložené v proměnných relace jsou jméno, id a preference. Server vytvoří nový objekt Session pro každého nového uživatele a zničí objekt Session, když relace vyprší.


Kdy začíná relace?

Relace začíná, když:

  • Nový uživatel požaduje soubor ASP a soubor Global.asa obsahuje proceduru Session_OnStart
  • Hodnota je uložena v proměnné Session
  • Uživatel požaduje soubor ASP a soubor Global.asa používá značku <object> k vytvoření instance objektu s rozsahem relace.

Kdy relace končí?

Relace končí, pokud uživatel nepožádal nebo neobnovil stránku v aplikaci po určitou dobu. Ve výchozím nastavení je to 20 minut.

Pokud chcete nastavit interval časového limitu, který je kratší nebo delší než výchozí, použijte vlastnost Timeout .

Níže uvedený příklad nastavuje časový limit 5 minut:

<%
Session.Timeout=5
%>

K okamžitému ukončení relace použijte metodu Abandon :

<%
Session.Abandon
%>

Poznámka: Hlavním problémem relací je KDY by měly skončit. Nevíme, zda byl poslední požadavek uživatele konečný nebo ne. Nevíme tedy, jak dlouho bychom měli relaci udržet „naživu“. Příliš dlouhé čekání na nečinnou relaci spotřebovává zdroje na serveru, ale pokud je relace odstraněna příliš brzy, uživatel musí začít znovu, protože server smazal všechny informace. Najít správný časový limit může být obtížné!

Tip: Do proměnných relace ukládejte pouze MALÉ množství dat!



Ukládání a načítání proměnných relace

Nejdůležitější věcí na objektu Session je, že do něj můžete ukládat proměnné.

Níže uvedený příklad nastaví uživatelské jméno proměnné Session na „Kačer Donald“ a proměnnou Session Age na „50“:

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

Když je hodnota uložena v proměnné relace, lze ji získat z JAKÉKOLI stránky v aplikaci ASP:

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

Řádek výše se vrací: „Vítejte Kačer Donald“.

Můžete také uložit uživatelské předvolby do objektu Session a poté k těmto předvolbám přistupovat a vybrat si, která stránka se má uživateli vrátit.

Níže uvedený příklad uvádí pouze textovou verzi stránky, pokud má uživatel nízké rozlišení obrazovky:

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

Odebrat proměnné relace

Kolekce Contents obsahuje všechny proměnné relace.

Proměnnou relace je možné odstranit pomocí metody Remove.

Níže uvedený příklad odstraní proměnnou relace „sale“, pokud je hodnota proměnné relace „age“ nižší než 18:

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

Chcete-li odstranit všechny proměnné v relaci, použijte metodu RemoveAll:

<%
Session.Contents.RemoveAll()
%>

Projděte sbírku obsahu

Kolekce Contents obsahuje všechny proměnné relace. Kolekci Contents můžete procházet, abyste viděli, co je v ní uloženo:

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

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

Výsledek:

username
age

Pokud neznáte počet položek v kolekci Contents, můžete použít vlastnost Count:

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

Výsledek:

Session variables: 2
Donald Duck
50

Procházet kolekcí StaticObjects

Kolekcí StaticObjects můžete procházet, abyste viděli hodnoty všech objektů uložených v objektu Session:

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