![]() ![]() |
![]() |
Выберите
интересующий вас раздел
|
![]() |
Описание объекта Application
Вы можете использовать данный метод для того, чтобы сделать доступной информацию между всеми пользователями данного приложения. Основанное на ASP приложение определено как все .asp-файлы в виртуальной директории и всех ее поддиректориях. Из-за того, что объект Application может быть доступен ("зашарен") более чем одному пользователю, то в нем предусотренно два метода - Lock и Unlock (заблокировать и разблокировать) для того, чтобы быть уверенным, что сразу несколько пользователей не смогут попытаться изменять свойства одновременно.
Синтаксис:
Application . методКоллекции: Методы: События: Скрипты, которым могут предшествовать события должны быть описаны в файле global.asa. Для получения более полной информации по этому файлу смотрите описание Global.asa
Замечания:
Вы можете хранить свои значения в коллекциях данного объекта: Application.Contents и Application.staticObjects. Информация, сохраненная в коллекции Application доступны через приложение. Следующий скрипт демонстрирует запись двух типов переменных.
<%
Application("greeting") = "Добро пожаловать на
наш вэб-сервер!"
Application("num") = 25
%>
Для каждой из этих переменных предполагается их членство в коллекции Application Contents.
Вы можете также связать компонент с переменной. Если вы связываете сомпонент к переменной с помощью объекта Server.CreateObject, то переменная будет членом коллекции Application.Contents. Если переменная связана с тэгом <OBJECT>, то переменная будет членом коллекции Application StaticObjects.
Если вы связываете конкретный компонент с переменной в коллекцией Application Contents Collection и используете Visual Basic Scripting Edition как основной язык написания скриптов, вы должны использовать ключевое слово Set. Это иллюстрированно следующим примером.
<% Set Application("Obj1") = Server.CreateObject("MyComponent") %>
Вы можете также определить методы и свойства компонента MyComponent следующим скриптом
<% Application("Obj1").MyObjMethod %>
или путем создания локальной копии объекта и использования его следующим образом:
<%
Set MyLocalObj1 = Application("Obj1")
MyLocalObj1.MyObjMethod
%>
Другой способ, чтобы создать объект с использованием тэга <OBJECT> в файле Global.asa. Для более полной информации смотрите описание Global.asa.
Вы не можете хранить встроенные объекты в объекте Application. Для примера, каждый из следующих строк будет вызывать ошибку:
<%
Set Application("var1") = Session
Set Application("var2") = Request
Set Application("var3") = Response
Set Application("var4") = Server
Set Application("var5") = Application
Set Application("var6") = ObjectContext
%>
Если вы храните массив в объекте Application то вы не должны пытаться обращаться к элементам, хранящимся в массиве напрямую. К примеру, следующий скрипт не работает
<% Application("StoredArray") (3) = "new value" %>
Настоятельно рекомендуется чтобы, если вы храните массив в объекте Application, вы получили копию массива прежде чем считывать или изменять любые его элементы. Кода вы сделали такую копию вы можете изменить или считать любые его элементы и измененную локальную копию сохранить обратно в Application. Данный прием мы продемонстрируем в следующем примере:
---file1.asp---
<%
'Создаем и инициируем массив
dim MyArray()
Redim MyArray(5)
MyArray(0) = "привет!"
MyArray(1) = "какая-либо другая строка"
'Запоминание массива в объекте Application
Application.Lock
Application("StoredArray") = MyArray
Application.Unlock
Response.Redirect("file2.asp")
%>
---file2.asp---
<%
'Получение массива из объекта Application
'и модицикация второго элемента
LocalArray = Application("StoredArray")
LocalArray(1) = " Люди!"
'вывод строки "привет! Люди!"
Response.Write(LocalArray(0)&LocalArray(1))
'Перезапись массива в объект Application
'Данное действие перепишет значения в StoredArray
на новые
Application.Lock
Application("StoredArray") = LocalArray
Application.Unlock
%>
Следующий пример использует переменную NumVisits для хранения числа посещений, когда страница была получена клиентом. Метод Lock вызывается тогда, когда есть возможность того, что к переменной NumVisits может возникнуть паралелльное обращение. Вызывая метод Unlock вы разрешаете обращаться к данной переменной (объекту Application) другим пользователям.
<%
Application.Lock
Application("NumVisits") = Application("NumVisits")
+ 1
Application.Unlock
%>
Вы <%= Application("NumVisits") %> посетитель этой страницы!
Коллекция Application.Contents |
Коллекция Contents группирует все элементы, которые были добавлены приложением через команды скрипта. Вы можете использовать коллекцию Contents чтобы получить список элементов, которые были получены приложением или чтобы указать какой из элементов будет использован в данной операции.
Синтакс:
Application.Contents( ключ )
Параметры:
ключЗамечание:
Указанное имя элемента для его получения.
Коллекция Application.Contents содержит те элементы которые были определены на уровне приложения без использования тэга <OBJECTS>. Это касается обеих объектов - созданных с использованием Server.CreateObject и с использованием скалярных переменных установленных через определение Application. В следующем скрипте, к примеру, оба и MyVar и MyObj будут членами коллекции Application.Contents.<%
Application("MyVar") = "Привет!"
Set Application("MyObj") = Server.CreateObject("MyComponent")
%>Коллекция Application.Contents поддерживает циклы типа For...Each и For...Next.
Следующие два примера иллюстрируют каждый из вышеуказанных методов циклов использования Application.Contents.<%
For Each Key in Application.Contents
response.write ("key")
Next Key
%>
<%
For i = 1 to Application.Contents.Count
response.write("key")
Next Key
%>
Коллекция Application.StaticObjects |
Коллекция StaticObjects содержит все объекты, созданные с использованием тэга <OBJECT> и объекта Application. Вы можете использовать коллекцию для того, чтобы определить значения указанных свойств для объекта или создать цикл по коллекции и получить все свойства для всех статических объектов.
Синтакс:
Application.StaticObject( ключ )
Параметры:
ключЗамечание:
Указанное имя элемент для обращения к нему.
Вы можете использовать управление циклом чтобы перебирать ключи в коллекции StaticObjects. Это продемонстрированно следующим примером:<%
Dim ObjPropFor Each ObjProp in Application.StaticObjects
response.write(ObjProperty & " : " & Application.StaticObjects(ObjProp) & "<br>")
Метод Application.Lock |
Метод Lock блокирует для других клиентов переменные, хранимые в объекте Application от изменеия. Потому, как только один клиент может в данный момент времени получить доступ к переменным объекта. Если вы не вызываете метод Unlock после обработики переменных, то сервер сам разблокирует данный объект, когда истечет время (timeout) работы скрипта .asp.
Синтакс:
Application.Lock
Пример:
<%В предыдущем примере метод Lock предохраняет переменную NumVisits объекта Application от доступа к нему одновременно нескольких клиентов. Если бы приложение не было бы заблокированно, то два клиента попробывали-бы одновременно увеличить значение переменной NumVisits.
Application.Lock
Application("NumVisits") = Application("NumVisits") + 1
Application.Unlock
%>Вы <% = Application("NumVisits") %> посетитель данной страницы.
Метод Application.Unlock |
Метод Unlock разблокирует заблокированные ранее переменные c помощью метода Lock.
Синтакс:
Application.Unlock
Пример:
<%В предыдущем примере метод Unlock разблокирует переменную NumVisits объекта Application, заблокированную ранее объектом Lock от доступа к нему одновременно нескольких клиентов.
Application.Lock
Application("NumVisits") = Application("NumVisits") + 1
Application.Unlock
%>Вы <% = Application("NumVisits") %> посетитель данной страницы.
Событие Application_OnEnd |
Данное событие активизируется, когда приложение закрывается, а точнее после события Session_OnEnd. Только встроеные объекты Application и Server доступны.
Синтакс:
<SCRIPT LANGUAGE=язык_программирования RUNAT=Server>
Sub Application_OnEnd
. . .
End Sub
</SCRIPT>
Параметры
язык_программированияЗамечания
параметр, который указывает на то, каким языком будет написан скрипт. Например JavaScript или VisualBasic.
Вы не можете вызывать метод MapPath (объект Server) в подпрограмме Application_OnEnd.
Событие Application_OnStart |
Данное событие активизируется, когда активируется новая сессия, такая, как, к примеру, Session_OnStart. Только встроенные объекты Application и Server доступны. Обращение к объектам Session, Request или Response в подпрограмме Application_OnStart вызовет ошибку.
Синтакс:
<SCRIPT LANGUAGE=язык_программирования RUNAT=Server>
Sub Application_OnStart
. . .
End Sub
</SCRIPT>
Параметры
язык_программирования
параметр, который указывает на то, каким языком будет написан скрипт. Например JavaScript или VisualBasic.
Выберите
интересующий вас раздел
|