ASP - Создание страницы ASP
Файл Active Server Pages (ASP) представляет собой текстовый файл с расширением «.asp». Этот файл может содержать:
- текстовые данные;
- теги языка HTML;
- серверные сценарии.
Для быстрого создания файла «.asp» достаточно переименовать HTML-файл, сменив расширение «.htm» или «.html» на «.asp». Если файл не содержит функций ASP, сервер просто выполняет эффективную отправку файла на компьютер пользователя. Эта черта обеспечивает дополнительные удобства для веб-разработчиков, которые могут давать файлам расширение «.asp», даже если не предполагают впоследствии включать в них функции ASP.
Для опубликования вновь созданного файла «.asp» в Интернете следует сохранить его в виртуальном каталоге веб-узла (последний должен иметь разрешение «Сценарий» или «Выполнение»). После этого можно обратиться к данному файлу в запросе, указав в обозревателе соответствующий адрес URL. (Необходимо помнить, что поскольку страницы ASP должны обрабатываться на сервере, ввод физического пути к файлу «.asp» в данном случае недопустим.) Переданный сервером файл при просмотре в обозревателе представляет собой страницу HTML. В этом есть определенный смысл, так как перед отправкой файла на сервере выполняется его синтаксический анализ и выполняются все серверные сценарии ASP. Поэтому пользователи всегда получают обычные файлы HTML.
Файлы «.asp» могут создаваться в любом текстовом редакторе. По мере накопления опыта более удобной может оказаться работа в специальном редакторе, включающем дополнительную поддержку ASP, таком как Microsoft® Visual InterDev™. (Дополнительные сведения см. на веб-узле Microsoft Visual InterDev по адресу http://msdn.microsoft.com/vinterdev/.)
Добавление команд в сценарий для сервера
Серверный сценарий состоит из последовательности инструкций, обеспечивающих поочередное поступление команд на веб-сервер. (Разработчикам веб-узлов могут быть хорошо знакомы клиентские сценарии, выполняющиеся в веб-обозревателе.) В файлах «.asp» для обособления сценариев от текстовых данных и команд HTML используются разделители. Разделителем является символ или последовательность символов, которыми обозначается начало или конец раздела. Язык HTML в качестве таких разделителей использует символы (<) и (>), между которыми располагаются теги HTML.
В ASP команды сценариев заключаются в разделители <% и %>. В разделителях можно указывать любые допустимые команды используемого языка сценариев. Ниже показан пример простой страницы HTML с командами сценария.
<HTML> <BODY> This page was last refreshed on <%= Now() %>. </BODY> </HTML>
Функция VBScript Now() возвращает текущие дату и время. Во время обработки данной страницы веб-обозреватель заменит <%= Now() %>
текущими значениями даты и времени и возвратит страницу обозревателю со следующим результатом:
This page was last refreshed on 01/29/99 2:20:00 PM.
Команды, заключенные в разделители, называются основными командами сценариев и обрабатываются при помощи основного языка сценариев. Команда внутри разделителей должна быть допустимой командой основного языка сценариев. По умолчанию основным языком сценариев является VBScript; можно назначить и другой язык сценариев по умолчанию. См. Работа с языками сценариев.
Разработчикам клиентских сценариев хорошо знаком HTML-тег <SCRIPT>, используемый для выделения команд и выражений. В серверных сценариях тег <SCRIPT> может применяться для определения процедур на нескольких языках, содержащихся в одном файле «.asp». Дополнительные сведения по этому вопросу см. в разделе Работа с языками сценариев.
Совместное использование тегов HTML и команд языка сценариев
В разделители ASP можно поместить любую инструкцию, выражение, процедуру или оператор, применение которых разрешено в используемом основном языке сценариев. Под инструкцией в VBScript и других языках написания сценариев понимают синтаксически полную конструкцию, которой описывается один вид действия, объявления или определения. Примером часто используемой инструкции является условная инструкция If...Then...Else:
<% Dim dtmHour dtmHour = Hour(Now()) If dtmHour < 12 Then strGreeting = "Good Morning!" Else strGreeting = "Hello!" End If %> <%= strGreeting %>
В зависимости от времени дня строковой переменной strGreeting
в сценарии присваивается значение "Good Morning!"
(«Доброе утро!») или "Hello!"
«Здравствуйте!». Инструкция <%= strGreeting %>
отправляет текущее значение переменной в обозреватель.
Таким образом, до 12:00 дня (по местному времени) на экраны пользователей выводится строка:
Good Morning!
После 12:00 пользователи увидят сообщение:
Hello!
Между различными частями инструкции может располагаться HTML-текст. Так, результат выполнения приведенного ниже сценария с тегами языка HTML и инструкцией If...Then...Else является таким же, как и в примере выше:
<% Dim dtmHour dtmHour = Hour(Now()) If dtmHour < 12 Then %> Good Morning! <% Else %> Hello! <% End If %>
Если заданное в сценарии условие выполняется (полдень еще не наступил), веб-сервер отправляет в обозреватель указанный в условии текст HTML (“Good Morning”). В противном случае в обозреватель отправляется строка (“Hello!”), указанная после Else. Подобное чередование HTML-текста и команд сценариев часто применяется при работе с инструкцией If...Then...Else. Применение рассмотренной выше конструкции удобно, если приветствие требуется вывести в нескольких местах веб-страницы. Значение переменной устанавливается только один раз, после чего оно может использоваться многократно.
HTML-текста может также передаваться в обозреватель непосредственно из команды сценария, а не размещаться между различными командами. Возврат текста в обозреватель осуществляется встроенным объектом ASP Response. Результат выполнения следующего сценария тот же, что и в предыдущем примере:
<% Dim dtmHour dtmHour = Hour(Now()) If dtmHour < 12 Then Response.Write "Good Morning!" Else Response.Write "Hello!" End If %>
Команда Response.Write отправляет расположенный после нее текст в обозреватель. Инструкцию с Response.Write следует использовать в тех случаях, когда возвращаемый в обозреватель текст должен создаваться динамически. Таким образом, например, можно составить строку из значений нескольких переменных. Чтобы узнать больше об объекте Response в частности и об объектах вообще, обратитесь к разделам Использование компонентов и объектов и Отправка содержимого в веб-обозреватель. Сейчас же просто следует заметить, что добавление команд сценария на страницу HTML можно осуществить несколькими способами.
Допускается включение процедур, написанных на основном языке сценариев, с использованием разделителей ASP. Дополнительные сведения см. в разделе Работа с языками сценариев.
При создании сценария на языке JScript непосредственно в команды ASP могут включаться блоки инструкций в фигурных скобках. В этих конструкциях допускается также присутствие HTML-тегов и текста. Пример.
<% if (screenresolution == "low") { %> This is the text version of a page. <% } else { %> This is the multimedia version of a page. <% } %>
--Or--
<% if (screenresolution == "low") { Response.Write("This is the text version of a page.") } else { Response.Write("This is the multimedia version of a page.") } %>
Работа с директивами ASP
ASP предоставляет директивы, которые не входят в состав используемого языка сценариев: директиву для вывода данных и директиву для их обработки.
В ASP директива вывода <%= выражение %>
позволяет вывести значение выражения на экран. Эта директива вывода равнозначна команде Response.Write. Например, выражение <%= city %>
можно использовать для вывода на экран слова Baltimore
(текущее значение переменной) в обозревателе.
Директива обработки <%@ ключевое слово %>
позволяет передавать в ASP данные, которые необходимы для обработки файла «.asp». В следующем примере показаны директивы для VBScript в качестве основного языка сценариев на странице:
<%@ LANGUAGE=VBScript %>
Директива обработки должна быть первой строкой в файле «.asp». Если страница должна содержать несколько директив, они должны располагаться внутри одной пары разделителей. Включение в файл директивы обработки с помощью инструкции #include не допускается. (Дополнительные сведения см. в разделе Включение файлов.) От ключевого слова знак (@) должен отделяться пробелом. Ниже перечислены ключевые слова, которые могут применяться в директивах обработки.
- LANGUAGE. Установка языка сценария для файла «.asp». См. Работа с языками сценариев.
- ENABLESESSIONSTATE. Это ключевое слово указывает на использование в файле «.asp» сведений о состоянии сеанса. См. Управление сеансами.
- CODEPAGE. Установка кодовой страницы (кодировки символов) для файла «.asp».
- LCID. Установка для файла кода языка (местности).
- TRANSACTION. Выполнение файла «.asp» в контексте транзакции. См. Представление о транзакциях.
Важно! Одна директива может содержать несколько ключевых слов. Пары, образуемые ключевым словом и значением, должны разделяться пробелами. Пробелы (=) вокруг знака равенства не допускаются.
В следующем примере задаются язык сценария и кодовая страница:
<%@ LANGUAGE="JScript" CODEPAGE="932" %>
Пустые промежутки в сценариях
Если основным языком сценария является VBScript или JScript, ASP автоматически убирает пустые промежутки, которые могут встречаться в командах. В случае остальных языков написания сценариев эти промежутки сохраняются. Это обеспечивает правильность интерпретации команд в языках, где имеют значение местоположение элементов и отступы. Пустыми промежутками являются пробелы, знаки табуляции, возврата каретки и разрыва строки.
В языках VBScript и JScript допускается оставлять промежутки после открывающим и перед закрывающим разделителем. Это облегчает чтение команд. Так, перечисленные ниже инструкции правильны:
<% Color = "Green" %> <%Color="Green"%> <% Color = "Green" %>
Промежуток между закрывающими разделителем одной инструкции и открывающим разделителем другой в ASP удаляется автоматически. Тем не менее, использование пропусков повышает легкость чтение. Чтобы сохранить промежуток между двумя инструкциями, например при отображении значений переменных в предложении, следует пользоваться знаком неразрывного пробела из языка HTML ( ). Например:
<% 'Define two variables with string values. strFirstName = "Jeff" strLastName = "Smith" %> <P>This Web page is customized for "<%= strFirstName %> <%= strLastName %>." </P>