Архитектура Microsoft Windows для разработчиков

         

Блокировка и разблокировка объекта Application


Все пользователи обращаются к одному и тому же объекту Application, поэтому вполне возможно, что два человека одновременно попытаются модифицировать его. Методы Lock и Unlock объекта Application помогают предотвратить подобную ситуацию. Объект Application нужно блокировать только в момент непосредственного внесения изменений.

После блокировки пользователи не смогут получить доступ к объекту Application при первой необходимости. Чтобы сгладить эти неудобства, постарайтесь минимизировать время действия метода Lock.

Пример Здесь демонстрируется, как методами Lock и Unlock изменить значения счетчика посещений, используемого в Web-приложении:

<%

Application.Lock

Application("NumVisits") = Application("NumVisits") + 1

Application.Unlock

%>

Этот узел посетили

<%= ApplicationC'NumVisits") %> человек.



Буферизация ответа


Чтобы Web-сервер не отправлял HTTP-ответ пользователю, пока не будут обработаны все серверные сценарии активной страницы, применяется буферизация содержимого ответного сообщения.

Примечание Ожидание завершения обработки сервером всех сценариев иногда значительно задерживает ответ. Отправлять ответ пользователю по частям, не дожидаясь конца обработки, позволяет метод Flush объекта Response.

А теперь запустите видеоролик Chap10b.exe, который находится на прилагаемом к книге компакт-диске. Он познакомит Вас с применением буферизации в IIS.



Чтение данных из формы


В этом упражнении Вы создадите активную страницу, которая считывает данные, предоставленные ей HTML-формой, и сохраняет их в объекте Session.

Вы сохраните данные в объекте Session, чтобы их могли использовать другие страницы придуманного нами Web-узла State University.

> Добавление файлов в проект Visual InterDev

Запустите Visual InterDev.



В меню File выберите пункт New.

На вкладке Projects выберите мастер Web Project Wizard.

Назовите проект StateU и выберите для него папку WA\Practice\Ch10\StateU. Нажмите ОК.

Сохраните имя сервера по умолчанию (localhost) и нажмите Next.

Ознакомьтесь с предлагаемыми по умолчанию значениями и нажмите Finish.

В меню Project выберите пункт Add To Project и выберите Files.

В папке WA\Practice\ChlO выберите файлы home.asp, profile.asp и transcript.asp. Нажмите ОК.

> Чтение данных из формы

Дважды щелкните файл profile.asp, чтобы открыть страницу в редакторе Visual InterDev Source Editor.

Измените атрибут ACTION тэга <FORM> так, чтобы он запускал файл profile.asp.

Чтобы изменить этот атрибут, найдите строку кода

<FORM NAME=frmProfile ACTION= METHOD=Post>

и замените ее следующей:

<FORM NAME=frmProfile ACTION=profile.asp METHOD=Post>

Перед тэгом <FORM> добавьте серверный сценарий, приведенный ниже:

<% If Not (IsEmpty(Request("txtID"))) Then

'Запрос поступил от кнопки Submit формы

username = Request("txtName")

id = Request("txtID")

major = Request("Major")

'Установка переменных сеанса

Session("username") = username

Session("id") = id

Session("major") = major

%>

Добро пожаловать, <%=username%>, в наш университет.

<Р>Похоже, Вас интересует <%=major%>.

<% End If %> <Р>

Сохраните изменения в файле profile.asp.

> Тестирование кода profile.asp

Правой кнопкой мыши щелкните файл profile.asp и выберите пункт Preview In Browser.

Введите Ваш идентификатор и имя и выберите область интересов.
Нажмите кнопку Submit.

Что произошло после нажатия кнопки Submit? ответ

> Использование данных сеанса в других файлах

Дважды щелкните profile.asp для возврата в окно кода Visual InterDev.

Найдите в файле profile.asp следующую строку кода

<FORM NAME=frmProfile ACTION=profile.asp METHOD=Post>

и замените ее на приведенную ниже (она вызывает новую активную страницу):

<FORM NAME=frmProfile ACTION=transcript.asp METHOD=Post>

Сохраните файл profile.asp.

Дважды щелкните файл transcript.asp, чтобы открыть его окне кода Visual InterDev.

Найдите следующую строку кода:

For Student ID </font> </td>

Измените ее так:

For Student ID <%=Session("id")%> </font>

Сохраните изменения в файле transcript.asp.

Щелкните правой кнопкой файл profile.asp и выберите Preview In Browser.

На панели инструментов нажмите Refresh View.

Введите идентификатор и свое имя, выберите область интересов и нажмите кнопку Submit.

На Web-странице должен появиться текст "For Student ID «номер »".

Объект Application Объект Application обеспечивает доступ к информации всем пользователям Web-приложения. Web-приложение запускается, когда пользователь, обратившийся к нему первым, запрашивает .asp-файл из виртуального корневого каталога Вашего Web-приложения. Программа заканчивает свою работу при отключении Web-сервера. Вы можете создавать и хранить значения в объекте Application точно так же, как в объекте Session. Различие в том, что информация из объекта Application доступна все время, начиная с момента, когда первый пользователь обращается к активной странице, и заканчивая отключением Web-сервера. Например, если Вы хотите сообщить что-то всем, работающим с Вашим Web-приложением, Вы можете создать административную страницу, где администратор введет информацию, адресованную всем пользователям. С этой страницы данные попадут в объект Application, после чего ее можно использовать во всех активных страницах. В результате все пользователи получат одну и ту же административную информацию из одного и того же источника. Синтаксис Для методов объекта Application применяется следующий синтаксис: Application.метод

Пример Здесь показано, как добавить информацию, полученную с административной страницы, в Web-приложение: <% Application( "ТемаЛекции") = Request. Form( "лекция")

Application("аудитория") = Request.Fоrm("аудитория")

Пример Здесь демонстрируется, как воспользоваться информацией из предыдущего примера:

Не пропустите сегодняшнюю лекцию в аудитории <%= Application( "аудитория") %>,

на тему <%= Аррliсаtiоп("ТемаЛекции") %>


Хранение пользовательской информации


Занятие 5. Хранение пользовательской информации

(Продолжительность занятия 40 минут)

Активные страницы позволяют Web-приложению хранить состояние, то есть информацию, связанную с конкретным пользователем. Web-приложение поддерживает:

состояние приложения — эти данные доступны всем пользователям Web-приложения.

состояние сеанса — эти сведения доступны только пользователю данного сеанса.

Состояния на пользовательских компьютерах поддерживаются с помощью агентов (cookies), которым и посвящено это занятие.

Изучив материал этого занятия, Вы сможете:

создавать агенты и пользоваться ими;

сохранять информацию о сеансе с помощью объекта Session;

сохранять сведения о приложении средствами объекта Application;

создавать сценарии обработки событий в активной странице Global.asa.



Использование инструментального элемента в активной странице


В этом упражнении Вы воспользуетесь инструментальным элементом Data

Connection в активной серверной странице.

> Использование инструментального элемента

Создайте в Visual InterDev новый Web-проект и присвойте ему имя Employees.

Сохраните проект в файле WA\Practice\ChlO\employees.

Согласитесь с именем сервера по умолчанию — localhost — и нажмите кнопку Next.

Согласитесь с именем по умолчанию — Employees — и нажмите кнопку Finish.

Прежде всего, с проектом нужно связать имя существующего источника данных. Щелкните правой кнопкой проект в окне File View и выберите пункт Add Data Connection.

Откройте вкладку Machine Data Source, выберите nwind и нажмите ОК. Просмотрите информацию о соединении (его имя — DataConn).

Закройте окно Data Connection Properties.

Добавьте новую активную страницу с именем default.asp

Удалите HTML-комментарий.

Щелкните правой кнопкой мыши область между тэгами BODY и выберите пункт Insert HTML Using Wizard.

Выберите пункт Data Range Wizard и нажмите ОК.

Выберите Show only, отметьте, что одновременно выводить нужно две записи, и нажмите Next.

Оставьте предлагаемое по умолчанию имя диапазона данных и нажмите Finish.

Появится диалоговое окно Properties. В поле Data Connection выберите DataConn.

В поле Command Text наберите Select * From Employees.

Нажмите Copy Fields.

Добавьте поля EmployeeID, FirstName и LastName в список Fields to Copy и нажмите ОК.

VBScript-сценарий для отображения этих полей скопирован в буфер обмена, откуда его можно вставить в нужное место страницы.

Закройте окно Properties.

Закройте окно инструментального элемента.

Поместите точку вставки перед вторым экземпляром приведенной ниже стро ки кода:

<!-METADATA TYPE="DesignerControl" startspan

Щелкните страницу правой кнопкой мыши и выберите в меню пункт Paste.

> Проверка приложения

В окне File View щелкните правой кнопкой файл default.asp и выберите пункт Preview in Browser.

Нажмите кнопку Yes, если появится предложение сохранить изменения.

Протестируйте кнопки на странице.

Закройте Microsoft Visual InterDev.



Использование объекта Request


Каждый набор объекта Request содержит переменные, которые Вы можете использовать для извлечения информации из HTTP-запроса.

Примечание Полный список предопределенных переменных среды приведен в документе Active Server Page Roadmap, который устанавливается вместе с AS Р.

Пример Здесь переменная SERVER_NAME набора ServerVariables используется для получения имени Web-сервера:

Request.ServerVariables("SERVER_NAME")

Значения этих переменных помогут Вам создать динамические HTML-страницы для пользователей Вашего приложения.

Пример Здесь имя Web-сервера используется для создания гиперссылки на расположенную на нем Web-страницу:

<А HREF="http://<%= Request.ServerVariables("SERVER_NAME")%>

/MyPage.asp">Link to MyPage</A>

К переменным можно обращаться и напрямую, не указывая имя набора.

Пример Вот пример непосредственного обращения к серверной переменной:

Request("SERVER_NAME")

Если Вы обращаетесь к переменной напрямую, Web-сервер просматривает в ее поисках наборы в следующем порядке:

QueryString;

Form;

Cookies;

ClientCertificate;

ServerVariables.

Если несколько наборов содержат переменные с одинаковым именем, используется первый из них.



Использование тэга <OBJECT> в файле Global.asa


Средствами тэга <OBJECT> в файле Global.asa можно создать компонент, работающий на Web-сервере.

Чтобы использовать тэг <OBJECT> в файле Global.asa, присвойте атрибуту RUNAT значение Server, а атрибуту SCOPE — значение Application или Session.

Чтобы задать компонент, укажите его зарегистрированное имя (PROGID) или идентификатор класса (CLASSID).

Пример Здесь с помощью PROGID на время сеанса создается экземпляр компонента Advertisement Rotator:

<OBJECT RUNAT=Server SCOPE=Session ID=MyAd PROGID="MSWC.Adrotator">

</OBJECT>

Пример Здесь с помощью CLASSID на время работы приложения создается экземпляр компонента Advertisement Rotator:

<OBJECT RUNAT=Server SCOPE=Application ID=MyAd

CLASSID="Clsid:00000293-0000-0010-8000-OOAA006D2EA4"></OBJECT>

Когда Вы применяете тэг <OBJECT> для создания экземпляра компонента на время сеанса или на период работы приложения, переменная, связанная с компонентом, располагается в области имен сеанса или приложения соответственно. Для доступа к экземплярам компонентов Вам не придется пользоваться объектами Session или Application.

Пример Вот как открыть экземпляр компонента Advertisement Rotator, объявленный в коде предыдущего примера:

<%= MyAd.GetAdvertisement("addata.txt") %>



Изучив материал этого занятия, Вы сможете:


перечислить инструментальные элементы в составе Microsoft Visual InterDev;

применять инструментальные элементы в активных серверных страницах.

Инструментальные элементы в составе Visual InterDev

Инструментальными элементами пользуются точно так же, как и другими управляющими элементами ActiveX, — выбрав пункт Insert ActiveX Control из меню Insert или контекстного меню. Однако когда Вы закрываете редактор объектов инструментального элемента, в Ваш файл записывается не сам элемент, а соответствующий серверный сценарий и/или HTML-код.

Вот какие инструментальные элементы входят в состав Microsoft Visual InterDev.

Элемент

Описание

Data Command

Создает серверный сценарий, выполняющий команду (например, запрос к базе данных)

Data Range Header

Генерирует серверный сценарий, который создает объект ADO Recordset при помощи запроса или выбранной Вами хранимой процедуры. Код сценария включает цикл по записям набора данных (для кодирования последующих операций с записями) и может быть сконфигурирован для постраничного отображения записей

Data Range Footer

Применяется в сочетании с элементом Data Range Header; предназначен для выполнения завершающей части цикла по записям набора

Include

Позволяет вставить в активную страницу содержимое файла до начала выполнения страницы

Data Connection

Содержит набор информации для доступа к конкретной базе данных. Эта подборка включает имя источника данных (DSN) и регистрационную информацию. Связи с данными хранятся в проекте и активизируются, когда пользователь выполняет операцию, требующую фактического обращения к базе данных

Как и все управляющие элементы ActiveX, инструментальные элементы необходимо установить на тот компьютер, где они должны работать. В Visual InterDev встроенные элементы устанавливаются автоматически, а любые другие (скажем, изготовленные сторонними производителями) — с помощью стандартной программы установки, командного файла или программы Regsvr32.exe.

Вы можете создать собственные инструментальные элементы средствами Visual Basic или воспользоваться имеющимися на компьютере-клиенте.

Примечание Подробную информацию о разработке инструментальных элементов Вы найдете в документации Design-Time Controls SDK по адресу www.microsoft.com/ workshop/prog/sdk/dtctrl/.



Метод CreateObject


Первое, что Вам придется сделать для использования серверного компонента

ActiveX, — создать ссылку на него. Далее можно вызывать методы компонента,

а также задавать и считывать его свойства.

Метод CreateObject применяют и для создания ссылки на класс Java. Элементы управления ActiveX работают на компьютере пользователя, тогда

как серверные компоненты ActiveX расположены и выполняются на Web-сервере.

Пример Здесь создается ссылка на компонент Browser Capabilities.

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

Серверные компоненты ActiveX позволяют инкапсулировать и повторно использовать функции общего назначения, например обращение к базе данных или запись информации в текстовый файл на Web-сервере.

Вы можете обращаться к компонентам, установленным на Web-сервере, через ASP-файл, содержащий метод CreateObject объекта Server.



Метод Write


Метод Write добавляет текст в HTTP-ответ. Синтаксис Синтаксис метода Write таков:

Response.Write вариант

Здесь вариант — это любой тип данных (в том числе символы, строки и целые числа), который поддерживается выбранным по умолчанию языком создания

сценариев.

Вариант не может содержать комбинацию символов %>, так как она обозна-чает конец сценария. Если это необходимо, воспользуйтесь escape-последователь-ностью %\>, которую Web-сервер преобразует при обработке сценария.

Примечание Если в качестве языка создания сценариев по умолчанию Вы при-меняете VBScript, вариант не может содержать более 1 022 символов.

Пример Здесь метод Write используется в цикле для вывода значений каждого стандартного элемента управления HTML формы, присланной в HTTP-запросе:

<%For Each Item In Request.Form

Response.Write Item

Next %>

Пример Здесь тэг HTML добавляется на Web-страницу. Строка, возвращаемая методом Write, не может содержать символы %> в тэге HTML, поэтому вместо них используется escape-последовательность %\>:

<% Response.Write "<TABLE WIDTH = 100%\>" %>

Метод Redirect

Метод Redirect применяется для переадресации на другую Web-страницу.

В качестве аргумента метода Redirect объекта Response задается указатель ресурса новой страницы.

Синтаксис Для метода Redirect применяется следующий синтаксис:

Response.Redirect URL

Здесь URL — абсолютный или относительный указатель ресурса, куда перенаправляется программа просмотра.

Примечание Применив метод Redirect после отправки информации пользователю, Вы получите сообщение об ошибке.

Пример Здесь метод Redirect используется для отображения страницы в разных разрешениях в зависимости от параметров экрана компьютера-клиента:

<%

If Request.ServerVariables("HTTP_UA_PIXELS") = "640х480" Then

Response.Redirect "lo_res.htm"

Else

Response.Redirect "hi_res.htm"

End If



Набор Form


Набор Form объекта Request извлекает информацию из тела HTTP-запроса.

Примечание Если форма использует метод GET, в набор QueryString будет включена вся информация, переданная в форме.

Набор Form содержит значения каждого стандартного элемента управления HTML, у которого есть атрибут NAME. Когда пользователь отправляет заполненную форму методом Post, средствами набора Form можно считать введенные им значения.

Пример Пусть пользователь заполняет и отправляет такую HTML-форму:

<FORM ACTION="submit.asp" METHOD=POST> Name: <INPUT TYPE=TEXT NAME="name"xP> Favorite Color: <SELECT MULTIPLE NAME="color">

<OPTION>Red

<OPTION>Green

<OPTION>Blue

</SELECT><P>

<INPUT TYPE=SUBMIT NAME="cmdSubmit" VALUE="Submit">

</FORM>

Чтобы извлечь переданную информацию, воспользуйтесь следующим сценарием в файле submit.asp:

Request.Form("name")

Request.Form("color")

Кроме того, Вы можете считать переданную пользователем информацию в цикле по всем элементам формы.

Пример Здесь выполняется цикл по всем стандартным элементам управления HTML в HTTP-запросе:

<% For Each Item in Request.Form

'Отображение элемента

Next %>

Если элемент управления формы имеет несколько значений, (как, например, в случае списка), для извлечения отдельных значений применяются индексы переменных набора Form.

Пример Здесь показано, как получить доступ к первому и второму значениям переменной «color», выбранным из многозначного списка:

Request.Form("color")(0)

Request.Form("color")(1)



Набор QueryString


Набор QueryString объекта Request предназначен для извлечения информации из заголовка HTTP-запроса.

Когда пользователь отправляет заполненную форму или добавляет параметры к URL-запросу, Вы можете средствами набора QueryString получить переданную информацию.

Из запроса считываются параметры, стоящие после знака вопроса (рис. 10.2).

Рис. 10.2 HTTP-запрос, содержащий передаваемую информацию

Примечание Набор QueryString — это синтаксически разобранная версия переменной QUERY_STRING набора ServerVariables. Набор QueryString позволяет Вам обращаться к параметрам QUERY STRING по именам.

Чтобы извлечь всю информацию, переданную пользователем, просмотрите в цикле все значения, содержащиеся в строке запроса.

Пример Этот пример выполняет цикл считывания значений из HTTP-запроса:

<%For Each Item In Request.QueryString

'Отображение элемента

Next %>

Если под одним именем передается несколько значений, например в форме списка, отдельные значения можно получить посредством индекса переменной набора QueryString.

Пример Здесь показано, как получить доступ к первому и второму значениям переменной «sport» в наборе QueryString:

Request,QueryString("sport")(0)

Request.QueryString("sport")(1)



Наборы объекта Request


Объект Request содержит пять наборов, предназначенных для извлечения информации из HTTP-запроса.

Набор Описание
QueryString Значения переменных в строке запроса HTTP, в частности значения, следующие за знаком вопроса (?) в HTTP-запросе
Form Значения элементов форм, размещенных в теле HTTP-запроса методом Post формы
Cookies Значения агентов HTTP-запроса
ClientCertificate Значения полей сертификата HTTP-запроса
ServerVariables Значения предопределенных переменных среды Web-сервера



Обработка ошибок в режиме буферизации


Если во время обработки активной страницы в режиме буферизации возникла ошибка, примените метод Redirect объекта Response, предварительно очистив буфер методом Clear.

Пример Чтобы при возникновении ошибки очистить буфер и направить пользователя на страницу, сообщающую об ошибке, введите следующий код:

Response.Buffer = True

On Error Resume Next

'Код, который может вызвать фатальную ошибку,

'например, невозможность подключиться к данным If Err.number <> 0 Then

Response.Clear

Response.Redirect "error.him"

End If



Обработка событий в файле Global. asa


Global.asa — это первый файл, который обрабатывает Web-сервер, когда получает первый после запуска пользовательский запрос .asp-файла или когда .asp-файл запрашивает пользователь, о котором нет информации.

В состав Web-приложения может входить только один файл Global.asa. Он хранится в виртуальном корневом каталоге приложения. В файле Global.asa указывается следующая информация:

события стадии запуска и/или завершения приложения;

события стадии начала и/или завершения сеанса;

тэги <OBJECT>, создающие компоненты при работе приложения или во время сеанса.

Если Вы сконструировали Web-приложение с помощью мастера, Microsoft Visual InterDev создает файл Global, asa с шаблонами процедур событии и комментариями по использованию этого файла.



Отображение результатов


Чтобы получить результат работы сценария в формате HTML, используйте синтаксис <%= %>.

Пример Здесь отображается текущее время:

Текущее время: <%= Time %>.

Например, в 8:34 утра пользователь получит следующее сообщение:

Текущее время: 8:34 AM.



Помещение значений в форму


Средствами активных страниц можно разрабатывать формы, размещающие значения в ASP-файле. Для этого нужно разделить ASP-файл на две части: первая выводит форму, а вторая — хранит заполненную форму.

Чтобы выяснить, заполнена ли форма, проверьте, содержат ли элементы управления HTML какие-нибудь значения. Если нет — пользователь еще не заполнял форму, и поэтому Вам нужно отобразить ее пустой бланк.

Пример Здесь выводится пустая форма:

<% If IsEmpty (Request("txtName")) Then

'Вывести форму

Else

'Форма была отправлена

End If %>



Применение агентов


Агенты (cookies) — это механизм, позволяющий сохранять рабочее состояние в файле (обычно он называется cookies) на компьютере пользователя.

Примечание Хотя основные программы просмотра Web поддерживают применение агентов, есть две проблемы.

Агенты не являются стандартным средством HTTP или других спецификаций, поэтому их не всегда поддерживают все существующие программы просмотра.

Так как агенты позволяют Web-серверу создавать и редактировать файл на компьютере пользователя (что создает потенциальную угрозу безопасности), то и Netscape Navigator, и Microsoft Internet Explorer позволяют пользователям отключать эту функцию.

Агент похож на жетон для конкретной страницы, который Web-сервер посылает пользователю. Тот возвращает агента серверу при каждом последующем обращении к данной странице (или набору страниц).

Агенты позволяют Web-приложению связывать информацию с пользователем. Вы можете устанавливать и получать значения агентов через набор Cookies.

Когда Web-сервер возвращает пользователю HTTP-ответ, последний может содержать агент со списком ресурсов, для которых он действителен.

Агент передается пользователю посредством заголовка Set-Cookie в НТТР-, ответе. Все последующие HTTP-запросы пользователя, попадающие в диапазон действия агента, сопровождаются текущим значением агента.



Реализация серверных решений


Глава 10. Реализация серверных решений

 

Прежде всего

Для изучения занятий этой главы необходимы:

знание материала главы 2, «Концепции построения сетей»;

знание материала главы 8, «Технологии ActiveX»;

Microsoft Active Server Pages;

Microsoft Visual InterDev;

звуковая карта и колонки или наушники для прослушивания мультимедиа-файлов;

следующие мультимедиа-файлы с компакт-диска:

Chap10a.exe;

Chap10b.exe.

Занятие 1. Знакомство с ASP

Занятие 2. Разработка активных страниц сервера

Занятие 3. Чтение НТТР-запроса

Занятие 4. Создание HTTP-ответа

Занятие 5. Хранение пользовательской информации

Занятие 6. Серверные компоненты ActiveX

Занятие 7. Инструментальные элементы ActiveX

Закрепление материала



Серверные сценарии расширяют функциональные возможности


Серверные сценарии расширяют функциональные возможности Web-страниц при отображении в клиентской программе просмотра, но сами работают на Web-сервере. Страницы, содержащие серверные сценарии, называются активными страницами сервера (Active Server Pages, ASP). ASP-файл — это текстовый файл, который может содержать любые комбинации текста и тэгов HTML, а также серверные и клиентские сценарии. ASP поддерживает VBScript и JavaScript автоматически, а любые другие языки написания сценариев — при наличии соответствующей интерпретирующей системы.

Активные страницы выполняются специальными компонентами


Активные страницы выполняются специальными компонентами Web-сервера. Сценарии активной страницы обрабатываются, когда программа просмотра запрашивает с Web-сервера ASP-файл. Web-сервер вызывает специальный компонент, который выполняет команды сценария и возвращает созданную HTML-страницу программе просмотра.
Сценарий серверной части ограничивают парные тэги <% и %> или тэг <SCRIPT>. При обработке активной страницы Web-сервер выполняет любой код внутри тэгов <% и %>. Чтобы вставить серверный сценарий в тэг HTML <SCRIPT>, нужно присвоить атрибуту RUNAT значение Server.
ASP снабжены встроенными объектами, которые позволяют расширить функциональные возможности Web-приложений. Используя их, Вы сохраните данные о конкретном пользователе, получите информацию, посылаемую пользователем серверу, отправите сообщение адресату и сможете манипулировать свойствами и методами серверных компонентов.

Объект Request позволяет извлечь значения,


Объект Request позволяет извлечь значения, содержащиеся в HTTP-запросе. Объект Request обеспечивает доступ ко всей информации, передаваемой Web-серверу, а также содержит пять наборов для извлечения данных конкретного типа. Набор QueryString выделяет информацию из заголовка HTTP-запроса, набор Form — из тела HTTP-запроса, а набор Cookies извлекает значения агентов, переданных в HTTP-запросе. Набор ClientCertificate содержит значения полей сертификата запроса, а набор ServerVariables представляет значения предопределенных переменных среды Web-сервера.

какую информацию запрашивает пользователь, Вы


Выяснив, какую информацию запрашивает пользователь, Вы можете создать ответ средствами объекта Response. Свойства и методы объекта Response позволяют оперировать информацией, передаваемой клиенту. Чаще всего применяются следующие свойства этого объекта: Buffer, Expires и ExpiresAbsolute. Наиболее популярные методы объекта Response — Clear, End, Flush, Redirect и Write.
Метод Write добавляет текст в HTTP-ответ, а метод Redirect обеспечивает переход к другому ресурсу. Свойство Buffer позволяет предотвратить отправку Web-сервером HTTP-ответа пользователю до завершения обработки всех серверных сценариев данной активной страницы.

и Application. Агенты хранят информацию


Активные страницы позволяют хранить в Web-приложениях состояние — информацию, связанную с конкретным посетителем узла, — с помощью агентов и объектов Session и Application. Агенты хранят информацию на компьютере пользователя, а программа просмотра посылает агент серверу при каждом следующем посещении этой страницы (или группы страниц).
Объект Session отличается от агента тем, что хранит информацию о состоянии на сервере. В объекте Session указана информация для конкретного пользователя (или о нем). Web-сервер автоматически создает объект Session в начале сеанса и уничтожает его по завершении сеанса. Объект Session имеет два события:
Session_OnStart и Session_OnEnd.
Как и объект Session, объект Application предназначен для хранения информации. Разница между ними в том, что информация объекта Application доступна все время, начиная с момента первого запроса активной страницы и заканчивая отключением Web-сервера. У объекта Application есть два события: Application_OnStart и Application_OnEnd. В файле Global. asa их можно снабдить сценариями.

компоненты позволяют отвечать на запросы


ActiveX- компоненты позволяют отвечать на запросы пользователей с помощью объекта Server и его методов. Первое, что надо сделать при применении серверных компонентов ActiveX, — создать ссылку на компонент посредством метода CreateObject. Далее Вы можете вызывать методы компонента, а также задавать и считывать его свойства.
В состав Microsoft Internet Information Server включены базовые компоненты (Advertisement Rotator, Browser Capabilities, Database Access, Content Linking и File Access), позволяющие упростить разработку Web-приложении. В дополнение к ним Вы можете создавать собственные серверные компоненты ActiveX, применяя такие средства разработки, как Microsoft Visual Basic. Когда Вы используете серверный компонент IIS Database Access, для доступа к информации в БД применяются объекты данных ActiveX.

Инструментальные элементы ActiveX позволяют генерировать


Инструментальные элементы ActiveX позволяют генерировать HTML-код, а также серверные и клиентские сценарии на языках Microsoft Visual Basic и JavaScript. Вы можете использовать существующие инструментальные элементы ActiveX и создать свои. В состав Microsoft Visual InterDev включены готовые инструментальные элементы, которые позволят расширить функциональные возможности Ваших Web-приложений.

Считывание агентов


Программа просмотра, запрашивая страницы Вашего Web-приложения, сопровождает запрос соответствующим агентом (если, конечно, он был создан). Чтобы считать значение агента, используйте набор Cookies объекта Request.

Пример Если HTTP-запрос содержит агент со значением city=Redmond, в результате работы кода этого примера будет получено значение Redmond:

<%= Request.Cookies("city") %>

Объект Session

Объект Session содержит информацию о конкретном сеансе работы. Переменные, сохраненные в объекте Session, не уничтожаются, когда пользователь перемещается по страницам Web-приложения — напротив, они существуют на протяжении всего сеанса. Объект Session отличается от агента тем, что его поддерживает сервер, а не компьютер пользователя.

Web-сервер автоматически создает объект Session при подключении пользователя и уничтожает его по окончании сеанса.

Сеанс начинается, когда пользователь запрашивает файл активной серверной страницы из виртуального корня Вашего Web-приложения. В начале Web-приложение создает идентификатор SessionID и передает программе просмотра HTTP-ответ для создания соответствующего агента. Хотя агент SessionID передается программе просмотра, он хранится не на жестком диске компьютера пользователя, а в памяти.

Если пользователь отказался принять агент SessionID (см. примечание в разделе «Применение агентов»), объект Session для этого пользователя не поддерживается.

По умолчанию сеанс длится 20 минут. Вы можете изменить это значение, модифицировав следующий параметр реестра:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Se rvices\W3SVC\ASP\Pa rameters\SessionTimeout



Синтаксис объекта Response


Синтаксис Для свойств и методов объекта Response применяется следующий синтаксис:

Response.свойство метод

Пример Здесь свойству Expires объекта Response присваивается значение 0 — содержимое ответа, возвращенного пользователю, будет считаться устаревшим сразу же после отправки:

<% Response.Expires = 0 %>

Если пользователь возвратится на эту Web-страницу, Web-сервер обновит ее содержимое перед отображением.



Синтаксис объекта Session


Объект Session имеет два свойства и один метод.

Свойство SessionID идентифицирует сеанс пользователя, а свойство Timeout задает значение тайм-аута сеанса.

Метод Abandon уничтожает объект Session и освобождает его ресурсы.

Синтаксис Для установки свойств и применения метода объекта Session используется следующий синтаксис:

Session.свойство\метод

Пример Этот код создает и сохраняет псевдоним пользователя и данные о его месте жительства:

<% Session("nickname") = "Ненси"

Session("hometown") = "Редмонд %>

Пример Здесь показано, как воспользоваться информацией, сохраненной в объекте Session:

Привет, <%= SessionC'nickname") %>.<BR>

Как погода в <%= Session( "home-town") %>?<BR>



События объекта Application


Объект Application имеет два события — Application_OnStart и Application_OnEnd. В

файле Global.asa их можно снабдить сценариями.

Любой сценарий, связанный с событием Application_OnStart, реализуется при запуске приложения. Аналогично, сценарии события Application_OnEnd выполняются при завершении приложения.

Пример Здесь демонстрируется код для события Application_OnStart в файл Global.asa:

<SCRIPT LANGUAGE=VBScript RUNAT=Server>

Sub Application_OnStart

'Код Вашего сценария

End Sub

</SCRIPT>



События объекта Session


Подобно объекту Application, объект Session снабжен событиями Session_OnStartH Session_OnEnd. Сценарии события Session_OnStart запускаются, когда пользователь, еще не открывший сеанс, запрашивает у Вашего приложения ASP-файл. Все сценарии события Session_OnEnd выполняются по окончании сеанса.

Пример Здесь событие Session_OnStart используется для принудительной переадресации пользователя на страницу регистрации на Вашем узле независимо оттого, какую именно активную серверную страницу он запросил у Вашего Web-приложения:

' При открытии сеанса отправить пользователя на страницу регистрации

Sub Session_OnStart

If SessionC'username") = "" Then

' Сохранить название страницы, которую хотел посетить пользователь

Session("startpage") =

Request.ServerVariables("SCRIPT_NAME")

' Отправить пользователя на страницу регистрации

Response.Redirect "profile.htm"

End If

End Sub



Создание агентов


Значения агентов, которых Ваш Web-сервер отправляет пользователю, задаются с помощью набора Cookies объекта Response. Если агент не существует, метод Response.Cookies создаст его на компьютере пользователя.

Пример Здесь создается агент со значением city=Redmond:

<% Response.Cookies("city")="Redmond" %>

Если Вы хотите, чтобы агент относился ко всем страницам Вашего Web-приложения, присвойте атрибуту Path агента значение «/». После этого любой запрос страницы Вашего Web-приложения будет сопровождаться отправкой агента.

Пример Вот агент, относящийся ко всем страницам Web-приложения:

Response.Cookies("city").Path = "/"

Вы вправе устанавливать и другие атрибуты агента, например срок его действия.

Пример Здесь задается срок окончания действия агента:

Response.Cookies("Type").Expires = "July 31, 1997"



Свойства и методы


Объект Response снабжен свойствами и методами, предназначенными для отправки информации пользователю. Некоторые свойства объекта Response вкратце описаны в приведенной ниже таблице.

Свойство Описание
Buffer Указывает, буферизован ли ответ
Expires Указывает, как долго страница может храниться в кэше программы просмотра
ExpiresAbsolute Указывает дату и время, когда страница должна быть удалена из кэша программы просмотра (т.е. когда она будет считаться устаревшей)

В следующей таблице перечислены некоторые методы объекта Response.

Метод Описание
Clear Очищает любые буферизованные ответы
End Останавливает обработку Web-страницы и возвращает информацию, полученную на этот момент
Flush Немедленно отправляет буферизованный ответ
Redirect Посылает пользователю сообщение о переадресовке, которое направит программу просмотра по другому URL
Write Записывает значение переменной в виде строки в текущий HTTP-ответ

Объект Response также содержит набор Cookies, который Вы можете использовать для установки значения агента.



Свойство ScriptTimeout


По умолчанию серверному сценарию предоставляется 90 секунд на выполнение. Это ограничение не относится к серверным сценариям, запустившим серверный компонент ActiveX, — такой сценарий не прекращает свою работу до окончания выполнения компонента.

Если для реализации сценария требуется больше времени, чем установлено по умолчанию в реестре Windows, измените значение тайм-аута активной страницы с помощью свойства ScriptTimeout. Это, в частности, обеспечит нормальное выполнение больших сценариев.

Пример Здесь свойство ScriptTimeout объекта Server используется для увеличения времени выполнения сценария:

<% Server.ScriptTimeout = 180 'SECONDS %>

Базовые компоненты

Чтобы упростить создание Web-приложений, в состав IIS включены пять серверных компонентов ActiveX, называемых также базовыми. В дополнение к ним Вы можете, используя различные инструментальные средства (например, Microsoft Visual Basic), создавать собственные серверные компоненты ActiveX.

Базовый компонент

Описание

Advertisement Rotator

Обновляет рекламные объявления на Web-странице в соответствии с заданным расписанием

Browser Capabilities

Определяет возможности, тип и версию программы просмотра пользователя

Database Access

Использует объекты данных ActiveX (ActiveX Data Objects, ADO) для обращения к информации, хранящейся в БД или другом табличном источнике данных

Content Linking

Создает оглавление Web-узла и последовательно связывает страницы, как в обычной книге

File Access

С помощью объекта FileSystemObject извлекает и изменяет информацию, хранящуюся в текстовом файле на сервере

Когда Вы используете серверный компонент IIS Database Access, обращение к информации, хранящейся в БД, выполняет ADO.

Использование ADO в активных страницах

В этом упражнении Вы с помощью объекта доступа к данным подключитесь из активной страницы к источнику данных Northwind.

> Создание нового проекта

Запустите Microsoft Visual InterDev.

В меню File выберите пункт New.

Запустите мастер Web Project Wizard.


В поле Project Name введите ADO.

В поле Location введите WA\Practice\ChlO\ado и нажмите ОК.

Введите localhost в качестве имени сервера и нажмите Next.

Нажмите Finish.

> Создание начальной страницы

В меню File укажите пункт New и затем — вкладку Files.

Выберите HTML Page.

В качестве имени файла введите default.htm.

Удалите комментарий Insert HTML here.

Правой кнопкой мыши щелкните default.htm в окне File View и выберите пуни Open With.

Выберите в списке пункт Microsoft Frontpage Editor и нажмите Open.

В меню Insert выберите Form-Field, One-line Text Box.

Правой кнопкой мыши щелкните текстовое поле и выберите в меню коман ду Form Field Properties.

В поле Name введите txtID и нажмите кнопку ОК.

Поместите точку вставки слева от текстового поля и наберите текст Введите ID сотрудника:.

Поместите на форму кнопку, расположив ее на новой строке под текстовым полем.

Правой кнопкой мыши щелкните форму и выберите в меню команду Form Properties.

Щелкните Settings и в окне действий наберите employee.asp.

Нажмите OK, чтобы вернуться в окно редактора Frontpage Editor.

Сохраните эту страницу и закройте Frontpage Editor.

Нажмите кнопку Yes для перезагрузки страницы в Visual InterDev.

Посмотрите получившуюся страницу default.htm в Visual InterDev.

> Создание страницы с информацией о сотрудниках

В меню File Visual InterDev выберите пункт New.

На вкладке Files щелкните кнопку Active Server Page.

В поле имени введите employee.asp и нажмите ОК.

Замените комментарий <!— Insert HTML Here —> приведенным ниже сценарием ASP, который создает набор записей ADO: <%

empid = request.form("txtID")

set rs = createobject("ADODB.Recordset")

SQL = "Select * From Employees Where EmployeeID = " & empid

rs.Open SQL, "DSN=nwind", adOpenKeyset

%>

В окне FileView щелкните правой кнопкой мыши файл employee.asp и выберите в меню команду Release Working Copy, после чего нажмите кнопку Yes, чтобы сохранить изменения.



Перед тем как переименовать файл, обязательно поместите локальную копию файла на сервер.

Правой кнопкой мыши щелкните файл employee.asp и выберите пункт Rename.

Измените расширение файла на htm.

Теперь имя файла — employee.htm.

Нажмите ОК.

Правой кнопкой мыши щелкните файл employee.htm и выберите в меню пункт Open With.

Выберите в списке пункт Microsoft Frontpage Editor и нажмите кнопку Open.

Поместите точку вставки после значка HTML-разметки.

Добавьте строку Информация о сотрудниках и выровняйте ее по центру.

В меню Insert выберите горизонтальную разделительную линию.

Добавьте две новых строки: Имя сотрудника: и Фамилия сотрудника:.

Сохраните страницу и закройте Frontpage Editor.

Откройте страницу employee.htm в окне кода Visual InterDev.

Добавьте VBScript-ссылку на поля FirstName и LastName набора записей HTML-страницы. Код будет выглядеть примерно так:

<р>Имя сотрудника: <%= rs("firstname")%></p>

<р>Фамилия сотрудника: <%= rs("lastname")%></р>""

Сохраните изменения.

Поместите рабочую копию employee.htm на сервер, а затем переименуйте файл в employee.asp.

> Проверка страниц

Правой кнопкой мыши щелкните файл default.htm и выберите в меню команду Preview in Browser.

Введите в качестве идентификатора сотрудника 1 и нажмите кнопку Submit. На экране должны появиться имя и фамилия сотрудника с указанным идентификатором — Nancy Davolio.

Закройте Internet Explorer и Visual InterDev.


Тэг <SCRIPT>


Серверный сценарий включают в активную страницу с помощью тэга HTML <SCRIPT>, присвоив атрибуту RUNAT значение Server. В раздел <SCRIPT> разрешается добавление функций и подпрограмм серверной части для последующего вызова из других сценариев этой страницы.

Пример Здесь серверный сценарий применяется для определения времени суток:

<SCRIPT LANGUAGE=VBScript RUNAT=SERVER>

Function ComputeAMPM()

If Hour(Now) < 12 Then

ComputeAMPM = "утро"

Else

ComputeAMPM = "день"

End If

End Function

</SCRIPT>

Воспользовавшись методом Response.Write, Вы отобразите результат работы сценария из раздела <SCRIPT>.

Пример Здесь отображается сообщение, вид которого зависит от времени суток:

<SCRIPT LANGUAGE=VBScript RUNAT=SERVER>

Response.Write "Сейчас " & ComputeAMPM() & "."

</SCRIPT>

Например, в 6 часов утра пользователь увидит сообщение:

Сейчас утро.

Любой код из раздела <SCRIPT>, находящийся вне процедур, выполняется при обработке ASP-файла Web-сервером. Код процедур не задействован до тех пор, пока процедура не будет явно вызвана серверным сценарием.

Встроенные объекты

Встроенные объекты архитектуры ASP позволят Вам расширить функциональные возможности Вашего Web-приложения.

Их средствами Вы обеспечите совместное использование информации Вашего приложения, сохраните данные о конкретном пользователе, получите сведения, передаваемые серверу, отправите сообщение адресату и сможете манипулировать свойствами и методами серверных компонентов. Встроенные объекты и их назначение перечислены в приведенной ниже таблице.

Объект

Описание

Request

Получает информацию, переданную пользователем Web-серверу при HTTP-запросе

Response

Управляет передачей пользователю информации в ответном HTTP-сообщении

Session

Сохраняет сведения о сеансе конкретного пользователя

Application

Обеспечивает совместное использование данных всеми клиентами Web-приложения

Server

Предоставляет доступ к ресурсам Web-сервера

<
  Создание активной страницы Хотя для создания ASP можно использовать любой текстовый редактор, Microsoft Visual InterDev отличается удобной графической средой. Чтобы насладиться его преимуществами, сначала создайте проект для Ваших Web-страниц. В приведенном ниже упражнении мы используем готовый Web-проект, поскольку для тестирования активных страниц необходим Web-сервер, который поддерживает ASP. > Создание нового проекта

Запустите Microsoft Visual InterDev.

В меню File укажите пункт New.

На вкладке Projects выберите Web Project Wizard.

В поле Project name: введите sample и нажмите ОК.

Мастер Web Project Wizard запросит имя сервера; убедитесь, что в поле имени введено слово localhost. Нажмите Next.

Оставьте в поле имени Web-узла слово sample и нажмите Finish.

> Создание новой активной серверной страницы

В меню File выберите пункт New.

Откройте вкладку Files и щелкните Active Server Page.

Удостоверьтесь, что в поле Add to project выбран проект Sample.

В поле File name введите MyPage. Папка проекта должна быть указана в поле Location.

Нажмите ОК.

Появится шаблон активной серверной страницы.

Первая строка сценария задает язык сценариев серверной страницы. Например, если Вы выбрали VBScript, будет добавлена следующая строка сценария:

<%@ LANGUAGE="VBSCRIPT" %>

Замените строку <— Insert HTML Here —> следующим кодом VBScript:

<% If Hour(Now) < 12 Then %>

Доброе утро!

<% Else %>

Добрый день!

<% End If %>

В окне Workspace щелкните правой кнопкой файл mypage.asp и выберите пункт Preview in Browser.

Щелкните Yes в ответ на предложение Visual InterDev сохранить файл.

Теперь в окне программы просмотра Вы увидите приветствие, подходящее для конкретной части суток.

> Смена языка создания сценариев по умолчанию

В меню Tools выберите пункт Options.

Откройте вкладку HTML.

В области Default Languages выберите язык создания сценариев по умолчанию (VBScript или JavaScript) для мастера создания сценариев InterDev и для активных страниц.


Тэги


<% %>

При обработке активной страницы Web-сервер выполняет любой код, обрамленный тэгами <% и %>. Эти ограничители используются в Web-странице для отделения кода сценария от команд HTML.

Как правило, HTML-код на активных страницах содержится вперемешку с серверными сценариями. Последние же как раз и определяют, какая информация будет возвращена пользователю.

Пример В этом примере процедуры Now и Hour, ограниченные тэгами <% и %>, применяются для определения текущего времени. В зависимости от полученного результата выбирается подходящее приветствие — «Доброе утро» или «Добрый день»:

<% if Hour(Now) < 12 then %>

Доброе утро.

<% else %>

Добрый день.

<% end if %>

Например, в 8 часов утра пользователю будет передана строка:

Доброе утро.

Пример Здесь средствами сценария VBScript выясняется значение переменной в ASP-файле:

<%Dim MyVar

MyVar = 3

Select Case MyVar

Case 1

%><ВОLD>Значение равно единице. </BOLD><%

Case 2

%><ВОLD>Значение равно двум.</ВОLD><%

End Select%>



Установка свойства Buffer


Чтобы включить режим буферизации, присвойте свойству Buffer значение True. Свойство Buffer нельзя устанавливать после того, как сервер отправил ответ пользователю, поэтому лучше всего задавать его в первой строке ASP-файла.

Пример Здесь свойству Buffer присваивается значение True:

Response.Buffer = Tru



Знакомство с ASP


Занятие 1. Знакомство с ASP

(Продолжительность занятия 10 минут)

Сценарии серверной части выполняются на Web-сервере, а не на компьютере-клиенте. Web-сервер обрабатывает или создает HTML-страницы, возвращаемые программе просмотра. И это главное отличие от традиционных моделей — теперь содержимое HTML создается динамически в процессе предоставления страниц клиентам. Любые элементы управления или компоненты, которые Вы используете в серверном сценарии, должны находиться и запускаться на Web-сервере.

Страницы, содержащие сценарий серверной части, называются активными страницами сервера (Active Server Pages, ASP) и хранятся в файлах с расширением .asp. Активные страницы расширяют функциональные возможности Web-страницы с помощью языка написания сценариев. ASP по умолчанию поддерживает языки VBScript и JScript, однако при наличии соответствующего интерпретатора подойдет и любой другой язык создания сценариев. На этом занятии Вы узнаете, как пользоваться ASP, а также познакомитесь с примером использования ASP — Web-узлом Adventure Works.

Изучив материал этого занятия, Вы сможете:

объяснить, как выполняется сценарий на сервере;

перечмслить элементы активной страницы;

перечислить языки, поддерживаемые активными страницами;

объяснить, как работают активные страницы сервера.

Элементы активной страницы сервера

Текстовый файл активной страницы может содержать следующие элементы:

текст;

тэги HTML;

сценарий серверной части;

сценарий клиентской части.

Когда пользователь просматривает ASP-файл, Web-сервер выполняет все серверные сценарии, содержащиеся в нем и возвращает программе просмотра результат в формате HTML. Активная серверная страница может включать клиентские сценарии для выполнения в программе просмотра после передачи страницы на компьютер пользователя.

Примечание Для активных страниц нет отладочной среды.

Web-узел Adventure Works

Когда Вы установили на свой сервер Microsoft ASP, Вы стали обладателем примера Web-узла, построенного средствами ASP — Adventure Works.

В этом упражнении Вы подключитесь к Web-узлу Adventure Works и познакомитесь с кодом, управляющим Web-приложением.
Подробности работы этого кода мы обсудим далее в этой главе. > Подключение к Web-узлу Adventure Works
Если Microsoft Personal Web Server не выполняется, запустите его из Панели управления.
Запустите Internet Explorer и откройте узел http://localhost/advworks
Чтобы посмотреть ASP-КОД страницы, нажмите кнопку View ASP Source в левом поле. Найдите следующий код:
<% If IsEmpty(Session("CustomerFirstName")) Then %>
Welcome!!! <%
Else %>
Welcome back <%=Session("CustomerFirstName")%>!!!
<% End If %>
</B>
You are visitor #<B><%=FormatNumber(Session("VisitorID"),0)%></B>
Поскольку это Ваш первый визит на этот узел, Вы увидите только число его посетителей.
> Оформление пробного заказа и обновление ASP-узла с учетом Ваших данных
Нажмите кнопку Back программы просмотра, чтобы вернуться на узел Adventure Web.
Нажмите кнопку Geared Up и выберите Parkas.
Щелкните изображение куртки, чтобы выбрать ее, и нажмите кнопку Click to Pay.
Введите данные о себе (для этого упражнения Вы можете их выдумать) и нажмите Enter Customer Info.
Проверьте свой заказ и введите номер кредитной карты (например, 11112222) с произвольным сроком действия.
Закончив, щелкните кнопку Order Now!.
Нажмите кнопку Home, чтобы перейти на главную страничку. Активная страница запомнила введенную информацию, поэтому теперь Вас приветствуют по имени.
Исследуйте Web-узел Adventure Works и нажимайте кнопку View ASP Source каждый раз, когда Вам захочется узнать, как он устроен.

Разработка активных страниц сервера


Занятие 2. Разработка активных страниц сервера

(Продолжительность занятия 20 минут)

Активные страницы сервера — это комбинация серверных сценариев (на языках VBScript или JavaScript) и тэгов HTML. Файлы активных страниц обрабатываются на Web-сервере.

Используя сценарии серверной части, Вы можете выполнять множество задач, например получать информацию от пользователя, запрашивать данные из БД или строить динамические HTML-страницы для передачи на компьютер-клиент. На этом занятии Вы познакомитесь с архитектурой и синтаксисом активных страниц и узнаете, как их создавать.

Изучив материал этого занятия, Вы сможете:

описать, как обрабатывается активная страница;

размещать VBScript-сценарии в активной странице;

перечислить и описать объекты ASP;

создать активную страницу.

Архитектура активных страниц

Обрабатывает активные страницы расширение Web-сервера, которое поставляется с Microsoft Visual InterDev и Microsoft Internet Information Server (IIS). Чтобы Вы могли тестировать созданные активные страницы, это расширение нужно установить на Вашем Web-сервере. Последний считывает и обрабатывает ASP с помощью выделенного процесса, поэтому файлы активных страниц должны находиться в виртуальной папке с разрешением Execute.

ASP-сценарий выполняется, когда программа просмотра запрашивает с Web-сервера файл с расширением .asp. Web-сервер вызывает ASP-компонент, который запускает сценарий и выполняет его команды, а затем возвращает программе просмотра созданную HTML-страницу (рис. 10.1).

А теперь самое время запустить видеоролик Chap10a.exe с прилагаемого к книге компакт-диска. Он поможет Вам разобраться в том, как обрабатываются активные страницы.

Статическая HTML-страница, открытая пользователем в программе просмотра, всегда отображает одну и ту же информацию; в отличие от статических страниц, ASP — динамические и интерактивные. Каждый раз когда пользователь запрашивает ASP-файл, выполняется сценарий и пользователь получает только что созданный HTML-документ.

Рис. 10.1 Обработка активной страницы сервера

Синтаксис активных страниц

Сценарий серверной части обрамляется парными тэгами <% и %> или заключается в тэг <SCRIPT>. В последнем случае нужно задать значение атрибута RUNAT, который указывает, где следует выполнять код сценария — на сервере или на клиенте. По умолчанию выполнение сценария, обозначенного тэгом <SCRIPT>, откладывается до передачи страницы клиентской программе просмотра.



Создание HTTP-ответа


Занятие 4. Создание HTTP-ответа

(Продолжительность занятия 15 минут)

Определив, что именно пользователь запрашивает в HTTP-запросе, Вы можете вернуть ему необходимую информацию с помощью свойств и методов объекта Response. На этом занятии Вы узнаете, как пользоваться объектом Response для создания ответа на HTTP-запрос.

Изучив материал этого занятия, Вы сможете:

перечислить и описать общие свойства и методы объекта Response;

используя метод Write объекта Response, добавлять текст в HTTP-ответ;

использовать метод Redirect объекта Response для перехода на другую Web-страницу;

буферизировать ответ

Объект Response

Объект Response позволяет манипулировать информацией, передаваемой пользователю в виде HTTP-ответа.



Серверные компоненты ActiveX


Занятие 6. Серверные компоненты ActiveX

(Продолжительность занятия 30 минут)

Серверные компоненты ActiveX применяются на Web-сервере для реагирования на запросы пользователей. Эти компоненты позволяют расширить функциональные возможности активных страниц, предоставляя доступ к различным ресурсам сервера (например, к базе данных). Сейчас Вы узнаете, как применять объект Server для ответа на запросы пользователей, а также познакомитесь с пятью базовыми серверными компонентами ActiveX в составе Microsoft Internet Information Server (IIS).

Изучив материал этого занятия, Вы сможете:

рассказать, как применять свойство ScriptTimeout и метод CreateObject объекта Server для ответа на запрос пользователя;

описать пять базовых серверных компонентов в составе Microsoft IIS.

Объект Server

Объект Server обращается к компонентам ActiveX посредством метода CreateObject. Этот объект также позволяет задать время ожидания для серверных сценариев.

Синтаксис Для объекта Server применяется следующий синтаксис:

Server.свойство¦метод

Чтобы создать экземпляр серверного компонента ActiveX, воспользуйтесь методом CreateObject, указав зарегистрированное имя компонента. Свойство ScriptTimeout позволяет установить или определить максимальное время работы серверного сценария: по его окончании сценарий завершается и сообщает пользователю об ошибке.



Инструментальные элементы ActiveX


Занятие 7. Инструментальные элементы ActiveX

(Продолжительность занятия 15 минут)

Инструментальные элементы ActiveX (ActiveX design-time controls) позволяют генерировать НТМL-код, а также серверные и клиентские сценарии на языках VBScript и JavaScript. На этом занятии Вы познакомитесь с инструментальными элементами, входящими в состав Microsoft Visual InterDev, и научитесь пользоваться ими.