Первый урок состоит в том, что в
стартапе, зависящим от передовых технологий, все занимает
больше времени и стоит дороже, чем предполагалось. Даже если
при расчетах иметь в виду первый урок. Говард
Райнголд
Это первый урок по ASP, точнее, урок и введение. Тем, кто уже
достаточно хорошо знаком с описываемой далее технологией могут
пропустить этот урок. В тексте Вам встретятся примеры кода. Все эти
примеры можно скачать и попробовать в действии. В конце урока есть
ссылка на примеры. Если у вас возникнут вопросы или предложения - pavelk@rcsme.ru.
Active Server Pages (ASP) - это технология Microsoft, позволяющая
создавать динамические web страницы. По запросу клиента ASP страница
обрабатывается на сервере, после чего сервер возвращает клиенту
удобочитаемый результат.
Только Windows?
Изначально – да. Но есть и заделы под другие
платформы. Например, продукт компании SUN "Chili!Soft ASP" (http://www.chilisoft.com/). Этот продукт позволяет
работать под Apache, Lotus, Netscape, O'Relly и Microsoft,
запущенных под HP-UX, Linux, Windows NT, Sun Solaris and IBM AIX. У
него есть одно неоспоримое преимущество – межплатформенность. Но при
этом есть и серьезные недостатки. Хотя в состав "Chili!Soft ASP" и
входят все стандартные компоненты (Browser Capabilities, Ad Rotator,
Content Rotator, Content Linking, Content Rotator, MyInfo, Tools and
Counters components), а так же несколько своих нестандартных
(Chili!Mail, Chili!POP3 и Chili!Upload), вы не сможете перенести
компоненты, написанные на VisualBasic. Если вы думаете, что таких
объектов мало, то сильно заблуждаетесь. Очень много объектов для
работы с ASP написано именно на этом языке. Кроме того, "Chili!Soft
ASP" поддерживает ASP версии 2.0. Версия 3.0 и ASP.Net не
поддерживаются.
Есть и другие продукты "Instant ASP" фирмы HalcyonSoftware, Inc
(http://www.halcyonsoft.com/). Список платформ и
серверов для этой "Instant ASP" вы найдете здесь: http://www.halcyonsoft.com/docs/iasp/config/supported.htm
На данный момент доступна версия 2.0, которая поддерживает:
- ASP 3.0
- VBScript 5.5
- Jscript 5.5
- ADO
- CDO
- Стандартные компоненты
- Компилятор ASP в JAVA bytecode
- и другие возможности
На мой взгляд, данные решения имеют право на существование лишь
для ОЧЕНЬ специфических задач. Технология ASP не разрабатывалась под
межплатформенность, а если нужна именно межплатформенность стоит
использовать другие технологии и языки (PHP, PERL, и.т.д.), IMXO,
конечно. Сейчас серверы на базе Windows стали достаточно
распространены и вряд ли есть большая необходимость в нестандартных
решениях.
Где взять?
ASP поставляется вместе с Microsoft Internet Information Server
(IIS) для Windows NT. IIS же находится в составе Windows NT Option
Pack. Для Windows 2000/XP Microsoft Internet Information Services
(IIS) и ASP входят в состав дополнительных компонентов операционной
системы. Не оставлены без внимания и пользователи Windows 9x/Me.
Для них есть Personal WEB Server (PWS), который находится на
установочном диске или можно бесплатно скачать с сайта Micosoft ( http://www.microsoft.com/msdownload/ntoptionpack/askwiz.asp
).
Как все это работает и …первая программа
Основным языком ASP является VBScript (Visual Basic Script). Так
же используется Jscript. Оба языка поставляются вместе с ASP фирмой
Microsoft. Исчерпывающую информацию, а так же их новые версии можно
найти по адресу http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vtoriMicrosoftWindowsScriptTechnologies.asp
VBScript это "родной" язык ASP, имеющий очень долгую историю. Его
варианты используются в WSH (Windows Script Host), Microsoft Office
(Visual Basic for Application) и во многих других продуктах.
Практически все, что можно сделать с помощью VBScript доступно и в
Jscript. Jscript это вариант языка JavaScript от Microsoft. В
большинстве вещей он совместим с JavaScript, но имеет много
усовершенствований, свойственных продуктам, где он используется.
Jscript будет прекрасным вариантом для людей начинающих
программировать с использованием технологии ASP и имеющих опыт
работы с такими языками, как C, C++, Java, JavaScript. Еще
существует достаточно много сторонних разработок, это и Perl (http://www.activestate.com/), и Rexx (http://wschaefer.purespace.de/rexx/rexxweb/wrw003.tml), и Python и др.
ASP файлы, как правило, представляют собой
HTML-файлы с интегрированными в них скриптами. ASP скрипт
заключается в специальные тэги "<% %><%" и "%>".
Напишем первую программу на ASP. Наша программка будет выводить
любимое всеми программистами словосочетание " Hello World ".
<%@ Language=VBScript %>
<html>
<head>
<title> Пример 1</title>
</head>
<body>
<% Response.write "Hello world!" %>
</body>
</html>
После интерпретации на сервере клиент получит следующую HTML
страничку:
<html>
<head>
<title> Пример 1</title>
</head>
<body>
Hello world!
</body>
</html>
Рассмотрим, что происходит в этом примере. "Response" – один из
нескольких встроенных ASP объектов. "Write (arg)" – его метод,
производящий запись аргумента(arg) клиенту. В нашем случае
аргументом была строка "Hello world!". Для Jscript пример будет
аналогичен, за исключением двух строк. Первая строка,
объявляющая используемый язык меняется с "<%@ Language=VBScript
%> " на "<%@ Language=javascript %> ". Вызов объекта
"Response" поменяется с "<% Response.write "Hello world!" %> "
на "<% Response.Write ("Hello world!"); %>". Здесь следует
обратить внимание на регистр, точку с запятой после вызова и скобки.
О встроенных ASP объектах мы поговорим в следующий раз.
Знакомство с переменными, операторами условного перехода,
сравнения и др.
Записывая такой большой заголовок абзаца, я, совсем не хотел вас
запутать. Просто в нашем втором примере мы все это увидим в
действии, а так же еще кое-что полезное. Давайте перейдем ко
второму примеру, что бы посмотреть на использование переменных,
встроенных функций и условий.
<%@ Language=VBScript %>
<html>
<head><title>Пример 2</title>
</head>
<%
Dim GoodNight, GoodMorning
GoodNight = "Good Night Everyone!"
GoodMorning = "Good
Morning
Everyone!"
%> <body><%if Hour(time)>18 orHour(time)<4 then
%> <%=GoodNight%>
<%else%>
<% Response.Write GoodMorning%>
<%end if%> </body>
</html>
В зависимости от времени на сервере, в этом примере будет
выводиться одна из двух фраз. Эти две строчки мы заранее занесли
в переменные: GoodNight = "Good Night Everyone!" GoodMorning
= "Good Morning Everyone!" В VBScript необязательно объявлять
переменные, но это крайне желательно, что мы и сделали перед
присвоением им строковых значений: Dim GoodNight, GoodMorning
Следующая, интересующая нас строка содержит конструкция вида IF…
THEN… Это оператор условного перехода. Hour и Time это
встроенные функции VBScript. Функция Time возвращает текущее
системное время, а функция Hour(arg) вернет нам цифру, содержащую
количество часов в переменной, представленной аргументом arg. Значки
"<" и ">" обозначают операторы сравнения меньше и больше
соответственно. Запись "OR"- это логический оператор,
обозначающий логическое "ИЛИ". Теперь нам понятен смысл
конструкции:
<%if Hour(time)>18 orHour(time)<4 then%>
<%=GoodNight%>
<%else%>
<% Response.Write GoodMorning %>
<%end if%>
Ее можно интерпретировать, как:
Если часов больше18 или меньше 4 то
выводим переменную GoodNight
Если это не так то
Выводим переменную GoodMorning
Закрываем условие
Обратите внимание на запись "<%=GoodNight%>". Она
эквивалентна записи "<% Response.Write GoodNight %>".
Как я уже и говорил, основной язык технологии ASP –
Microsoft VBScript. Мы уже видели некоторые его функции и
конструкции в действии. Чтобы использовать ASP, необходимо знать
этот язык. Можно использовать и другие, но VBScript более
распространен и наибольшее количество примеров, найденных вами,
будет написано именно на нем.
Переменные.
Переменные в VBScript не требуют обязательного объявления, но,
следуя правилам хорошего тона нужно их объявить. Делается это так:
‘объявление первой переменной.
Dim myvar
‘объявление массива из трех элементов.
Dim myarr(3)
В этом примере объявлено две переменных myvar и myarr. Все
переменные в VBScript имеют один тип: Variant. Задать тип переменной
при объявлении невозможно. Отсутствие строгой типизации достаточно
серьезная проблема скриптовых языков, однако, в следующей версии ASP
(ASP.NET) наконец введена строгая типизация. Знак "’" обозначает
начало комментария. Все, что следует за ним в одной строке, не
интерпретируется. С первой переменной все понятно, со второй не так
прозрачно. Вторая переменная - массив из трех элементов. Важно, что,
номер элемента массива обозначается круглыми скобками в VBScript, а
в JScript - квадратными! Элементы в массиве нумеруются с нуля.
Поэтому первых элемент массива будет myarr(0), а последний myarr(2).
Циклы.
В VBScript есть четыре оператора циклов: For … Next For … Each …
Next Do…Loop While…Wend
For … Next используется когда следует выполнить какое-то действие
n-ое количество раз. Пример: <%@ Language=VBScript %>
<html>
<head>
<title>Пример 3</title>
</head>
<body>
<%
Dim J
‘ начало цикла
for J=1 to 5
Response.Write J
Next
‘конец цикла
%>
</body>
</html>
Результат: 12345 В этом примере переменной J
последовательно присваиваться значения от 1 до 5. Далее
переменная выводится на экран.
В конструкции For … Next
можно задавать шаг цикла. В предыдущем примере шаг не был задан, и
интерпретатор использовал шаг по умолчанию – 1. Но можно задать и
другой. Делается это следующим образом:
<%@ Language=VBScript %>
<html>
<head>
<title>Пример 4</title>
</head>
<body>
<%
Dim J
‘ начало цикла
for J=1 to 5 Step 3
Response.Write J
next
‘ конец цикла
%>
</body>
</html>
Результат: 14 Думаю, результат понятен.
For …Each … Next эквивалентен предыдущей конструкции с той
разницей, что используется для массивов и коллекций.
Do…Loop. Этот цикл работает, до тех пор, пока не будет верно
условие. В следующем примере мы получим результат, аналогичный
результату примера 2:
<%@ Language=VBScript %>
<html>
<head>
<title>Пример 5</title>
</head>
<body>
<%
Dim J
Dim is_True
J =1
is_True = False
‘ начало цикла
Do while not is_True
Response.Write J
J = J + 1
if J = 6 then
is_True= True
end if
loop
‘конец цикла
%>
</body>
</html>
Цикл While…Wend практически не используется. Его заменяет
конструкция Do…Loop, которая, несомненно, является более гибкой и
удобной в использовании.
Условные выражения.В VBScript используются только два
условных выражения. С одним из них мы уже встречались - это If …
Then … Else. Использовать его достаточно легко. Вторая конструкция
это – Select … Case. В следующем примере мы попробуем показать
использование сразу двух условных выражений:
<%@ Language=VBScript %>
<html>
<head>
<title>Пример 6</title>
</head>
<body>
<%
Dim i
For i= 1 TO 5
If i > 4 Then
Select Case i Case 1
Response.Write "i = 1<BR>" & vbNewLine
Case 2
Response.Write "i = 2<BR>" & vbNewLine
Case Else
Response.Write "i = 3<BR>" & vbNewLine End
Select Else
Response.Write "i > 3<BR>" & vbNewLine
End if
Next
%>
</body>
</html>
Получаем следующий результат:
i = 1
i = 2
i = 3
i > 3
i > 3
Здесь переменной I в цикле присваиваются значения от 1 до 5. Пока
ее значение равно 1, 2, 3 мы попадаем в тело IF, где находится
конструкция Select. Вариант 1 и 2 срабатывают, когда I принимает
значение 1 и 2 соответственно. Вариант Case Else срабатывает во всех
других случаях. Когда значение I становиться больше 3 (4,5) мы
попадаем в ветвь Else.
Заключение
Первый урок можно считать завершенным. Это был вводный материал,
и опытные программисты могли пропустить его. В конце урока приведен
список полезных ссылок к этому уроку, а так же файлы примеров,
которые вы можете скачать. В следующий раз мы будем знакомиться со
встроенными объектами ASP, которыми вы будете пользоваться во всех
своих приложениях.
Ссылки
http://www.microsoft.com/ntserver/techresources/webserv/default.asp
Информация о IIS от создателя ASP.
http://asponline.webware.ru/ Хороший русскоязычный
сайт об ASP. Обязательно прочитайте раздел FAQ.
http://www.activeserverpages.ru
Один из самых старых в рунете сайтов об ASP. Много интересных
материалов, но последнее время редко обновляется. Есть форум, где
можно задавать свои вопросы.
http://www.relib.com/ Сайт, на котором представлен
обзор нескольких технологий программирования, в том числе и ASP. В
разделе ASP на данный момент около 40 статей. Список постоянно
пополняется. Есть форум.
http://www.aspfree.com/ Англоязычный ресурс,
содержащий огромное количество информации по ASP и ссылок на другие
сайты.
http://www.asp101com/ Еще один англоязычный
сайт, где представлена масса информации по ASP. Здесь вы найдете и
исходники и статьи и ссылки и еще массу всего интересного.
|