Obiekt Session przechowuje informacje lub zmianę ustawień dla sesji użytkownika.
Obiekt Session
Podczas pracy z aplikacją na komputerze, otwórz go, zrobić kilka zmian, a następnie ją zamknąć. To jest bardzo podobny do sesji. Komputer wie, kim jesteś. Wie kiedy otworzyć aplikację i kiedy go zamknąć. Jednak w Internecie jest jeden problem: serwer WWW nie wie kim jesteś i co robisz, ponieważ adres HTTP nie utrzymuje stan.
ASP rozwiązuje ten problem tworząc niepowtarzalny cookie dla każdego użytkownika. Plik cookie jest wysyłane do komputera użytkownika i zawiera informacje identyfikujące użytkownika. Interfejs ten jest nazywany obiekt Session.
Obiekt Session przechowuje informacje lub zmianę ustawień dla sesji użytkownika.
Zmienne przechowywane w sesji przedmiot przechowywania informacji na temat jednego użytkownika i są dostępne dla wszystkich stron w jednej aplikacji. Wspólne informacje przechowywane w zmiennych sesyjnych są nazwa, ID, i preferencje. Serwer tworzy nowy obiekt sesji dla każdego nowego użytkownika, a niszczy obiekt Session po wygaśnięciu sesji.
Kiedy robi Początek sesji?
Sesja rozpoczyna się, gdy:
- Nowy użytkownik żąda pliku ASP, a plik Global.asa obejmuje procedurę Session_OnStart
- Wartość jest przechowywana w zmiennej sesji
- Użytkownik żąda pliku ASP, a plik Global.asa używa <object> tag instancję obiektu z zakresu sesji
Kiedy robi sesja się skończy?
Sesja kończy się, jeśli użytkownik nie zażądał lub odświeżyć stronę we wniosku o określonym terminie. Domyślnie jest to 20 minut.
Jeśli chcesz ustawić limit czasu, który jest krótszy lub dłuższy niż domyślny, należy użyć Timeout nieruchomości.
Przykład poniżej przedstawia przedział czasu oczekiwania 5 minut:
<%
Session.Timeout=5
%>
Użyj Abandon metodę natychmiast zakończyć sesję:
<%
Session.Abandon
%>
Note: Głównym problemem jest, gdy sesje powinny kończyć. Nie wiemy, czy ostatnia prośba autora była ostateczna, czy też nie. Więc nie wiem, jak długo powinniśmy utrzymywać sesję "alive" . Zbyt długie oczekiwanie na sesji bezczynności zużywa zasobów na serwerze, ale jeśli sesja zostanie usunięta zbyt szybko, użytkownik musi zacząć wszystko od nowa, ponieważ serwer usunął wszystkie informacje. Znalezienie odpowiedniego limit czasu może być trudne!
Tip: Tylko przechowywania niewielkich ilości danych w zmiennych sesji!
Przechowywania i pobierania zmiennych sesji
Najważniejszą rzeczą w obiekcie Session to, że można przechowywać zmienne w nim.
Poniższy przykład ustawia zmienną sesji username do "Donald Duck" i zmiennej sesji age do "50" :
<%
Session("username")="Donald Duck"
Session("age")=50
%>
Gdy wartość jest przechowywana w zmiennej sesji można dojechać z każdej strony w aplikacji ASP:
Welcome <%Response.Write(Session("username"))%>
Linia powyżej zwrotów: "Welcome Donald Duck" .
Można również zapisać preferencji użytkownika w obiekcie Session, a następnie uzyskać dostęp do preferencji co do wyboru strony, aby powrócić do użytkownika.
Poniższy przykład określa Wersja tekstowa strony, jeśli użytkownik ma niską rozdzielczość ekranu:
<%If Session("screenres")="low" Then%>
This is the text version of the page
<%Else%>
This is the multimedia version of the page
<%End If%>
Usuń zmiennych sesji
Kolekcja Zawartość zawiera wszystkie zmienne sesji.
Jest możliwe, aby usunąć zmiennej sesji metodą Usuń.
Poniższy przykład usuwa zmiennej sesji "sale" , jeżeli wartość zmiennej sesji "age" jest niższa niż 18:
<%
If Session.Contents("age")<18 then
Session.Contents.Remove("sale")
End If
%>
Aby usunąć wszystkie zmienne w sesji, należy użyć metody removeAll:
<%
Session.Contents.RemoveAll()
%>
Pętla poprzez gromadzenie treści
Kolekcja Zawartość zawiera wszystkie zmienne sesji. Można pętli gromadzenia treści, aby zobaczyć, co jest zapisane w nim:
<%
Session("username")="Donald Duck"
Session("age")=50
dim i
For Each i in Session.Contents
Response.Write(i & "<br>")
Next
%>
Wynik:
username
age
Jeśli nie znać liczbę elementów w kolekcji treści, można użyć właściwości 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
%>
Wynik:
Session variables: 2
Donald Duck
50
Pętla poprzez zbieranie StaticObjects
Można pętli kolekcji StaticObjects, aby zobaczyć wartości wszystkich obiektów przechowywanych w obiekcie Session:
<%
dim i
For Each i in Session.StaticObjects
Response.Write(i & "<br>")
Next
%>