Простой пример ASP.
<%@ LANGUAGE="VBSCRIPT" %>
<HTML> <head>
<MEТА HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=windows-1251">
<TITLE>Simple ASP Example</TITLE> </HEAD><BODY BGCOLOR="#FFFFFF">
<%
Dim strGreeting
If Hour(Now) < 12 Then
strGreeting = "Доброе утро!"
ElseIf Hour(Now) > 11 And Hour(Now) < 18 Then
StrGreeting = "Добрый день"
ElseIf Hour(Now) > 17 Then
strGreeting = "Добрый вечер!"
End If
%>
<CENTER><H1><%=strGreeting%> </Н1>
</BODY></HTML>
Обратите внимание на код в листинге, окруженный специальными символами: угловыми скобками и знаками процента (<%...%>). Такие символы означают, что это серверный код, который выполняется перед тем, как страница будет на самом деле послана программе просмотра. Если бы Вы посмотрели в Internet Explorer на результирующий HTML-текст, то увидели бы следующее (в предположении, что сейчас еще не вечер, но уже не утро):
<%@ LANGUAGE="VBSCRIPT" %>
<HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=windows-1251">
<TITLE>Simple ASP Example</TITLE> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <Н1>Добрый день!</Н1> </BODY> </HTML>
В этом-то и состоит суть ASP. Результат исполнения кода — обыкновенный HTML! Эту страницу можно просматривать любой программой просмотра: не только Internet Explorer, но и, например, Netscape Navigator. Иными словами, ASP предоставляет разработчику подлинную платформенную независимость
У представленного кода есть еще несколько особенностей. Обратите внимание на самую верхнюю строчку — она определяет, на каком языке написан сценарий на данной странице:
<%@ LANGUAGE="VBSCRIPT" %>
Скорее всего, Вы будете писать свои сценарии на VBScript, но ASP поддерживает и JavaScript. В отличие от сценариев на клиентской стороне, здесь выбор языка абсолютно не создает проблем совместимости с различными программами просмотра, поскольку весь код исполняется на сервере.
А теперь обратите внимание на ту строку, где и происходит генерация HTML-текста. Здесь для вывода приветствия используется переменная:
<H1><%=strGreeting%> </H1>
Переменная strGreeting заключена в угловые скобки со знаками процента, как и весь остальной серверный код, но, кроме того, ей предшествует знак равенства. Такая конструкция играет важную роль в ASP, указывая, что в данное место HTML-страницы нужно вставить текущее значение этой переменной.
Объекты и компоненты.На самом простом уровне создание ASP-страницы — это ни что иное, как написание серверного кода для получения ожидаемого результата. Но VBScript не является полнофункциональным языком и, как только Вы приступаете к построению более сложных страниц, его выразительных средств начинает не хватать. Так, в VBScript нет встроенных функций доступа к данным; не умеет он и открывать текстовые файлы. Собственно говоря, в VBScript отсутствуют какие-либо встроенные средства доступа к каким бы то ни было внешним источникам данных. Так как же в таком случае при помощи ASP выполняются такие сложные действия, как доступ к данным? Ответ будет таким: нужно дополнить VBScript объектами и компонентами ASP.
ASP-объекты и компоненты — это не что иное, как компоненты ActiveX, подобные обычным DLL ActiveX, с которыми Вы наверняка работали в Microsoft Visual Basic. Различие между объектами и компонентами ASP состоит в том, каким образом они появляются в программе. ASP-объекты — это элементы управления ActiveX, которые в коде на VBScript доступны всегда: их не нужно создавать явно. В число объектов ASP входят Application, Session, Request, Response и Server. А вот ASP-компоненты представляют собой DLL, существующие вне структуры ASP. Эти компоненты могут быть написаны на любом языке, а некоторые полезные ASP-компоненты просто поставляются в комплекте с Visual InterDev. ASP-компоненты нужно явно создавать в коде. ASP поддерживает компоненты Database Access, File Access, Browser Capabilities, Ad Rotator и Content Linking.
Файл GLOBAL.ASA.Одна из главных трудностей разработчика для Интернета, независимо от того, какую технологию он использует, состоит в том, как сложно создать в Интернете настоящее приложение. Взаимодействие программы просмотра и Web-сервера представляет собой по сути лишенную состояния транзакцию, в ходе которой сервер посылает клиенту Web-страницу и затем забывает о его существовании. Когда клиент запрашивает другую Web-страницу, сервер ничего не помнит о предыдущем запросе. Коренная проблема для всех Web-приложений такова: как показать, что это именно приложение?
Определить приложение в среде Microsoft Windows довольно просто. Приложение запускается двойным щелчком значка и завершается, когда в меню File выбран пункт Exit. В промежутке между двумя этими событиями данные хранятся в переменных. Но для Интернет-приложений это не так. Как определить, когда приложение начинается, а когда заканчивается? Можно сказать, что приложение начало работу, если пользователь зашел на узел и просматривает одну из его страниц. Но что если он переходит к другому узлу, а через пять минут возвращается? Приложение все еще активно? А если пользователь отсутствовал час или два?
Проблема определения моментов запуска и завершения приложения оказывает серьезное влияние на правильное управление переменными и последовательностью выполнения. К счастью, ASP предлагает решение. Оно состоит в том, что для определения начала и завершения — как всего приложения, так и отдельных пользовательских сессий — используется специальный файл под названием GLOBAL.ASA. На этот файл возложено реагирование на четыре ключевых события узла: Application_OnStart (запуск приложения), Application_OnEnd (завершение приложения), Session_OnStart (начало сессии) и Session_OnEnd (завершение сессии). В листинге 4.2 приведен типичный файл GLOBAL.ASA.
Файл GLOBAL.ASA.
<SCRIPT LANGUAGE="VBSCRIPT" RUNAT="Server">
' В этот файл можно добавить обработчики событий ASP.
' Для создания обработчиков внесите в файл подпрограмму с именем,
' соответствующим событию, на которое Вы бы хотели среагировать.
'Название события Описание
'SessionOnStart Происходит, когда пользователь в первый раз вы-
' полняет любую страницу Вашего приложения
SessionOnEnd Происходит, когда превышен лимит времени,
' в течение которого пользователь не обращается
' к страницам Вашего приложения, или если имел
' место явный выход
'Application_OnStart Происходит один раз, когда любой
' пользователь впервые выполняет первую страницу
' Вашего приложения
'Application_OnEnd Происходит один раз при остановке Web-сервера
Sub SessionOnStart
End Sub
Sub Session_OnEnd
End Sub
Sub ApplicationOnStart
End Sub
Sub Application On_End
End Sub
</SCRIPT>
Для обозначения разделов сценария GLOBAL.ASA содержит теги <SCRIPT>. Эти теги имеют особый атрибут RUNAT=Server, который означает, что содержащийся в теге код на VBScript должен исполняться на сервере, а не на клиенте. Функционально RUNAT=Server означает то же, что и сочетания угловых скобок и знака процента, используемые для обозначения серверного сценария на Web-страницах. Обработка стандартных событий на сервере записывается в GLOBAL.ASA в стандартном синтаксисе. Например, обработку запуска приложения выполняет следующий фрагмент кода:
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Application_OnStart
' Конкретный код приложения
End Sub </SCRIPT>
Хотя GLOBAL.ASA отмечает начало и завершение приложения при помощи событий, остается неясным, что же все-таки составляет собственно приложение. Одна из рабочих формулировок, предложенная Microsoft, определяет Интернет-приложение как виртуальный каталог со всеми его файлами. Если пользователь запрашивает Web-страницу из виртуального каталога под названием Bookstore, то тем самым он запускает приложение Bookstore, и в GLOBAL.ASA возбуждаются события Application_OnStart и Session_OnStart.
Согласно этому определению с приложением одновременно могут работать несколько программ просмотра. Но событие Application_OnStart происходит только один раз: когда первый пользователь запрашивает Web-страницу из виртуального каталога. Когда затем страницы из этого каталога запрашивают другие пользователи, возбуждается только событие Session_OnStart.
В то время как приложение может относиться к нескольким программам просмотра, обращающимся к одному и тому же множеству Web-страниц, сессия касается какой-то одной программы просмотра, обращающейся к тем же Web-страницам. Для конкретной программы просмотра сессия длится, пока программа продолжает запрашивать страницы виртуального каталога. Если же пользователь не запрашивает Web-страницы (из данного виртуального каталога) на протяжении 20 минут (по умолчанию), сессия завершается, и возбуждается событие Session_OnEnd. Когда в данном виртуальном каталоге завершаются все сессии, возбуждается событие Application_OnEnd.
В качестве примера рассмотрим следующий сценарий. Два пользователя намереваются посетить на Web-узле приложение Magazine. Пользователь 1 оказывается проворнее и быстренько запрашивает Web-страницу DEFAULT.ASP. Тут же возбуждаются события Application_OnStart и Session_OnStart. Буквально пятью минутами позже к приложению обращается пользователь 2. Поскольку пользователь 1 как-то проявлял себя в течение последних 20 минут, приложение Magazine активно. Следовательно, возбуждается только событие Session_OnStart, сигнализируя о начале новой сессии. Кроме того, теперь для завершения приложения необходимо, чтобы завершились обе сессии.
В течение следующих 15 минут пользователь 1 не запрашивает никаких страниц приложения Magazine. Поскольку он не проявлял активности на протяжении 20 минут, ASP приходит к выводу, что пользователь 1 закончил свою работу с приложением, и возбуждает событие Session_OnEnd. Но приложение все еще активно, поскольку в течение последних 20 минут к нему обращался пользователь 2.
Пользователь 2 работает с приложением еще час, то и дело запрашивая новые Web-страницы. Но в конце концов он отключается, а через 20 минут после того, как он покинул узел (точнее, в последний раз запросил Web-страницу приложения), возбуждается событие Session_OnEnd. Поскольку пользователь 2 был последним пользователем данного приложения, оно завершается, и возбуждается событие Application_OnEnd.
Объекты.
В ASP есть несколько встроенных объектов, которые доступны разработчику. Эти объекты помогают управлять многими вещами: от переменных, до передачи форм. Работать с ними легко, они вызываются из кода напрямую без какого-то особого синтаксиса.
Объект Application.Объект Application (приложение) позволяет создавать переменные приложения (application variables) - переменные, доступные всем пользователям данного приложения. Все, кто обращается к Web-страницам данного виртуального каталога, могут совместно использовать любую переменную приложения определенную для этого каталога.
В листинге 4.3 приведен пример программы, которая использует Объект Application. В нем переменная приложения служит для отслеживания времени последнего обращения к страницам приложения.
Листинг 4.3.Объект Application.
<%@ LANGUAGE ="VBScript"%>
<html><head><title>Application Variables</TITLE>
</HEAD><BODY><CENTER>
Эта страница последний раз посещалась: <%=Application("Time")%>
<% Application.Lock
Application("Time")=Now
Application.UnLock %>
</BODY></HTML>
Создание переменной приложения сводится к адресации объекта Application именем новой переменной, которую вы хотите создать. Например, следующий код создает новую переменную приложения с именем Company и присваивает ей значение NewTech.
Application("Company")="NewTech"
Имя может быть произвольным, а переменная может содержать любую информацию, будь то число или текст.
Поскольку такие переменные доступны нескольким пользователям одновременно, вы не сможете гарантировать, что два пользователя не попытаются одновременно присвоить одной и той же переменной разные значения. Для разрешения подобных коллизий объект Application поддерживает методы Lock и UnLock. Метод Lock блокирует весь объект Application, а не только переменную, вы хотите изменить, поэтому сразу же после изменения значения переменной разблокируйте объект:
Application.Lock
Application("Company")="NewTech"
Application.UnLock
Несмотря на то, что переменные приложения пригодны для временного хранения данных, их нельзя использовать для долговременного хранения. Все данные в переменных приложения уничтожаются, когда происходит событие Application_OnEnd. Так что, если вы хотите, чтобы они сохранились после завершения приложения, позаботьтесь о их переносе в файл или базу данных.
Объект Session.Зачастую разработчиков меньше интересуют данные, совместно используемые несколькими пользователями, зато гораздо больше - данные, связанные с конкретным пользователем. ASP поддерживает переменные для индивидуального пользователя при помощи объекта Session (сессия), который позволяет создавать переменные сессии (session variables).
Листинг 4.4 демонстрирует, как определить несколько переменных сессии в файле GLOBAL.ASA. Само по себе их определение так же просто, как и в случае переменных приложения. Все, что нужно сделать - это адресовать объект Session именем переменной, которую вы хотите создать. Основное различие между переменными этих объектов - их области видимости. Переменные сессии предназначаются для одного пользователя и живут, пока пользователь поддерживает сессию. Как только в течение 20 минут (по умолчанию) пользователь не обращается к страницам данного виртуального каталога, данные пропадают.
Дата добавления: 2015-11-04; просмотров: 1452;