Visual Basic 6. Руководство разработчика

Web-приложение


Мы ознакомились с разработкой Web-страниц, взаимодействующих с сервером. Семейство Web-страниц образует Web-сервер. Что же представляет собой 'Web-приложение? Является ли оно приложением, работающим в

Internet? Ответ -и да, и нет. Это приложение клиент-сервер, работающее в Internet, но в остальном Это - обычное приложение. Web-приложение является Web-узлом, который использует ASP-файлы на сервере. Окно обычного приложения соответствует одной странице Web-приложения. Страницы обмениваются информацией с помощью cookies или объектов Application и Session.

Для эффективного использования объектов Application и Session необходимо понимать, что представляют собой ASA-файлы. Каждое Web-приложение имеет файл GLOBAL.ASA, находящийся в корневом каталоге сервера. Этот файл содержит обработчики событий объектов Application и Session. Web-сервер ищет его, когда запускается Web-приложение или начинается сеанс связи с клиентом. Запускается Web-приложение при первом подключении к серверу. При этом сервер ищет файл GLOBAL.ASA, чтобы выполнить обработчик события Application_OnStart. Если обработчик найден, он выполняется.

Одновременно создается новый сеанс. Сервер просматривает

GLOBAL.ASA в поисках обработчика события Session_OnSrart и выполняет его, если таковой обнаружен. При этом создается новый объект Session, ассоциируемый с подклю­чившимся клиентом. Этот объект существует в течение всего сеанса. Когда сеанс прекращается, сервер выполняет обработчик события Session_OnEnd (который должен находиться в файле GLOBAL.ASA).

Рассмотрим типичный файл GLOBAL.ASA. Приведенный ниже файл содержит код, который поддерживает счетчик количества пользователей, которые посетили стартовую страницу узла (переменная Visitors) и пользователей, которые подключены к узлу в данный момент (переменная Viewers).

Программа 22.10. Типовой файл GLOBAL.ASA

<SCRIPT LANGUAGE=VBScript RUNAT=Server>

Sub Application_OnStart

Application ("Viewers") =0

End Sub

Sub Session_OnStart




Application.Lock

Application ("Viewers")="Application("Viewers")+1

Application ("Visitors")="Application("Visitors")+1

Application.Unlock

Session ("User") "Request.ServerVariables("REMOTE_ADDR")

End Sub

Sub Session_OnEnd

Application.Lock

Application ("Viewers")="Application("Viewers")-1

Application.Unlock

End Sub

</SCRIPT>

При запуске Web- сервер создает новую переменную Viewers. Этой переменной присваивается значение 0, которое увеличивается на 1, когда начинается новый сеанс, и уменьшается на 1, когда сеанс заканчивается. Таким образом, значение этой переменной всегда равно количеству пользователей, которые подключились к серверу.

Значение переменной Visitors

увеличивается на 1, когда начинается новый сеанс. Она предназначена для хранения общего числа пользователей, посетивших Web-узел. Переменная сбрасывается в 0, когда Web-сервер выключается, поэтому ее значение необходимо сохранить в файле с тем, чтобы его можно было восстановить при следующем запуске приложения.                     <>

Обработчик события OnStart каждого сеанса запоминает значение IP-адреса клиента в переменной User. Поскольку областью видимости этой переменной является объект Session, т.е. сеанс с конкретным пользователем, ее можно использовать для идентификации клиента.

Обратите внимание: объект Application должен быть заблокирован во время изменения его переменных. Для объекта Session делать это необязательно, поскольку каждый объект Session имеет собственный набор локальных переменных.

При тестировании файла GLOBAL.ASA необходимо создать ASP-файл для доступа к переменным Application и Session, объявленным в файле GLOBAL.ASA. Ниже приведен текст файла VIEWERS.ASP, который генерирует страницу, показанную на рис. 22.10. Для проверки этого файла запустите утилиту WINIPCFG (выберите команду Run меню Start и напечатайте WINIPCFG), которая отобразит ваш IP-адрес. Передайте этот адрес нескольким знакомым и попросите их подключиться к вашему серверу. Теперь при каждом новом подключении переменные Viewers и Visitors должны увеличиваться на единицу, а при отключении - уменьшаться.





Рис. 22.10. Страница, генерируемая файлом VIEWERS.ASP

В программе 22.11 приведен код страницы

VIEWERS.ASP, который совместно с кодом файла GLOBAL. ASA генерирует страницу, показанную на рис. 22.10.

Страница VI EWERS.ASP может располагаться в любой виртуальной папке на вашем сервере, а файл GLOBAL.ASA – обязательно в корневой папке (обычно это папка C:\INETPUB\WWWROOT). Страница отображает количество пользователей, подключенных к серверу, IP-адрес сеанса и основные свойства броузера клиента.

Программа 22.11. Файл VIEWERS.ASP

<HTML>

<FONT FACE= "Comic Sans MS" SIZE=3>

<H1>Welcome to ASP</H1>

There are <% "Application("Viewers") %> users currently connected to

the server.

<P>

You have connected from the following IP address:

<% ^Session ("User") %>

(<% "Session ("HName") %>)

<P>

We already know that your browser:

<BR>

1.

<% Set Browser = Server. CreateObject ("MSWC.BrowserType") %>

<% If Browser.VBscript Then

Response.Write "Can"

Else

Response.Write "Can't "

End If

%> execute VBScript code.

<BR>

2.

<% If Browser.Frames Then

Response.Write "Can"

Else

Response.Write "Can't"

End If

%> display frames.

<BR>

3.

<% If Browser.Tables Then

Response.Write "Can"

Else

Response. Write "Can't"

End If

%> display tables.

</FONT>

</HTML>

Код файла VIEWERS.ASP считывает значения переменных Visitors, Viewers, User и HName

и отображает их на странице. Кроме того, он демонстрирует использование компонента BrowserType (Тип броузера), который возвращает информацию о броузере клиента. Будет разумно проверять основные характеристики броузера клиента перед пересылкой документа, чтобы убедиться, что он будет отображен надлежащим образом. Почти все броузеры способны отображать панели и таблицы, но это не значит, что они могут выполнять VBScript-код.


Содержание раздела