Описание объекта Session
Вы можете использовать данный объект для хранения информации о (и для) пользовательских сессий. Переменные, хранящиеся в объекте Session не уничтожаются когда пользователь осуществляет переходы между страницами в приложении, а хранятся на протяжении существования данной сессии.
Вэб сервер автоматически создает объект Session когда страница приложения востребуется пользователем, который до сих пор не имел сессию. Сервер разрушает объект Session когда время "существования" сессии истекает или же ссесия разрушается принудительно.
Основное использование данного объекта это хранение в нем пользовательских "персоналий". К примеру, если пользователь указывает на то, что ему не надо показывать графические изображения вы можете запомнить эту информацию в объекте Session. Для более подробной информации по данному объекту вы можете обратиться к разделу Управление Сессиями в разделе APS-приложений.
Замечание: Данный объект может быть смонтирован только для браузеров, поддерживающих cookies.
Коллекции:
Методы: Свойства: События:Коллекция Session.Contents |
Коллекция Contents содержит все элементы, которые были установлены для сессии без использования тэгов <OBJECT>. Коллекция может быть использована для определения значения специфичных элементов сессии.
Синтакс:
Session.Contents( ключ )
Параметры:
ключЗамечание:
Имя свойства для получения его значения.
Вы можно использовать структуру управления циклом через ключи данной коллекции. Это демонстрируется в следующем примере:<%
Dim sessitem
For each sessitem in Session.Contents
response.write(sessitem & " : " & Session.Contents(sessitem) & "<br>")
Next
%>
Коллекция Session.StaticObjects |
Коллекция StaticObjects содержит все объекты, созданные с помощью тэга <OBJECT>. Данная коллекция может использоваться для того, чтобы определять значения указанных свойств объекта или же через цикл получать все свойства для всех объектов.
Синтакс:
Session.StaticObjects( ключ )
Параметры:
ключЗамечание:
Название свойства, служащее для получения через него его значения.
Вы можете использовать структуру цикла через ключ для доступа к свойствам данной коллекции. Это демонстрирует следующий пример:<%
Dim objprop
For each objprop in Session.StaticObjects
Response.write(objproperty & ":" & Session.StaticObjects(objprop) & "<br>")
Next
%>
Метод Session.Abandon |
Метод Abandon разрушает все объекты запомненные в объекте Session и высвобождаются занятые этим ресурсы. Если вы не вызываете данного метода, то сервер сам "разрушит" эти объекты когда истечет время "жизни" сессии, т.е. тайм аут.
Синтакс:
Session.Abandon
Замечание:
Когда метод Abandon вызывается, текущий объект Session ставится в очередь на удаление, но реально будет уничтожен только после того, как все команды данног скрипта будут обработаны.Это подразумевает, что можете еще воспользоватся обращением к переменным, запомненным в объекте Session в любом месте данной, но никакой другой страницы.Пример:
Следующий пример демонстрирует вывод клиенту переменной Mary. Этот пример работает работает потому, что объект Session будет уничтожен только после обработки всего текущего скрипта.<%
Session.Abandon
Session("MyName") = "Mary"
Response.Write(Session("MyName"))
%>Если вы обращаетесь к переменной MyName на другой странице, то она будет пуста.
Сервер создает новый объект Session когда вы открываете другую страницу вэб сервере (другой скрипт) после прерывания (Abandon) сессии. Вы можете запоминать переменные и объекты в этом новом объекте Session.
Свойство Session.CodePage |
Синтакс:
Session.CodePage ( =кодовая_страница )
Параметры
кодовая_страницаЗамечания:
беззнаковое целое значение, представляющее корректный номер кодовой страницы для системы, в которой запущена ASP-машина.
Кодовая страница это набор символов. Различные языки могут использовать различные кодовые страницы. К примеру ANSI - кодовая страница 1252 используется для "Американского" английского языка и большинства европейских языков. Страница - 1251 - кириллица для русского языва в среде Windows.
Свойство Session.LCID |
Данное свойство определяет идентификатор расположения, который будет использован для вывода клиенту динамического содержимого.
Синтакс:
Session.LCID ( = LCID )
Параметры
LCIDЗамечания:
корректный идентификатор месторасположениея.
Данное свойство указывает идентификатор расположения, который является стандартной мендународной аббривиатурой, которая уникальным образом идентифицирует одно предопределенное системой расположение.
Свойство Session.SessionID |
Свойство SessionID возвращает идентификатор сессии для данного пользователя. Каждая сессия имеет уникальный идентификатор, который создается сервером, когда сессия создается. Данный идентификатор возвращается как данные типа Long.
Синтакс:
Session.SessionID
Замечания:
Вы не должны использовать свойство SessionID для того, чтобы создать значение основного ключа в приложениях баз данных потому, что после рестарта Web-сервера, значения идентификатора сессии могут повторяться. Вместо этого вы можете использовать автоинкриментирующийся счетчик записей, к примеру IDENTITY, поддерживаемый Microsoft® SQL server или в Microsoft® Access - COUNTER.
Свойство Session.TimeOut |
Свойство TimeOut указывает на период времени в минутах, связанный с объектом Session для приложения. Если пользователь не обновить (refresh) или не запросить страницу у сервера в течение указанного периода времени - сессия будет завершена.
Синтакс:
Session.Timeout [ = минут ]
Параметры:
минут
указанное время в минутах, по истечении которого сервер закончит сессию автоматически.
Событие Session.Session_OnEnd |
Событие Session_OnEnd будет вызвано тогда, когда сессия будет прервана принудительно или по таймауту.
Синтакс:
<SCRIPT LANGUAGE=язык_скрипта RUNAT=Server>
Sub Session_OnEnd
. . .
End Sub
</SCRIPT>
Параметры:
язык_скриптаЗамечания:
Указывает на язык программирования, который будет использован для написания данной процедуры. Им может быть любой из поддерживаемых языков программирования - таких как VBScript или JScript. Если более одного события используют один и тотже язык программирования, то они могут быть объеденены между парой тэгов <SCRIPT>.
Вы не можете вызывать метод MapPath из процедуры Session_OnEnd script.
Событие Session.Session_OnStart |
Событие Session_OnStart вызывается в тот момент, когда сервер
создает новую сессию.
Сервер обрабатывает этот скрипт перед тем, как обработать запрашиваемую
страницу. Событие Session_OnStart - самое подходящее место для описания
и присваивания значений переменным, которые должны существовать на протяжении
всей сессии, потому что они будут определены до того, как любая из страниц
(данной сессии) будут обработаны. Все встроенные объекты (Application,
ObjectContext, Request, Response, Server, Session) могут быть доступны
при описании события Session_OnStart
Синтакс:
<SCRIPT LANGUAGE=язык_скрипта RUNAT=Server>
Sub Session_OnStart
. . .
End Sub
</SCRIPT>
Параметры:
язык_скриптаПример:
Указывает на язык программирования, который будет использован для написания данной процедуры. Им может быть любой из поддерживаемых языков программирования - таких как VBScript или JScript. Если более одного события используют один и тотже язык программирования, то они могут быть объеденены между парой тэгов <SCRIPT>.
В процессе создания объекта Session, если событие Session_OnStart содержит вызов методов Redirect или End, то сервер остановит выполнение скрипта и в файле Global.asa и в файле, который породил вызов события Session_OnStart.Замечания:Вы можете вызвать метод Redirect в событии Session_OnStart, к примеру, чтобы пользователь всегда начинал сессию с одной и той же Web-страницы. Когда пользователь запрашивает страницу приложения, сервер создает сессию для данного пользователя и обрабатывает скрипт события Session_OnStart. Вы можете включить скрипт в это событие для проверки того, какая страница открывается пользователем как стартовая и, если не та, которую вы предполагаете, то направлять его на стартовую страницу путем вызова метода Response.Redirect. Эту процедуру демонстрирует следующий пример:
<SCRIPT RUNAT=Server Language=VBScript>
Sub Session_OnStart
' Проверим, с какой страницы пользовател начал посещение страниц
' ASP - приложения.' Заменяем значение, полученное в переменной startPage
' вместе с виртуальным путемstartPage = "/MyApp/StartHere.asp"
currentPage = Request.ServerVariables("SCRIPT_NAME")' Делаем регистро-зависимое сравнение и если они не равны,
' то отправляем пользователя на стартовую страницуif strcomp(currentPage,startPage,1) then
Response.Redirect(startPage)
end if
End Sub
</SCRIPT>Приведенный пример работает только с браузером, который поддерживает cookies. Браузер, не поддерживающий cookie не возвратит SessionID - идентификатор, сервер будет создавать новые сессии каждый раз, когда пользователь будет запрашивать страницы. И для каждого такого запроса сервер будет обрабатывать скрипт события Session_OnStart и перенаправлять пользователя на стартовую страницу. Если вы воспользуетесь примером ниже, то вам необходимо на начальной странице вашего приложения оповестить посетителей о том, что для просмотра вашего сервера необходим cookie-совместимый браузер.
Вы должны учитывать, что любой текст скрипта события Session_OnStart, следующий за методом Redirect выполняться не будет! Для того, что бы учитывать эту особенность вы должны поставить вызов метода Redirect последней командой вашего скрипта события. Это продемонстрировано в примере ниже:<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Session_OnStart
' Скрипт инициализации сесии
' здесь.....
Response.Redirect "http:/server/app/StartHere.asp"
End sub
</SCRIPT>В предыдущем примере метод Redirect вызывается последним в процедуре и следовательно все предшествующие ему команды будут корректно выполнены.