ASP-технологии: встроенные объекты
🕛 17.09.2009, 13:57
Стандартным скриптовым языком для майкрософтовских web-серверов является VBScript, но если у вас есть интерпретатор языка Perl, то вы можете использовать технологию ASP для написания web-приложений и на этом языке. Кроме того, стандартный движок ASP может распознавать и JScript (версию JavaScript от Microsoft). Для того чтобы скрипты на JScript распознавались и выполнялись, нужно указать в начале ASP-страницы директиву <% language=Jscript %>или использовать следующую конструкцию:
<script language=“JScript” RunAt=“Server”> Мой скрипт </script>
А сейчас разрешите мне поведать вам о встроенных объектах ASP, которых насчитывается аж семь штук: Response, Request, Server, Application, Session, Object Context, ASPError.
Сначала мы рассмотрим объект Response. Он предназначен для пересылки информации браузеру. Чтобы иметь возможность самостоятельно проверить, как работает этот объект, выполните следующие действия:
- В корне Web-узла создайте виртуальный каталог с именем Embedded_objects (смотрите прошлую статью);
- В нем создайте файлы default.htm и response.asp. Для этого можно создать текстовый документ или HTML-документ и просто поменять расширение на *.asp.
В файле default.htm создайте ссылку на файл response.asp. Для этого введите текст:
<html> <head> <title>Embedded objects</title> </head> <body bgcolor="#FFFFFF" text="#000000"> <a href="response.asp">Response object: "Write" method test</a> </body> </html>
- Откройте файл response.asp в любом текстовом редакторе (лично я использую 1stPage и FrontPage, хотя подходит любой другой, например, Dreamweaver).
- Наберите следующий текст:
<html> <head> <title>Response.Write test</title> </head> <body bgcolor="#FFFFFF" text="#000000"> <p>This is simple HTML text</p> <% Response.Write "And this is a text sent by Response object<br>" %> </body> </html>
Сохраните файл.
Загрузите файл default.htm в браузер. Примечание: чтобы просмотреть эту ASP-страницу в браузере, необходимо сначала запустить Web-сервер, затем в строке адреса набрать следующий текст: http://localhost/Embedded_objects. Этот прием сработает, если на вкладке «Другие» в поле «Задать документы, которые будут использоваться по умолчанию» будет указан єтот самый default.htm. Вместо localhost вы можете указать имя вашего компьютера, так как имя localhost по неизвестным мне причинам не всегда работает. Если вы не знаете имени вашего компьютера, войдите в Панель управления, откройте пункт «Сеть», и в поле «Имя компьютера» вы увидите то, что искали.
В окне браузера появится сообщение.
Давайте разберемся, как работает этот сценарий.
Когда поступает запрос от браузера, web-сервер находит нужную страничку и начинает передавать HTML-текст клиенту. Затем сервер встречает тэг начала сценария -<%. И вот тут начинается самое интересное - в дело вступает движок ASP, загружается нужная библиотека динамической компоновки (DLL) и начинается обработка сценария. Анализатор находит строку
Response.Write "And this is a text sent by Response object<br>"
и затем, используя метод Write объекта Response, отсылает заключенный в кавычкаи текст браузеру. Дальше обработчик встречает тэг окончания сценария %>; выполнение сценария заканчивается и отсылается оставшийся HTML. В результате браузер получит следующий текст:
<html> <head> <title>Response.Write test</title> </head> <body bgcolor="#FFFFFF" text="#000000"> <p>This is simple HTML text</p> And this is a text sent by Response object<br> </body> </html>
Теперь давайте усложним сценарий. Измените серверную часть (то есть текст между <% и %>) следующим образом:
Dim I Dim J I=12457 J=13485 Response.Write "And this is a text sent by Response object<br>" Response.Write “12457+13485 = ” & I+J
В первых двух строках объявляются переменные I и J. Мы присваиваем переменной I значение 12457, а переменной J - значение 13485. После этого браузеру посылается текст And this is a text sent by Response object<br>, а затем текст 12457+13485 =. Дальше переменные I и J складываются, сумма же отправляется клиенту. Рис. 2Теперь эта страничка будет выглядеть так, как показано на рис. 2.
Мы рассмотрели, пожалуй, самый часто используемый метод объекта Response - Write. Теперь давайте рассмотрим остальные методы и свойства этого объекта.
Свойство Buffer предназначено для буферирования пересылаемой на браузер информации до окончания обработки страницы. Включать его нужно, если предполагается динамическая запись значений заголовка ASP-страницы, - например, при использовании метода Response.Redirect. Обычно это значение стоит по умолчанию. Если же нет, то указывать его следует таким образом (обычно эту строку ставят в начале страницы):
<% Response.Buffer = True %> <html> <head> <title>Response.Buffer test</title> </head>
…
Свойство Expires употребляется для принудительного обновления страниц. ASP-страницы, в отличие от HTML-страниц, динамичны, и поэтому в некоторых случаях нельзя допускать, чтобы страница заносилась в кэш браузера. Для этого и используется свойство Expires, которое устанавливает период в минутах, после которого данные считаются устаревшими. Записывается оно в начале страницы таким образом:
<% Response.Expires = 0 %> <html> <head> <title>Response.Expires test</title> </head> …
Если вы вставите первую строчку примера в вашу ASP-страницу, то браузер вообще не будет ее кэшировать. А вот этот код заставит браузер считать страницу устаревшей через 5 минут:
<% Response.Expires = 5 %> <html> <head> <title>Response.Expires test2</title> </head>…
Примечание: когда вы используете данное свойство, движок ASP добавляет соответствующий заголовок в пересылаемую страницу, а так как не все браузеры воспринимают этот заголовок правильно, эта штука не всегда работает. Особенно «отличились» в этом отношении браузеры Netscape.
Свойство ExpiresAbsolute аналогично свойству Expires, но устанавливает не период времени, а конкретную дату, после которой браузеру подается команда обновить страницу. Используется оно так:
<% Response.ExpiresAbsolute = #December 25, 2002 22:22:22# %> <html> <head> <title>Response.ExpiresAbsolute test</title> </head> …
Это означает, что страница будет действительна до 22 часов 22 минут 22 секунд 25 декабря 2002 года.
Свойство CaheControl из одного ряда со свойствами Expires и ExpiresAbsolute. Часто в «старении» страницы виноваты не браузеры, а proxy-серверы - они кэшируют ASP-страницу, и когда пользователь запрашивает ее, proxy возвращает кэшированную информацию. Чтобы избежать этого, используется свойство CaheControl. Оно может принимать два значения: Private и Public. Private означает, что proxy не будет кэшировать страницу, Public, соответственно, наоборот. Например:
<% Response.CaheControl = Private %> <html> <head> <title>Response.ExpiresAbsolute test</title> </head>
…
Свойство Charset дает команду движку ASP добавлять в заголовок страницы ее кодировку. Пример:
<% Response.Charset = “windows-1251” %>
Свойство ContentType. Данное свойство устанавливает значение заголовка HTML-страницы, которое отвечает за ее содержимое. По умолчанию это text/html, но иногда приходится устанавливать это значение вручную - например, когда вы используете метод BinaryWrite. Пример:
<% Response.ContentType = “image/gif” %>
Свойство IsClientConnected позволяет определить, подключен ли клиент к серверу. Использование этого свойства бывает полезно в тех случаях, когда происходит обработка больших объемов данных (например, при выборке из базы данных), а клиент по каким-либо причинам отключился от сервера. В этом случае не имеет смысла продолжать работу сценария, занимая драгоценные ресурсы сервера. Принимает значения TRUE или FALSE. Пример:
<% IF Response.IsClientConnected= False THEN прекратить обработку сценария ELSE продолжить END IF %>
Свойство Status. Позволяет определить сообщение, возвращаемое сервером в ответ на запрос клиента. Например, «404 Not Found», «401 Unauthorized», «200 OK» и др.
Свойство PICS используется для добавления значения HTML-заголовка, отвечающего за рейтинг страниц по системе PICS (Platform for Internet Content Selection - платформа для выбора Internet-содержимого). С помощью этой метки вы можете обозначить ваш сайт как порнографический :-), и тогда родители могут запретить своим детям просмотривать его, установив соответствующую опцию в браузере. Спецификации смотрите на сайте http://www.w3.org/PICS.
Теперь давайте перейдем к методам объекта Response.
Метод Redirect. Предназначен для переадресации страницы в случае, когда неизвестен точный URL переадресации (когда известен, следует использовать метод AddHeader, о котором речь пойдет далее). Пример:
<% Response.Redirect “http://www.somesite.ru/somepage.asp?param1=er&Param2=ok” %>
После выполнения этой строки браузеру посылается сообщение «302 Object Moved», в результате чего клиент запрашивает у сервера нужный файл.
Примечание: для того чтобы использовать эту функцию, нужно установить значение Response.Buffer в True.
Метод AddHeader позволяет добавить к ASP-странице нестандартный заголовок. Например, если вам нужно, чтобы страница обновлялась каждые 2 секунды, следует добавить следующую строку:
<% Response.AddHeader “Refresh”, “2” %>
Если же вам нужно, чтобы через 18 секунд загрузилась другая страница, то укажите следующую строку:
<% Response.AddHeader “Refresh”, “18; URL=http://www.anysite.com/anypage2.asp” %>
Этот метод следует использовать тогда, когда заранее известен URL переадресации, иначе нужно применять метод Redirect.
Примечание: вместо этого метода можно использовать meta-тэги (собственно, метод AddHeader попросту автоматизирует этот процесс) вот таким образом:
<META HTTP-EQUIV=”REFRESH” CONTENT=”18; URL=http://www.anysite.com/anypage2.asp ”>
Метод AppendToLog предназначен для записи в журнал событий Web-сервера (LOG-файл). Например:
<% Response.AppendToLog “This is a test for the AppendToLog method” %>
Метод Clear очищает буфер ответа на сервере.
Метод BinaryWrite позволяет передавать клиенту нетекстовую информацию (картинки, звуковые файлы, архивы, исполняемые файлы и другие).
Метод End. С помощью этого метода можно завершить передачу информации клиенту. Все операторы сценария, а также элементы HTML, которые следуют за строкой Response.End, выполняться и пересылаться не будут.
Метод Flush. Отправляет все содержимое буфера на клиент. Применяется при обработке объемных страниц.
Наконец, кратко опишем единственную в объекте Response коллекцию.
Коллекция Cookies. Данная коллекция играет большую роль в разработке web-приложений. Она позволяет сохранять информацию, связанную с конкретным пользователем, между сеансами его работы. Вообще, Cookies являются небольшими файлами, которые хранятся в специальной папке на компьютере пользователя. Они содержат строки вида «Ключ=Значение». Например, при необходимости сохранить имя пользователя так, чтобы при следующем посещении данной web-страницы ему не пришлось бы вводить свое имя заново, можно использовать такой скрипт:
<% Response.Cookies(“username”)=“Neunyvay-Dubina” %>
Бывает, что Cookies содержат «подзначения» (Microsoft называет их «Cookies с отображениями»). Пример:
<% Response.Cookies(“Development Team”)(“Team Leader”)=“Pupkov-Zadniy” Response.Cookies(“Development Team”)(“Product Manager”)=“Ivanov” Response.Cookies(“Development Team”)(“Program Manager”)=“Petrov ” Response.Cookies(“Development Team”)(“Programmer”)=“Sidoroff” %>
Максимальный объем файлов Cookie в большинстве современных браузеров составляет 1 Кб (1024 байт).
Итак, в этой статье мы рассмотрели один из самых важных встроенных объектов ASP - Response. В следующий раз я расскажу вам о не менее интересном и полезном объекте Request.