Объект Session ASP
- Предыдущая страница Cookies ASP
- Следующая страница Приложение ASP
Объект сеанса используется для хранения информации пользователя. Переменные, хранящиеся в объекте сеанса, содержат информацию о единственном пользователе и доступны на всех страницах приложения.
Объект сеанса
Когда вы работаете с приложением, вы открываете его, вносите изменения и затем закрываете. Это похоже на разговор (сеанс). Компьютер знает, кто вы. Он знает, когда вы открываете и закрываете приложение. Но в Интернете есть проблема: поскольку HTTP-адрес не может сохранять состояние, веб-сервер не знает, кто вы и что вы сделали.
ASP решает эту проблему, создавая уникальный cookie для каждого пользователя. Cookie передается на клиент, он содержит информацию, позволяющую идентифицировать пользователя. Этот интерфейс называется объектом сеанса.
Объект Session используется для хранения информации о пользователе или для изменения настроек session пользователя. Переменные, хранящиеся в объекте Session, содержат информацию о единственном пользователе и доступны на всех страницах приложения. Информация, хранящаяся в объекте Session, обычно включает имя, идентификатор и параметры. Сервер создает новый Session для каждого нового пользователя и аннулирует этот объект Session при его истечении срока действия.
Когда начинается Session?
Session начинается:
- Когда новый пользователь запрашивает ASP файл и файл Global.asa вызывает процедуру Session_OnStart;
- Когда значение хранится в переменной Session;
- Когда пользователь запрашивает ASP файл и Global.asa использует тег <object> для создания объекта через scope session;
Когда заканчивается Session?
Если пользователь не запросил или обновил страницу в приложении в течение установленного времени, session завершается. Значение по умолчанию составляет 20 минут.
Если вы хотите установить интервал времени таймаута дольше или короче, можно установить Timeout Свойство.
В следующем примере устанавливается интервал времени таймаута в 5 минут:
<% Session.Timeout=5 %>
Чтобы немедленно завершить session, можно использовать Abandon Метод:
<% Session.Abandon %>
Внимание:Основная проблема при использовании session - это то, когда они должны завершиться. Мы не знаем, был ли последний запрос пользователя последним. Поэтому мы не знаем, сколько времени должен "жить" session. Долгое ожидание空闲ого session может исчерпать ресурсы сервера. Однако, если session завершается слишком рано, пользователю придется начинать все сначала, так как сервер удалил все информацию. Нахождение подходящего интервала времени для таймаута очень трудно.
Совет:Если вы используете переменные session, не храните в них большое количество данных.
Хранение и извлечение переменных session
Основное преимущество объекта Session в том, что в нем можно хранить переменные, которые могут быть использованы для чтения на последующих страницах, и его применение очень широко.
В следующем примере строка "Donald Duck" присваивается переменной session под именем username, а строка "50" присваивается переменной session под именем age:
<% Session("имя_пользователя")="Donald Duck" Session("возраст")=50 %>
Как только значение сохраняется в переменную session, его можно использовать на любой странице ASP приложения:
Добро пожаловать <%Response.Write(Session("имя_пользователя"))%>
Результат выполнения этой строки программы: "Добро пожаловать, Donald Duck".
Также можно сохранить пользовательские параметры в объекте сессии и затем использовать эти параметры для определения, какая страница будет возвращена пользователю.
В следующем примере, если пользователь использует низкое разрешение экрана, возвращается текстовая версия страницы:
<%If Session("screenres")="low" Then%> Эта страница является текстовой версией <%Else%> Эта страница является мультимедийной версией <%End If%>
Удаление переменной сессии
Набор contents содержит все сессионные переменные.
Переменную сессии можно удалить с помощью метода remove.
В следующем примере, если значение переменной сессии "возраст" меньше 18, удаляем переменную сессии "sale":
<% If Session.Contents("возраст")<18 then Session.Contents.Remove("sale") End If %>
Чтобы удалить все переменные сессии, используйте метод RemoveAll:
<% Session.Contents.RemoveAll() %>
Пройти по набору contents
Набор contents содержит все сессионные переменные. Их можно просмотреть, пройдясь по набору contents:
<% Session("имя_пользователя")="Donald Duck" Session("возраст")=50 dim i Для каждого i в Session.Contents Response.Write(i & "<br />") Next %>
Результат:
имя_пользователя возраст
Если необходимо узнать количество элементов в наборе contents, можно использовать атрибут count:
<% dim i dim j j=Session.Contents.Count Response.Write("Сессионные переменные: " & j) For i=1 to j Response.Write(Session.Contents(i) & "<br />") Next %>
Результат:
Сессионные переменные: 2 Donald Duck 50
Перебор набора StaticObjects
Можно просмотреть значения всех объектов, хранящихся в объекте session, проецируя StaticObjects набор:
<% dim i Для каждого i в Session.StaticObjects Response.Write(i & "<br />") Next %>
- Предыдущая страница Cookies ASP
- Следующая страница Приложение ASP