Откуда у ASP ноги растут?

В общем, как уже я говорил, ASP на самом банальном уровне - это просто генерация клиентской страницы на сервере при помощи JavaScript или VB Script. Но ни тот ни другой не позволяют обращаться к данным, не работают с файловой системой. Так как же выполняются какие-либо задачи с помощью ASP?

С помощью объектов и компонент. По большому счету в ASP все и делается с их помощью. Короче, понятно откуда ноги растут у ASP. Теперь о том какие из них передние, а какие задние.

И объекты и компоненты - это все те же горячо любимые динамические библиотеки. А разница между ними в том, что объекты присутствуют в сценарии ASP постоянно, их можно вызвать в любой момент, а компоненты нужно создавать внутри сценария явным образом. Объектов в ASP всего ничего: Application, Session, Response и Request, а также еще и Server. Теперь о каждом коротенько.
 
 

Объекты

Application

Объект Application - это и понятно относится ко всему интернет-приложению. Его основная задач - это доступ к переменным уровня приложения. И методов у него всего два: Lock и Unlock.  Мне других, во всяком случае, не встречалось.

Session

Объект Session - соответственно, обозначает сессию, запущенную в ходе выполнения приложения. И, естественно, их может быть много. Чтобы их различать, у них есть свойство SessionID. Кроме того, свойство Timeout устанавливает время, через которое сессия прекращается за ненадобностью (те самые 20 минут). И есть еще метод Abandon, который пристреливает сессию на месте.

Response и Request

А вот про эту парочку коротко уже не отделаешься. По большому счету, Response и Request - эдакая мелкая разменная монета в ASP, без которой никуда не денешься. Response чем-то напоминает write из JavaScript. Он также служит для вывода информации, но возможности у него побольше, т.к. выводит он не только на экран монитора. В его обязанности входит также и отсылка cookies на машину пользователя, а еще он управляет буфером вывода, останавливает обработку ASP-сценария, ведет логи на сервере. В общем, тот еще тип. Но самый основной метод у него, конечно, Response.write, при помощи которого и осуществляется весь вывод.

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

Server

Объект Server в первую очередь служит для создания, т.е. явного объявления объектов в ASP-сценарии. Для этого у него есть метод CreateObject. Кроме того, он может еще выполнять и кое-какие операции по перекодированию строк.

Компоненты

Вот с помощью объекта Server компоненты и создаются. В ASP компоненты служат в первую очередь для таких целей как доступ к базам данных, к файловой системе, для работы с почтой.

Как ASP приручается?

Ну, для начала все же не стоит сразу хвататься за что-то глобальное. А лучше просто попробовать, как все это крутится. Поэтому начать лучше с чего-нибудь простенького. Вот, например, кто не сталкивался с проблемой несовместимости броузеров. Согласен, можно решать ее и в рамках клиентских скриптов. Но тогда, во-первых, приходится посылать клиенту удвоенную порцию кода (для обоих броузеров). А во-вторых, еще не известно, работает ли поддержка скриптов у клиента. Зато можно в коде ASP выяснить, какой у клиента броузер, и слепить необходимую ему страничку безо всякого лишнего мусора.

Предполагается, что проект у вас уже создан и открыта чистая страница ASP-файла. Но если нет, то тогда сделайте это или в Visual InterDev, или в любом текстовом редакторе (не так удобно, но беды большой не будет). Еще раз напоминаю, что проект должен находиться в каталоге …\wwwroot. При установленном IIS или PWS он обязан присутствовать у вас на диске.

Страница ASP всегда начинается с указания, на каком языке сценария написан код этой страницы. При этом часть ваших страниц может быть написана на VB Script, а часть на JavaScript. И при этом все будет работать. В общем, в начале файла пишем:

<%@ Language=javascript %>

Пользоваться я буду JavaScript, если у кого-то возникнет желание, то адаптировать все это под VB Script не составит большого труда. Главное - принцип. Затем помещаем следующий фрагмент кода:

<%
var objBrowser = Server.CreateObject("MSWC.BrowserType");
var isBrowserOK = (objBrowser.browser == "IE" && parseInt(objBrowser.Version) >= 4) ? true : false;
%>

Здесь создается объект objBrowser, содержащий информацию о браузере клиента, запросившего данную страницу. Переменная содержит логическое значение, показывающее, является ли броузер клиента Internet Explorer'ом 4-й версии или выше. Вообще-то, для простого примера можно было определять только тип броузера, версию я приписал уже просто так. На практике, определение может быть достаточно развернутым. И соответственно, может быть несколько ветвей формирования страницы. Ну а дальше пишем обычный HTML-заголовок и все последующие необходимые теги:

<html>
<head>
<title>Определение типа броузера</title>
</head>
<body>

<h1> Определение типа броузера </h1>

Дальше вставляем фрагмент ASP-скрипта, выводящего ту или иную строку.

<% if (isBrowserOK) { %>
<p>У вас Internet Explorer версии 4 или выше.</p>
<% } else { %>
<p>У вас не Internet Explorer версии 4 или выше, а какой-то другой.</p>
<% } %>

Хотя этот фрагмент можно было реализовать и в одну строку:

<p>У вас <%= ((isBrowserOK) ? "" : "не ") %>Internet Explorer версии 4 или выше<%= ((isBrowserOK) ? "" : ", а какой-то другой") %>.</p>

Ну, и закрываем теги страницы.

</body>
</html>

Все, простенькая страничка готова. Можно ее опробовать. Только запускать ее двойным щелчком или открывая в броузере (т.е. используя "Открыть файл") бесполезно. В строке Location броузера набирайте что-то вроде этого:

your_machine_name/your_project_name/your_page.asp

Поясняю: your_machine_name - имя вашей машины в сети, в моем случае это andrew; your_project_name - имя каталога вашего проекта; ну и your_page.asp - соответственно имя самого файла. Ну а если он у вас назван default.asp или в Visual InterDev в контекстном меню файла вы указали, что этот файл стартовый, то имя набирать необязательно. Можете придумать и что-то свое, смотря какую задачу вам надо решить.