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%20target=_new.
На данный момент доступна версия 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, которыми вы будете пользоваться
во всех своих приложениях.
|