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

       

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


Простейшим способом создания ASP является изменение расширения файла, содержащего HTML-документ, с НТМ на ASP. Перенесите этот файл в новую папку корневой папки Web-сервера. Во всех примерах этой главы предполагается, что ASP-страницы находятся в папке ASPages, а сами примеры - на прилагаемом компакт-диске в папке с тем же именем.

ASP-файлы и права исполнения

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

С помощью административной утилиты Web-сервера создайте виртуальную папку, назовите ее ActivePages и отобразите ее на ASPages в корневом каталоге Web. Назначьте этой папке право Scripts. Назначать право Execution (Выполнение) необязательно, поскольку ASP-файлы не являются исполняемыми.

Начнем с тривиального примера (см. гл. 20). Это простой HTML-файл, который отображает время на экране клиента (рис. 22.3).

Рис. 22.3. Страница DATETIME.HTM

Программа 22.1. Файл DATETIME.HTM

<HTML>

<HEAD>

<TITLE>Simple ASP Demo<\TITLE>

<SCRIPT LANGUAGE=VBScript>

Document.Write "<FONT SIZE=3 FACE='Verdana'>"



Document.Write "<H1>Welcome to the Active Server     Pages<\H1>"

Document. Write "The date is <B>" & Date () & "</B>  and  the  time is

<B>" & Time()S "</B>"

Document.Write "<P>"

</SCRIPT>

</HEAD>

<BODY>

<B>Active Server Pages</B> contain text, HTML code and scripts that

are executed on the client, ]ust like ordinary HTML documents. The

DateTime.asp file contains a client-side script, which prints   the

date and the time on the client and then displays the document's

body.

</BODY>

</HTML>

Это клиентский сценарий, который вызывает функции

Date() и Time(). Он выполняется на компьютере клиента и, как следствие, отображает дату и время, считанные с его системных часов.


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

<CRIPT LANGUAGE = VBScript RUNAT = Server>

Response. Write "<FONT SIZE=3 FACE='Verdana'>"

Response.Write "<Hl>Welcome to the Active Server Pages</Hl>"

Response. Write "The date is <B>" & Date() & "</B> and the time is <B>"

& Timef) & "</B>"

Response.Write "<P>"

</SCRIPT>

Объект Response (Отклик) эквивалентен объекту Document (Документ), но сервер, в отличие от клиента, не имеет доступа к объекту Document. Вместо этого он должен использовать метод Write (Писать) объекта Response для вывода на экран клиента. Все, что вы "пишете" в объект Response, помещается в выходной поток и пересылается клиенту, как если бы это был существующий HTML-документ. Переработанная страница осуществляет вывод, аналогичный выводу предыдущей страницы, однако при этом отображается дата и время сервера. Модификатор RUNAT в теге <SCRIPT> предписывает ASP выполнять сценарий на сервере, а не на клиентском компьютере.

Серверные сценарии можно заключать в пару тегов <% и %>. Между тегами помещаются все операторы, выполняющиеся на сервере. Эти операторы рассмат­риваются как серверный сценарий, поэтому на компьютере клиента они замещаются выполняемым выводом, и увидеть их на экране клиента нельзя.

Примечание

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

Приведем пример более полезной ASP-страницы (GREET.ASP), которая отображает различные приветствия в зависимости от времени суток.

Программа 22.2. Страница GREET.ASP

<HTML>



<BODY>

<%

If Time() >=#12:00:00 AM# And Time() < #12:00:00 PM# Then

greeting = "Good Morning!"

Else

greeting = "Good Afternoon!"

End If

%>

<H1> <% =greeting %> </H1>

<BR>

<H2> and welcome to the Active Server Pages.</H2>

<BR>

{Другие строки HTML-кода}

</BODY>

</HTML>

Операторы между первой парой тегов <% и %> не выполняют вывод на экран клиента. Они присваивают требуемое значение переменной greetings (приветствие). Значение этой переменной пересылается клиенту строкой <% =greeting %>. Выражение вида "=переменная" (разумеется, без кавычек) при выполнении сценария на сервере заменяется значением переменной. Остальное — обычный HTML-код, который отображается на экране клиента.

HTML-код и операторы серверного сценария могут сосуществовать в одной строке. Альтернативным вариантом последнего примера является следующий.

<HTML>

<BODY>

<% If Time() > = #12:00:00 АМ# And Time() < #12:00:00 PM# Then %

<Hl>Good Morning!</H1>

<» Else %>

<Hl>Good Afternoon!</H1>

<% End If %>

<BR>

<H2>and welcome to the Active Server Pages.</H2>

<BR>

{Другие строки HTML-кода}

</BODY>

</HTML>

Наряду со встроенными (например, Date() и Time()), серверный сценарий может вызывать процедуры, написанные вами. Предположим, вы написали функцию, которая получает в качестве параметра число и возвращает его строковое представление (для числа 96 она вернет строку "девяносто шесть"). Чтобы вызвать эту функцию из вашего сценария, заключите ее имя в пару тегов.

<% =NumToString(96) %>

При этом определение функции должно располагаться в этом же файле. Поскольку она выполняется на сервере и не содержит HTML-код, который нужно переслать клиенту, поместите ее в пару тегов <SCRIPT>, добавив модификатор RUNAT.

<SCRIPT RUNAT=SERVER LANGUAGE=VBScript>

function NumToString(Number)

{

операторы функции

}

</SCRIPT>

Строка, возвращаемая функцией, может использоваться в сценарии.


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