Obiekt Sesja ASP

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

Session 对象

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

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

Obiekt Session jest używany do przechowywania informacji o użytkowniku lub do zmiany ustawień sesji użytkownika. Zmienne przechowywane w obiekcie Session zawierają informacje o pojedynczym użytkowniku i są dostępne dla wszystkich stron aplikacji. Informacje przechowywane w obiekcie Session通常是 nazwa, id oraz parametry. Serwer tworzy nową sesję dla każdego nowego użytkownika i usuwa obiekt sesji, gdy sesja wygasa.

Kiedy rozpoczyna się sesja?

Kiedy rozpoczyna się sesja?

  • Kiedy nowy użytkownik prosi o plik ASP i plik Global.asa odnosi się do procedury Session_OnStart;
  • Kiedy wartość jest przechowywana w zmiennej Session;
  • Kiedy użytkownik prosi o plik ASP i Global.asa używa znacznika <object> do przykładu obiektu za pomocą zakresu sesji;

Kiedy sesja kończy się?

Jeśli użytkownik nie prosi lub odświeża stronę w aplikacji w ciągu określonego czasu, sesja zostanie zakończona. Domyślna wartość to 20 minut.

Jeśli chcesz ustawić dłuższy lub krótszy czas życia sesji, możesz go ustawić Timeout Atrybut.

Poniższy przykład ustawia 5-minutowy czas życia sesji:

<%
Session.Timeout=5
%>

Aby natychmiast zakończyć sesję, możesz użyć Abandon Metoda:

<%
Session.Abandon
%>

Uwaga:Głównym problemem z użyciem sesji jest kwestia tego, kiedy powinny one zakończyć się. Nie wiemy, czy ostatnia prośba użytkownika była ostatnią prośbą. Dlatego nie wiemy, przez jaki czas powinna "żyć" sesja. Długie czekanie na zakończenie pustej sesji może zużyć zasoby serwera. Jednak zbyt wczesne usunięcie sesji sprawi, że użytkownik będzie musiał zacząć od nowa, ponieważ serwer usunął wszystkie informacje. Znalezienie odpowiedniego czasu życia sesji jest trudne.

Wskazówka:Jeśli używasz zmiennych sesji, nie przechowuj w nich dużej ilości danych.

Przechowywanie i pobieranie zmiennych sesji

Największą zaletą obiektu Session jest możliwość przechowywania zmiennych, które mogą być odczytywane przez kolejne strony. Jego zakres zastosowań jest bardzo szeroki.

Poniższy przykład przypisuje "Donald Duck" do zmiennej sesji o nazwie username, oraz przypisuje "50" do zmiennej sesji o nazwie age:

<%
Session("nazwa_użytkownika")="Donald Duck"
Session("wiek")=50
%>

Gdy wartość zostanie zapisana w zmiennej sesji, może być używana przez każdą stronę ASP aplikacji:

Witaj <%Response.Write(Session("nazwa_użytkownika"))%>

Wynik wiersza poniżej to: "Witaj Donald Duck".

Możesz również przechowywać parametry użytkownika w obiekcie sesji i na podstawie tych parametrów zdecydować, którą stronę zwrócić użytkownikowi.

Poniższy przykład określa, że jeśli użytkownik używa niskiej rozdzielczości ekranu, zwrócić czystą wersję strony tekstowej:

<%Jeśli Session("rozdzielczość ekranu")="niska" Then%> 
  To jest tekstowa wersja strony
<%Else%> 
  To jest multimedialna wersja strony
<%End If%>

Usunięcie zmiennej sesyjnej

Zbiór contents zawiera wszystkie zmienne sesyjne.

Możesz usunąć zmienną sesyjną za pomocą metody remove.

W poniższym przykładzie, jeśli wartość zmiennej sesyjnej "wiek" jest mniejsza niż 18, usunąć zmienną sesyjną "sprzedaż":

<%
Jeśli Session.Contents("wiek")<18 then 
  Session.Contents.Remove("sprzedaż")
End If 
%>

Aby usunąć wszystkie zmienne z sesji, użyj metody RemoveAll:

<%
Session.Contents.RemoveAll()
%>

Przejście przez zbiór contents

Zbiór contents zawiera wszystkie zmienne sesyjne. Możesz przejść przez zbiór contents, aby zobaczyć przechowywane w nim zmienne:

<%
Session("nazwa_użytkownika")="Donald Duck"
Session("wiek")=50
dim i
For Each i in Session.Contents
  Response.Write(i & "<br />")
Next
%>

Wynik:

nazwa_użytkownika
wiek

Jeśli chcesz dowiedzieć się liczby elementów w zbiorze contents, możesz użyć atrybutu count:

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

Wynik:

Zmienne sesyjne: 2
Donald Duck
50

Przejdź przez kolekcję StaticObjects

Można przejść przez kolekcję StaticObjects, aby zobaczyć wartości wszystkich obiektów przechowywanych w obiekcie sesji:

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