Создание активных серверных страниц
Простейшим способом создания 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>
Строка, возвращаемая функцией, может использоваться в сценарии.