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

         

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



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

Обрабатывает активные страницы расширение 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-документ.



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



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

Чтобы упростить создание 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.



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



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

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

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



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



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

Чтобы 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 «номер »".



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



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

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

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

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



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


Глава 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 Закрепление материала





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



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


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

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



Инструментальные элементы в составе 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/.



Использование 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.



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



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

В этом упражнении Вы воспользуетесь инструментальным элементом 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

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

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



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



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

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

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

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



Метод CreateObject



Метод CreateObject

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

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

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

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

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



Метод Redirect



Метод Redirect

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

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

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

Response.Redirect URL

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

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



Метод Write



Метод Write

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

Response.Write вариант

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

сценариев.

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

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



Набор Form



Набор Form

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

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

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



Набор QueryString



Набор QueryString

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

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

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



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



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

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

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



Объект Application



Объект Application

Объект Application обеспечивает доступ к информации всем пользователям Web-приложения.

Web-приложение запускается, когда пользователь, обратившийся к нему первым, запрашивает .asp-файл из виртуального корневого каталога Вашего Web-приложения. Программа заканчивает свою работу при отключении Web-сервера.

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

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

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

Application.метод

Объект Request



Объект Request

Объект Request обеспечивает доступ ко всей информации, содержащейся в HTTP-запросе.



Объект Response



Объект Response

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



Объект Server



Объект Server

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

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

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

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



Объект Session



Объект 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



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



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




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



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

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



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



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

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

В состав Web-приложения может входить только один файл Global.asa. Он хранится в виртуальном корневом каталоге приложения. В файле Global.asa указывается следующая информация: события стадии запуска и/или завершения приложения; события стадии начала и/или завершения сеанса; тэги <OBJECT>, создающие компоненты при работе приложения или во время сеанса.

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



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



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

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



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



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

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

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



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


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

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

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

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

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

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



В этом примере процедуры Now



Пример 1

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

Здесь переменная SERVER_NAME набора ServerVariables



Пример 1

Здесь переменная SERVER_NAME набора ServerVariables используется для получения имени Web-сервера: Request.ServerVariables("SERVER_NAME")
Значения этих переменных помогут Вам создать динамические HTML-страницы для пользователей Вашего приложения.

Здесь свойству Expires объекта Response



Пример 1

Здесь свойству Expires объекта Response присваивается значение 0 — содержимое ответа, возвращенного пользователю, будет считаться устаревшим сразу же после отправки: <% Response.Expires = 0 %>
Если пользователь возвратится на эту Web-страницу, Web-сервер обновит ее содержимое перед отображением.

Здесь создается агент со значением



Пример 1

Здесь создается агент со значением city=Redmond: <% Response.Cookies("city")="Redmond" %>
Если Вы хотите, чтобы агент относился ко всем страницам Вашего Web-приложения, присвойте атрибуту Path агента значение «/». После этого любой запрос страницы Вашего Web-приложения будет сопровождаться отправкой агента.

Здесь создается ссылка на компонент



Пример 1

Здесь создается ссылка на компонент Browser Capabilities. <% Set bc = Server. CreateObject("MSWC. Browser Type") %>
Серверные компоненты ActiveX позволяют инкапсулировать и повторно использовать функции общего назначения, например обращение к базе данных или запись информации в текстовый файл на Web-сервере. Вы можете обращаться к компонентам, установленным на Web-сервере, через ASP-файл, содержащий метод CreateObject объекта Server.

Здесь средствами сценария VBScript выясняется



Пример 2

Здесь средствами сценария VBScript выясняется значение переменной в ASP-файле: <%Dim MyVar
MyVar = 3
Select Case MyVar
Case 1
%><ВОLD>Значение равно единице. </BOLD><%
Case 2
%><ВОLD>Значение равно двум.</ВОLD><%
End Select%>


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



Пример 2

Здесь имя Web- сервера используется для создания гиперссылки на расположенную на нем Web-страницу: <А HREF="http://<%= Request.ServerVariables("SERVER_NAME")%>
/MyPage.asp">Link to MyPage</A>
К переменным можно обращаться и напрямую, не указывая имя набора.

в цикле для вывода значений



Пример 2

Здесь метод Write используется в цикле для вывода значений каждого стандартного элемента управления HTML формы, присланной в HTTP-запросе: <%For Each Item In Request.Form
Response.Write Item
Next %>


Вот агент, относящийся ко всем



Пример 2

Вот агент, относящийся ко всем страницам Web-приложения: Response.Cookies("city").Path = "/"
Вы вправе устанавливать и другие атрибуты агента, например срок его действия.

Здесь свойство ScriptTimeout объекта Server



Пример 2

Здесь свойство ScriptTimeout объекта Server используется для увеличения времени выполнения сценария: <% Server.ScriptTimeout = 180 'SECONDS %>


пользователь получит следующее



Пример 3

Здесь отображается текущее время: Текущее время: <%= Time %>.
Например, в 8: 34 утра пользователь получит следующее сообщение:
Текущее время: 8:34 AM.


Если несколько наборов содержат переменные



Пример 3

Вот пример непосредственного обращения к серверной переменной: Request("SERVER_NAME")
Если Вы обращаетесь к переменной напрямую, Web-сервер просматривает в ее поисках наборы в следующем порядке: QueryString; Form; Cookies; ClientCertificate; ServerVariables. Если несколько наборов содержат переменные с одинаковым именем, используется первый из них.

Здесь тэг HTML добавляется на



Пример 3

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


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



Пример 3

Здесь задается срок окончания действия агента: Response.Cookies("Type").Expires = "July 31, 1997"


Здесь серверный сценарий применяется для



Пример 4

Здесь серверный сценарий применяется для определения времени суток: <SCRIPT LANGUAGE=VBScript RUNAT=SERVER>
Function ComputeAMPM()
If Hour(Now) < 12 Then
ComputeAMPM = "утро"
Else
ComputeAMPM = "день"
End If
End Function
</SCRIPT>
Воспользовавшись методом Response.Write, Вы отобразите результат работы сценария из раздела <SCRIPT>.

Этот пример выполняет цикл считывания



Пример 4

Этот пример выполняет цикл считывания значений из HTTP-запроса: <%For Each Item In Request.QueryString
'Отображение элемента
Next %>
Если под одним именем передается несколько значений, например в форме списка, отдельные значения можно получить посредством индекса переменной набора QueryString.

Здесь метод Redirect используется для



Пример 4

Здесь метод Redirect используется для отображения страницы в разных разрешениях в зависимости от параметров экрана компьютера-клиента: <%
If Request.ServerVariables("HTTP_UA_PIXELS") = "640х480" Then
Response.Redirect "lo_res.htm"
Else
Response.Redirect "hi_res.htm"
End If


запрос содержит агент со значением



Пример 4

Если HTTP- запрос содержит агент со значением city=Redmond, в результате работы кода этого примера будет получено значение Redmond: <%= Request.Cookies("city") %>


Здесь отображается сообщение, вид которого



Пример 5

Здесь отображается сообщение, вид которого зависит от времени суток: <SCRIPT LANGUAGE=VBScript RUNAT=SERVER>
Response.Write "Сейчас " & ComputeAMPM() & "."
</SCRIPT>
Например, в 6 часов утра пользователь увидит сообщение:
Сейчас утро.
Любой код из раздела <SCRIPT>, находящийся вне процедур, выполняется при обработке ASP-файла Web-сервером. Код процедур не задействован до тех пор, пока процедура не будет явно вызвана серверным сценарием.

Здесь показано, как получить доступ



Пример 5

Здесь показано, как получить доступ к первому и второму значениям переменной «sport» в наборе QueryString: Request,QueryString("sport")(0)
Request.QueryString("sport")(1)


Здесь выводится пустая



Пример 5

Здесь выводится пустая форма: <% If IsEmpty (Request("txtName")) Then
'Вывести форму
Else
'Форма была отправлена
End If %>


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



Пример 5

Этот код создает и сохраняет псевдоним пользователя и данные о его месте жительства: <% Session("nickname") = "Ненси"
Session("hometown") = "Редмонд %>


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



Пример 6

Пусть пользователь заполняет и отправляет такую 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")
Кроме того, Вы можете считать переданную пользователем информацию в цикле по всем элементам формы.

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



Пример 6

Здесь свойству Buffer присваивается значение True: Response.Buffer = Tru


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



Пример 6

Здесь показано, как воспользоваться информацией, сохраненной в объекте Session: Привет, <%= SessionC'nickname") %>.<BR>
Как погода в <%= Session( "home-town") %>?<BR>


Здесь выполняется цикл по всем



Пример 7

Здесь выполняется цикл по всем стандартным элементам управления HTML в HTTP-запросе: <% For Each Item in Request.Form
'Отображение элемента
Next %>
Если элемент управления формы имеет несколько значений, (как, например, в случае списка), для извлечения отдельных значений применяются индексы переменных набора Form.

Чтобы при возникновении ошибки очистить



Пример 7

Чтобы при возникновении ошибки очистить буфер и направить пользователя на страницу, сообщающую об ошибке, введите следующий код: Response.Buffer = True
On Error Resume Next
'Код, который может вызвать фатальную ошибку,
'например, невозможность подключиться к данным If Err.number <> 0 Then
Response.Clear
Response.Redirect "error.him"
End If


Здесь показано, как добавить информацию,



Пример 7

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

Здесь показано, как получить доступ



Пример 8

Здесь показано, как получить доступ к первому и второму значениям переменной «color», выбранным из многозначного списка: Request.Form("color")(0) Request.Form("color")(1)

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



Пример 8

Здесь демонстрируется, как воспользоваться информацией из предыдущего примера: Не пропустите сегодняшнюю лекцию в аудитории <%= Application( "аудитория") %>,
на тему <%= Аррliсаtiоп("ТемаЛекции") %>


Здесь демонстрируется, как методами Lock



Пример 9

Здесь демонстрируется, как методами Lock и Unlock изменить значения счетчика посещений, используемого в Web-приложении: <%
Application.Lock
Application("NumVisits") = Application("NumVisits") + 1
Application.Unlock
%>
Этот узел посетили
<%= ApplicationC'NumVisits") %> человек.


Здесь демонстрируется код для события



Пример 10

Здесь демонстрируется код для события Application_OnStart в файл Global.asa: <SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Application_OnStart
'Код Вашего сценария
End Sub
</SCRIPT>


Здесь событие Session_OnStart используется для



Пример 11

Здесь событие Session_OnStart используется для принудительной переадресации пользователя на страницу регистрации на Вашем узле независимо оттого, какую именно активную серверную страницу он запросил у Вашего Web-приложения: ' При открытии сеанса отправить пользователя на страницу регистрации
Sub Session_OnStart
If SessionC'username") = "" Then
' Сохранить название страницы, которую хотел посетить пользователь
Session("startpage") =
Request.ServerVariables("SCRIPT_NAME")
' Отправить пользователя на страницу регистрации
Response.Redirect "profile.htm"
End If
End Sub


с помощью PROGID на время



Пример 12

Здесь с помощью PROGID на время сеанса создается экземпляр компонента Advertisement Rotator: <OBJECT RUNAT=Server SCOPE=Session ID=MyAd PROGID="MSWC.Adrotator">
</OBJECT>


с помощью CLASSID на время



Пример 13

Здесь с помощью CLASSID на время работы приложения создается экземпляр компонента Advertisement Rotator: <OBJECT RUNAT=Server SCOPE=Application ID=MyAd CLASSID="Clsid:00000293-0000-0010-8000-OOAA006D2EA4"></OBJECT> Когда Вы применяете тэг <OBJECT> для создания экземпляра компонента на время сеанса или на период работы приложения, переменная, связанная с компонентом, располагается в области имен сеанса или приложения соответственно. Для доступа к экземплярам компонентов Вам не придется пользоваться объектами Session или Application.

Вот как открыть экземпляр компонента



Пример 14

Вот как открыть экземпляр компонента Advertisement Rotator, объявленный в коде предыдущего примера: <%= MyAd.GetAdvertisement("addata.txt") %>


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



Резюме

Серверные сценарии расширяют функциональные возможности 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.



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



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

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



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



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

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

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



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



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

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

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

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

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

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



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



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

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

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

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



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



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

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



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



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

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



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



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

Хотя для создания 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 и для активных страниц.



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



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

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

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

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

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

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



Свойство ScriptTimeout



Свойство ScriptTimeout

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

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



Тэг <SCRIPT>



Тэг <SCRIPT>

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



Тэги



Тэги

<% %>

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

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



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



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

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



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



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

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

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

Объект Описание
Request Получает информацию, переданную пользователем Web-серверу при HTTP-запросе
Response Управляет передачей пользователю информации в ответном HTTP-сообщении
Session Сохраняет сведения о сеансе конкретного пользователя
Application Обеспечивает совместное использование данных всеми клиентами Web-приложения
Server Предоставляет доступ к ресурсам Web-сервера



Web-узел Adventure Works



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 каждый раз, когда Вам захочется узнать, как он устроен.



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



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

Приведенные ниже вопросы помогут Вам лучше усвоить основные темы данной главы. Если Вы не сумеете ответить на вопрос, повторите материал соответствующего занятия. Правильные ответы приведены в разделе «Вопросы и ответы» в конце книги. Опишите процесс предоставления клиентской программе просмотра запрошенной активной страницы.

ответ

Какие языки создания сценариев для активных страниц поддерживаются по умолчанию?

ответ

Какой объект активных страниц Вы бы использовали в своем Web-приложении, чтобы извлечь информацию из HTTP-запроса?

ответ

Каково назначение агентов?

ответ







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



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

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

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



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

(Продолжительность занятия 20 минут) Активные страницы сервера — это комбинация серверных сценариев (на языках VBScript или JavaScript) и тэгов HTML. Файлы активных страниц обрабатываются на Web-сервере. Используя сценарии серверной части, Вы можете выполнять множество задач, например получать информацию от пользователя, запрашивать данные из БД или строить динамические HTML-страницы для передачи на компьютер-клиент. На этом занятии Вы познакомитесь с архитектурой и синтаксисом активных страниц и узнаете, как их создавать. Изучив материал этого занятия, Вы сможете: описать, как обрабатывается активная страница; размещать VBScript-сценарии в активной странице; перечислить и описать объекты ASP; создать активную страницу.

Чтение HTTP-запроса



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

(Продолжительность занятия 15 минут) Когда пользователь пытается получить данные с Web-страницы, запрос передается серверу в формате HTTP. Приложения ASP применяют для обработки HTTP-запроса и извлечения необходимых данных объект Request. Например, если пользователь отправляет заполненную форму, значения элементов управления формы (например, значения текстовых полей) передаются серверу в теле HTTP-запроса. Web-приложение средствами объекта Request может извлечь эти данные и, обработав их, возвратить пользователю персонализированную Web-страницу. На этом занятии описано, как применять объект Request для извлечения информации из Web-страниц. Изучив материал этого занятия, Вы сможете: описать пять наборов объекта Request, предназначенных для извлечения информации из HTTP-запроса; использовать набор QueryString объекта Request для получения информации из заголовка HTTP-запроса; использовать набор Form объекта Request для получения информации из тела HTTP-запроса.

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



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

(Продолжительность занятия 15 минут) Определив, что именно пользователь запрашивает в HTTP-запросе, Вы можете вернуть ему необходимую информацию с помощью свойств и методов объекта Response. На этом занятии Вы узнаете, как пользоваться объектом Response для создания ответа на HTTP-запрос. Изучив материал этого занятия, Вы сможете: перечислить и описать общие свойства и методы объекта Response; используя метод Write объекта Response, добавлять текст в HTTP-ответ; использовать метод Redirect объекта Response для перехода на другую Web-страницу; буферизировать ответ

h1>

Занятие 5.

Хранение пользовательской информации (Продолжительность занятия 40 минут) Активные страницы позволяют Web-приложению хранить состояние, то есть информацию, связанную с конкретным пользователем. Web-приложение поддерживает: состояние приложения — эти данные доступны всем пользователям Web-приложения. состояние сеанса — эти сведения доступны только пользователю данного сеанса. Состояния на пользовательских компьютерах поддерживаются с помощью агентов (cookies), которым и посвящено это занятие. Изучив материал этого занятия, Вы сможете: создавать агенты и пользоваться ими; сохранять информацию о сеансе с помощью объекта Session; сохранять сведения о приложении средствами объекта Application; создавать сценарии обработки событий в активной странице Global.asa.

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



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

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

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



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

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