Объект Session хранит информацию о, или изменения настроек для сеанса пользователя.
Объект Session
Когда вы работаете с приложением на вашем компьютере, вы открываете его, сделать некоторые изменения, а затем закрыть его. Это очень похоже на сессии. Компьютер знает, кто ты. Он знает, когда вы открываете приложение и при его закрытии. Тем не менее, в Интернете есть одна проблема: веб-сервер не знает, кто вы и что вы делаете, так как адрес HTTP не поддерживает состояние.
ASP решает эту проблему, создавая уникальные кук для каждого пользователя. Печенье отправляется на компьютер пользователя и содержит информацию, которая идентифицирует пользователя. Этот интерфейс называется объект Session.
Объект Session хранит информацию о, или изменения настроек для сеанса пользователя.
Переменные, хранящиеся в сессии объекта хранения информации об одном пользователе, и доступны для всех страниц в одном приложении. Общая информация, хранящаяся в сессионных переменных имя, идентификатор и предпочтения. Сервер создает новый объект Session для каждого нового пользователя, и уничтожает объект Session, когда истекает сессия.
Когда делает Start Session?
Сеанс начинается, когда:
- Новый пользователь запрашивает файл ASP, а файл Global.asa включает процедуру Session_OnStart
- Значение хранится в переменной Session
- Пользователь запрашивает файл ASP, а файл Global.asa использует <object> тег для создания экземпляра объекта с областью сеанса
Когда сеанс End?
Сессия заканчивается, если пользователь не запросил или обновлять страницу в заявке на определенный период времени. По умолчанию это 20 минут.
Если вы хотите установить интервал времени ожидания , который короче или длиннее , чем по умолчанию, используйте Timeout свойство.
Приведенный ниже пример задает интервал времени ожидания 5 минут:
<%
Session.Timeout=5
%>
Используйте Abandon метод немедленно завершить сеанс:
<%
Session.Abandon
%>
Note: Основная проблема с сессиями, когда они должны закончить. Мы не знаем, если последний запрос пользователя был последний один или нет. Таким образом , мы не знаем , как долго мы должны держать сессию "alive" . Ожидание слишком долго простоя сеанса использует ресурсы на сервере, но если сессия будет удалена слишком рано, пользователь должен начать все сначала, потому что сервер удалила всю информацию. Поиск подходящего интервала ожидания может быть трудно!
Tip: только хранить небольшое количество данных в переменных сеанса!
Хранить и получать переменные сеанса
Самое главное об объекте Session является то, что вы можете хранить переменные в нем.
В приведенном ниже пример будет установить переменную Session username для "Donald Duck" и Session переменного age до "50" :
<%
Session("username")="Donald Duck"
Session("age")=50
%>
Когда значение сохраняется в переменной сеанса может быть достигнуто с любой страницы в приложении ASP:
Welcome <%Response.Write(Session("username"))%>
Линия выше возвращений: "Welcome Donald Duck" .
Можно также сохранять пользовательские настройки в объекте Session, а затем получить доступ к этому предпочтению выбрать, какую страницу, чтобы вернуться к пользователю.
В приведенном ниже пример задает текстовую версию страницы, если пользователь имеет низкое разрешение экрана:
<%If Session("screenres")="low" Then%>
This is the text version of the page
<%Else%>
This is the multimedia version of the page
<%End If%>
Удаление переменных сеанса
Коллекция Содержание содержит все переменные сессии.
Можно удалить переменную сеанса с помощью метода Remove.
В приведенном ниже примере удаляет переменную сеанса "sale" , если значение переменной сеанса "age" ниже , чем 18:
<%
If Session.Contents("age")<18 then
Session.Contents.Remove("sale")
End If
%>
Для того, чтобы удалить все переменные в сеансе, используйте метод RemoveAll:
<%
Session.Contents.RemoveAll()
%>
Проходной коллекции Содержание
Коллекция Содержание содержит все переменные сессии. Вы можете перебрать коллекции Contents, чтобы увидеть, что в нем хранятся
<%
Session("username")="Donald Duck"
Session("age")=50
dim i
For Each i in Session.Contents
Response.Write(i & "<br>")
Next
%>
Результат:
username
age
Если вы не знаете, количество элементов в коллекции Contents, вы можете использовать свойство 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
%>
Результат:
Session variables: 2
Donald Duck
50
Проходной коллекции StaticObjects
Вы можете перебрать коллекцию StaticObjects, чтобы увидеть значение всех объектов, хранящихся в объекте Session:
<%
dim i
For Each i in Session.StaticObjects
Response.Write(i & "<br>")
Next
%>