Объект Application

Описание объекта Application

Вы можете использовать данный метод для того, чтобы сделать доступной информацию между всеми пользователями данного приложения. Основанное на ASP приложение определено как все .asp-файлы в виртуальной директории и всех ее поддиректориях. Из-за того, что объект Application может быть доступен ("зашарен") более чем одному пользователю, то в нем предусотренно два метода - Lock и Unlock (заблокировать и разблокировать) для того, чтобы быть уверенным, что сразу несколько пользователей не смогут попытаться изменять свойства одновременно.

Синтаксис:

Application . метод

Коллекции:

  • Application.Contents
  • Application.StaticObjects

Методы:

  • Lock
  • Unlock

События:

  • Application_OnEnd
  • Application_OnStart

Скрипты, которым могут предшествовать события должны быть описаны в файле global.asa. Для получения более полной информации по этому файлу смотрите описание Global.asa

Замечания:

Вы можете хранить свои значения в коллекциях данного объекта: Application.Contents и Application.staticObjects. Информация, сохраненная в коллекции Application доступны через приложение. Следующий скрипт демонстрирует запись двух типов переменных.

<%
Application("greeting") = "Добро пожаловать на наш вэб-сервер!"
Application("num") = 25
%>

Для каждой из этих переменных предполагается их членство в коллекции Application Contents.

Вы можете также связать компонент с переменной. Если вы связываете сомпонент к переменной с помощью объекта Server.CreateObject, то переменная будет членом коллекции Application.Contents. Если переменная связана с тэгом <OBJECT>, то переменная будет членом коллекции Application StaticObjects.

Если вы связываете конкретный компонент с переменной в коллекцией Application Contents Collection и используете Visual Basic Scripting Edition как основной язык написания скриптов, вы должны использовать ключевое слово Set. Это иллюстрированно следующим примером.

<% Set Application("Obj1") = Server.CreateObject("MyComponent") %>

Вы можете также определить методы и свойства компонента MyComponent следующим скриптом

<% Application("Obj1").MyObjMethod %>

или путем создания локальной копии объекта и использования его следующим образом:

<%
Set MyLocalObj1 = Application("Obj1")
MyLocalObj1.MyObjMethod
%>

Другой способ, чтобы создать объект с использованием тэга <OBJECT> в файле Global.asa. Для более полной информации смотрите описание Global.asa.

Вы не можете хранить встроенные объекты в объекте Application. Для примера, каждый из следующих строк будет вызывать ошибку:

<%
Set Application("var1") = Session
Set Application("var2") = Request
Set Application("var3") = Response
Set Application("var4") = Server
Set Application("var5") = Application
Set Application("var6") = ObjectContext
%>

Если вы храните массив в объекте Application то вы не должны пытаться обращаться к элементам, хранящимся в массиве напрямую. К примеру, следующий скрипт не работает

<% Application("StoredArray") (3) = "new value" %>

>Настоятельно рекомендуется чтобы, если вы храните массив в объекте Application, вы получили копию массива прежде чем считывать или изменять любые его элементы. Кода вы сделали такую копию вы можете изменить или считать любые его элементы и измененную локальную копию сохранить обратно в Application. Данный прием мы продемонстрируем в следующем примере:

---file1.asp---
<%
'Создаем и инициируем массив
dim MyArray()
Redim MyArray(5)
MyArray(0) = "привет!"
MyArray(1) = "какая-либо другая строка"

'Запоминание массива в объекте Application
Application.Lock
Application("StoredArray") = MyArray
Application.Unlock

Response.Redirect("file2.asp")
%>

---file2.asp---
<%
'Получение массива из объекта Application
'и модицикация второго элемента
LocalArray = Application("StoredArray")
LocalArray(1) = " Люди!"

'вывод строки "привет! Люди!"
Response.Write(LocalArray(0)&LocalArray(1))

'Перезапись массива в объект Application
'Данное действие перепишет значения в StoredArray на новые
Application.Lock
Application("StoredArray") = LocalArray
Application.Unlock
%>

NumVisits для хранения числа посещений, когда страница была получена клиентом. Метод Lock вызывается тогда, когда есть возможность того, что к переменной NumVisits может возникнуть паралелльное обращение. Вызывая метод Unlock вы разрешаете обращаться к данной переменной (объекту Application) другим пользователям.

<%
Application.Lock
Application("NumVisits") = Application("NumVisits") + 1
Application.Unlock
%>

Вы <%= Application("NumVisits") %> посетитель этой страницы!

Коллекция Application. Contents

Коллекция Contents группирует все элементы, которые были добавлены приложением через команды скрипта. Вы можете использовать коллекцию Contents чтобы получить список элементов, которые были получены приложением или чтобы указать какой из элементов будет использован в данной операции.

Синтакс:

Application.Contents( ключ )

Параметры:

ключ
Указанное имя элемента для его получения.

Замечание:

Коллекция Application.Contents содержит те элементы которые были определены на уровне приложения без использования тэга <OBJECTS>. Это касается обеих объектов - созданных с использованием Server.CreateObject и с использованием скалярных переменных установленных через определение Application. В следующем скрипте, к примеру, оба и MyVar и MyObj будут членами коллекции Application.Contents.

<%
Application("MyVar") = "Привет!"
Set Application("MyObj") = Server.CreateObject("MyComponent")
%>

Коллекция Application.Contents поддерживает циклы типа For...Each и For...Next.
Следующие два примера иллюстрируют каждый из вышеуказанных методов циклов использования Application.Contents.

<%
For Each Key in Application.Contents
response.write ("key")
Next Key
%>
<%
For i = 1 to Application.Contents.Count
response.write("key")
Next Key
%>

Коллекция Application. StaticObjects

Коллекция StaticObjects содержит все объекты, созданные с использованием тэга <OBJECT> и объекта Application. Вы можете использовать коллекцию для того, чтобы определить значения указанных свойств для объекта или создать цикл по коллекции и получить все свойства для всех статических объектов.

Синтакс:

Application.StaticObject( ключ )

Параметры:

ключ
Указанное имя элемент для обращения к нему.

Замечание:

Вы можете использовать управление циклом чтобы перебирать ключи в коллекции StaticObjects. Это продемонстрированно следующим примером:

<%
Dim ObjProp

For Each ObjProp in Application.StaticObjects
response.write(ObjProperty & " : " & Application.StaticObjects(ObjProp) & "<br>") %>

Метод Application.Lock

Метод Lock блокирует для других клиентов переменные, хранимые в объекте Application от изменеия. Потому, как только один клиент может в данный момент времени получить доступ к переменным объекта. Если вы не вызываете метод Unlock после обработики переменных, то сервер сам разблокирует данный объект, когда истечет время (timeout) работы скрипта .asp.

Синтакс:

Application.Lock

Пример:

<%
Application.Lock
Application("NumVisits") = Application("NumVisits") + 1
Application.Unlock
%>

бШ<% = Application("NumVisits") %> посетитель данной страницы.

В предыдущем примере метод Lock предохраняет переменную NumVisits объекта Application от доступа к нему одновременно нескольких клиентов. Если бы приложение не было бы заблокированно, то два клиента попробывали-бы одновременно увеличить значение переменной NumVisits.

Метод Application.Unlock

Метод Unlock разблокирует заблокированные ранее переменные c помощью метода Lock.

Синтакс:

Application.Unlock

Пример:

<%
Application.Lock
Application("NumVisits") = Application("NumVisits") + 1
Application.Unlock
%>

Вы <% = Application("NumVisits") %> посетитель данной страницы.

В предыдущем примере метод Unlock разблокирует переменную NumVisits объекта Application, заблокированную ранее объектом Lock от доступа к нему одновременно нескольких клиентов.

Событие Application_OnEnd

Данное событие активизируется, когда приложение закрывается, а точнее после события Session_OnEnd. Только встроеные объекты Application и Server доступны.

Синтакс:

<SCRIPT LANGUAGE=язык_программирования RUNAT=Server>
Sub Application_OnEnd
. . .
End Sub
</SCRIPT>

Параметры

язык_программирования
параметр, который указывает на то, каким языком будет написан скрипт. Например JavaScript или VisualBasic.

Замечания

Вы не можете вызывать метод MapPath (объект Server) в подпрограмме Application_OnEnd.

Событие Application_OnStart

Данное событие активизируется, когда активируется новая сессия, такая, как, к примеру, Session_OnStart. Только встроенные объекты Application и Server доступны. Обращение к объектам Session, Request или Response в подпрограмме Application_OnStart вызовет ошибку.

Синтакс:

<SCRIPT LANGUAGE=язык_программирования RUNAT=Server>
Sub Application_OnStart
. . .
End Sub
</SCRIPT>

Параметры

язык_программирования
параметр, который указывает на то, каким языком будет написан скрипт. Например JavaScript или VisualBasic.


Подключение файлов (include)

Подключение (include) файлов

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

<!--#include virtual="myScript.asp"-->

<!--#include file="myScript.asp"-->

Многие, кстати, используют расширение .inc для подключаемых файлов. Любое расширение подойдет в данном случае.

Замечание: Включеаемые файлоы всегда выполняются и включаются перед! ASP скриптом на текущей страничке. И та страница, которая имеет IF'ы или CASE'ы для выборного подключения файлов всегда включают файл ПЕРЕД выполнением скрипта!


Обзор встроенных ASP-объектов

Обзор встроенных объектов ASP

Объект Application

Коллекции:
Contents
StaticObjects
Методы:
Lock
Unlock
События:
Application_OnEnd
Application_OnStart

Объект ObjectContext

Методы:
SetAbort
SetComplete
События:
OnTransactionAbort
OnTransactionCommit

Объект Request

Коллекции:
ClientCertificate
Cookies
Form
QueryString
ServerVariables
Свойства:
TotalBytes
Методы:
BinaryRead

Объект Response

Коллекции:
Cookies
Свойства:
Buffer
CacheControl
Charset
ContentType
Expires
ExpiresAbsolute
IsClientConnected
PICS
Status
Методы:
AddHeader
AppendToLog
BinaryWrite
Clear
End
Flush
Redirect
Write

Объект Server

Свойства:
ScriptTimeout
Методы:
CreateObject
HTMLEncode
MapPath
URLEncode


Объект ObjectContext

Описание объекта ObjectContext

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

Когда ASP содержит директиву @TRANSACTION, то страница запускается в транзакции и не заканчивает выполнения до тех пор, пока транзакция не будет успешно или не успешно завершена.

Методы:

  • ObjectContext.SetComplete
  • ObjectContext.SetAbort

События:

  • OnTransactionCommit
  • OnTransactionAbort
Метод ObjectContext. SetComplete

Метод SetComplete переопределяет действия любого предыдущего метода SetAbort, вызванной из скрипта.

Синтакс:

ObjectContext.SetComplete

Метод ObjectContext. SetAbort

Метод SetAbort прекращает транзакцию, инициированную ASP-скриптом.

Синтакс:

ObjectContext.SetAbort

Событие OnTransactionCommit

Данное событие активизируется, когда ASP-скрипт его инициирует. Когда возникает OnTransactionCommit то IIS будет обрабатывать скрипт процедуры OnTransactionCommit если таковая существует.

Событие OnTransactionAbort

Данное событие активизируется, когда транзакция прерывается. Когда возникает OnTransactionAbort то IIS будет обрабатывать скрипт процедуры OnTransactionAbort если таковая существует.


Объект Request

Описание объекта Request

Описываемый объект является, также как и объект Response, очень полезным и мощным встроенным инструментом. Данный объект ряд методов, коллекций и свойств. Их описание приводится ниже:

Коллекции:

  • Request.ClientCertificate
  • Request.Cookies
  • Request.Form
  • Request.QueryString
  • Request.ServerVariables

Методы:

  • Request.BinaryRead

Свойства:

  • Request.TotalBytes
Коллекция Request.ClientCertificate

Коллекция ClientCertificate (Клиентский сертификат - элемент авторизации) позволяет получать поля сертификации (определенные стандартом X.509) из запроса браузера.

Если браузер использует протокол SSL3.0/PCT1 (другими словами используется URL, начинающийся с https:// вместо http://) для подключения к серверу то сервер затребует сертификацию, на что браузер должен будет вернуть поля сертификации.

Если сертификат не был передан, то коллекция ClientCertificate вернет EMPTY (пусто).

Перед тем, как вы сможете использовать ClientCertificate-коллекцию вы должны сконфигурировать свой сервер так, чтобы он требовал клиентский сертификат.

Синтакс:

Request.ClientCertificate( ключ [подполе] )

Параметры:

ключ
Указанное имя поля сертификата, которое вы хотите получить. Клиентский сертификат содержит следующие поля:

Значение | Описание
Certificate | Строка, содержащая двоичный поток всего содержимого сертификата в формате ASN.1
Flag Множество флажков, которые предоставляют дополнительныю информацию о клиентском сертификате. Следующее количество флажков определено:

ceCertPresent - клиентский сертификат предоставлен (имеется).

ceUnrecognizedIssuer - последняя сертификация в данной цепи получена от неизвестного издателя. Т.е. не ясно, кто издал (подписал) сертификат.

Замечание: Для того, чтобы получить данные флажки, вы должны включить включаемый файл сертификата клиента в ваш ASP-файл. Если вы используете VBScript, подключите файл cervbs.inc, в случае с JavaScript - подключите файл cerjavas.inc. Эти файлы инсталируются в папку \InetPub\ASPSamp\Samples.
Issuer | Строка, содержащая список подполей, содержащих информацию о издателе сертификата. Если это значение указано (задано вами при вызове) без подполей, то колекция ClientCertificate возвратит вам список подполей со значениями, разделенный запятыми. К примеру: C=US, O=Verisign и так далее.
SerialNumber | Строка, содержащая серийный номер сертификата в виде ASCII строки, представленной в виде шестнадцатиричных байт, разделенных тире. К примеру 04-67-А3-С7
Subject | Строка, которая содержит список значений подполей, которые в свою очередь содержат информацию о объекте авторизации (о персоне). Если это значение указано без подполей, то ClientCertificate-коллекция вернет список подполей, разделенный запятой, к примеру C=US, O=Msft и так далее.
ValidFrom | Дата, указывающая на то, когда сертификат прошел подписание. Эта дата соответствует VBScript - формату и зависит от региональных установок. К примеру это (для USA) 9/26/96 11:59:59 pm
ValidUntil | Дата, указывающая на то, когда истечет срок действия указанного сертификата.

подполе
не обязательный параметр, который вы можете использовать для получения индивидуальных полей в каждом из Subject или Issuer ключах. Этот параметр добавляется к параметру ключ как суффикс. К примеру - IssuerO или SubjectCN. Далее представлен список таких подполей.

Значение | Описание
C | Указывает название страны происхождения
CN | Указывает общее имя пользователя. Данное подполе может быть использовано только с ключем Subject
GN | Указывает полученное имя
I | Указывает на инициалы
L | Указывает место расположения (локализацию)
O | Указывает название компании или организации
OU | Указывает название подразделения компании
S | Указывает штат или регион
T | Указывает на описание (заголовок) данной персоны или же организации

Значения подполей, не приведенных в данном списке могут быть идентифицированны по их определению в ASN.1. Формат ASN.1 представляет из себя список чисел, разделенных точкой. К примеру 3.56.7886.34.

Замечание:

Вы можете использовать тспользовать цикл, для того, чтобы получить все названия и значения ключей коллекции:

<%
For each key in Request.ClientCertificate
response.write(key & ":" & Request.ClientCertificate(key) & "<br>")
Next
%>

Примеры:

Следующий пример показывает как можно узнать о том, есть ли у пользователя сертификат или нет.

<%
If len(Request.ClientCertificate("Subject")) = 0
Response.Write("Клиентский сертификат отсутствует!")
End if
%>

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

<% = Request.ClientCertificate("IssuerCN") %>

Следующий пример показывает пример проверки на название организации - субъекте клиентского сертификата.

<%
If (Request.ClientCertificate("Subject") = "Msft" )
Response.Write("Хороший выбор компании :))!!!")
End if
%>

Следующий пример выводит сообщение о дате прекращения действия настоящего сертификата.

Данный сертификат прекратит свое действие
<% = Request.ClientCertificate("ValidUntil") %>

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

<!--#include file="cervbs.inc# -->
<%
If Request.ClientCertificate("Flags") and ceUnrecognizedIssuer then
Response.Write "Неизвестный издатель сертификата!"
End if
%>

Коллекция Request.Cookies

Коллекция Cookies (информация, позволяющая хранить информацию о сессии) позволяет получать значения cookies, переданных в запросе HTTP.

Синтакс:

Request.Cookies( cookie ) [ (ключ) | .атрибуты ]

Параметры:

cookie
Указанное имя cookie, значения которых вы хотите получить.
ключ
Необязательный параметр, используемый для получения значения подключа из коллекции данных cookie.
атрибуты
Специфическая информация о самих cookie. Данный параметр может иметь следующий вид:

Значение | Описание
HasKeys | Только для чтения. Указывает, содержит ли cookies указанные ключи

Замечание:

Вы можете получать доступ к подключам коллекции информации (cookie) включая значение для ключа. Если cookies доступен с указанием ключа, то все ключи возвращаются в виде обычной строки запроса (как метод GET). К примеру, если MyCookie имеет два ключа First и Second и вы не указываете к какому из этих ключей вы обращаетесь вызывая Request.Cookies, то вам будет возвращена следующая строка:

First=значение_ключа_first&Second=значение_ключа_second

Если двое cookie под одинаковыми именами были переданы браузеру, то Request.Cookies возвратит одну из них, но ту, у которой более глубокая структура (наибольшая глубина вложенности). К примеру если передаются двое cookie под одинаковыми именами, но один имеет атрибут /www/ а другой /www/home/, то клиентский браузер передаст обе cookie в директорию /www/home/, но Request.Cookies возвратит только вторую.

определения того, еслть ли cookie с таким названием в их наборе, вы можете использовать следующий скрипт:

<% = Request.Cookies("MyCookie").HasKey %>

Если MyCookie имеются, то возвратится TRUE, иначе FALSE.

Вы можете использовать итератор в цикле с Cookie-коллекцией для перебора ключей. Смотрите пример ниже:

<%
'Печатаем всю коллекцию Cookie
For each cookie in Request.Cookies
if not cookie.HasKey then
'Печатаем строку cookie
%>
<% = cookie %> = <% = request.Cookies(cookie)%>
<%
Else
For each key in Request.Cookies(cookie)
%>
<% = cookie %> (<% = key %>) = <% = Request.Cookies(cookie) (key) %>
<%
Next
End if
Next
%>

Коллекция Request.Form

Коллекция Form позволяет получать значения из формы элементов, посланных HTTP запросом при использовании метода POST.

Синтакс:

Request.Form( элемент ) [ ( индекс ) | .Count ]

Параметры:

элемент
Название элемента формы, значение которого предпологается получить
индекс
Не обязательный параметр, который позволяет вам получить доступ к одному из значений параметра (в том случае если передано не одно значение). Это может быть любое значение (целочисленное) в диапазоне от 1 до Request.Form(элемент).Count.

Замечание:

Коллекция Form индексируется по именам параметра в теле запроса. Значение Request.Form(элемент) является массивом все значений этого элемента, встретившихся в теле запроса. Вы можете определить количество значений переданных из формы путем вызова следующей конструкции: Request.Form(элемент).Count. Если параметр имеет единственное значение связанное с ним и счетчик возвращается равным 1. Если же параметр (элемент) не найден совсем, то счетчик вернет 0.

Для описания многозначного определения элемента формы вы должны указать значение индекса. Параметр индекс может присутствовать любое число от 1 до Request.Form(элемент).Count. Если вы описываете один из множества значений элементов без указания значения индекса, то возвращаемое значение примет вид строки, значения в которой разделены запятыми.

Когда вы используете параметры с Request.Form ваш сервер преобразует (разбирает) тело HTTP запроса и возвращает указанные данные. Если выше приложение требует использования не разобранных (не преобразованных) данных запроса, то вам необходимо вызвать Request.Form но без параметров.

Вы можете использовать итератор цикла для вывода все данных запроса (из формы). Пример, следующий ниже, показывает, что если пользователь заполнил форму указав два значения, Конфеты и Зефир в меню Любимые Кондитерские Изделия (параметр с именем Sweets), то , вы сможете получить следующие значения используя пример:

<% For each item In Request.Form("Sweets")
response.write(item & "<br>")
next
%>

При выполнении данного примера вы увидите следующее:

Конфеты
Зефир

Такой же вывод может быть сделан с использованием цикла For...Next, что и демонстрирует следующий пример

<% For i=1 to Request.Form("Sweets").Count
response.write(Request.Form("Sweets") (i) & "<br>")
next
%>

Вы можете использовать итератор цикла для вывода имени параметра, как показано ниже:

<% For Each x In Request.Form("Sweets")%>
Request.Form( <%= x %> ) = <% request.from (x) %> <br>
<% next %>

Данный скрипт возвратит браузеру следующий текст:

Sweets = Конфеты
Sweets = Зефир

< align="justify">Примеры:

Используем следующую форму:

<FORM ACTION = "/scripts/submit.asp" METHOD = "post">
<P>Ваше имя: <INPUT NAME = "firstname" SIZE = 48>
<P>Какокие сладости вы предпочитаете: <SELECT NAME = "sweets">
<OPTION>Конфеты
<OPTION>Зефир
<OPTION>Шоколад
<OPTION>Леденцы</SELECT>
<p><INPUT TYPE = SUBMIT>
</FORM>

Вот такой запрос будет посылать наша форма на сервер:

firstname=Марат&sweets=Конфеты

Далее идет наш скрипт:

Добро пожаловать, <%= Request.Form("firstname") %>.
Ваши любимые сладости - <%= Request.Form("sweets") %>!

Наш скрипт породит следующий результат:

Добро пожаловать, Марат. Ваши любимые сладости - Конфеты!

Коллекция Request.QueryString

Коллекция QueryString получает значения переменных их HTTP-строки запроса. Строка запроса определяется значениями, следующими за знаком вопроса (?). Некоторые различные процессы могут генерировать строку запроса. Для примера, таг анкор

<a href="example?string=this is sample">Строка примера</a>

вырабатывает значение с имененм String и значением "this is sample". Строка запроса также генерируется при передачи данных при обработке формы или прямым вводом строки пользователем прямо в браузер (строка адреса).

Синтакс:

Request.QueryString( переменная ) [ ( индекс ) | .Count ]

Параметры:

переменная
Имя переменной, через котурую будет передаваться значение.
индекс
Не обязательный параметр, который позволяет вам получить доступ к одному из значений параметра (в том случае если передано не одно значение). Это может быть любое значение (целочисленное) в диапазоне от 1 до Request.QueryString(элемент).Count.

Замечание:

Коллекция QueryString это разобранный вариант (преобразованный) из переменной QUERY_STRING в коллекции ServerVariables. Это позволяет вам получать переменные из QUERY_STRING по имени. Значение Request.QueryString(элемент) это массив всех значений элемента которые встречаются в пременной QUERY_STRING. Вы можете определить число значений данного элемента вызовом Request.QueryString(элемент).Count.
Если элемент имеет всего одно значение, то этот вызов вернет 1, если же такого элемента нет вовсе, то результат будет 0.

Примеры:

Клиентский запрос:

/scripts/directory-lookup.asp?name=fred&age=22

Результат мы видим в следующей строке (QUERY_STRING):

name=fred&age=22

Коллекция QueryString содержит в данном случае 2 члена - это name и age. Вы можете воспользоваться следующим скриптом:

Добро пожаловать, <%= Request.QueryString("name") %>.
Ваш возраст - <%= Request.Form("age") %>!

И получим:

Добро пожаловать, Fred. Ваш возраст - 22.

Коллекция Request.ServerVariables

Коллекция ServerVariables позволяет получать значения предопределенных переменных окружения.

Синтакс:

Request.ServerVariables( переменная )

Параметры:

переменная
Указывает имя переменной (а точнее константы) среды (окружения) сервера.
Она может быть одной из следующих значений:

Переменная | Описание
ALL_HTTP | Все HTTP-заголовки, переданные клиенту.
ALL_RAW | Получает все заголовки в виде RAW. Различие между ALL_RAW и ALL_HTTP в том, что ALL_HTTP размещается как HTTP_ префикс перед именем заголовка, а имя заголовка всегда строчное. В ALL_RAW имя заголовка и значение присутствуют в том виде, в котром они получены клиентом.
APPL_MD_PATH | Получает мета-путь (WAM) к приложению для ISAPI Dll.
APPL_PHYSICAL_PATH | Получает физический путь указывающий на расположение мета-путя. IIS конвертирует APPL_MD_PATH к физическому (директории) пути и возвращает это значение.
AUTH_PASSWORD | Значение, введенное клиентом в диалоге авторизации. Эта переменная доступна только при основной (Basic) авторизации.
AUTH_TYPE | Метод авторизации, который сервер использует для проверки прав пользователей, когда применяется попытка получить скрипт, защищенный паролем.
AUTH_USER | Не обработанное имя пользователя (прошедшего авторизацию).
CERT_COOKIE | Уникальный ID (идентификатор) для клиентского сертификата, возвращается как строка. Может быть использован как подпись сертифицированного клиента.
CERT_FLAGS | бит0 - если установлен (1) - сертификат присутствует бит1 - если установлен - в случае, когда авторизация клиента прошла не успешно. Не удалось опознать пользователя.
CERT_ISSUER | Издатель сертификата (O=MS,OU=IAS,CN=user name, C=USA).
CERT_KEYSIZE | Число бит, используемое в SSL, к примеру 128.
CERT_SECRETKEYSIZE | Размер (в битах) секретного ключа на сервере. (К примеру 1024).
CERT_SERIALNUMBER | Поле серийного номера клиентского сертификата.
CERT_SERVER_ISSUER | Издатель серверного сертификата.
CERT_SERVER_SUBJECT | Субъект серверного сертификата.
CERT_SUBJECT | Субъект клиентского сертификата.
CONTENT_LENGHT | Длина содержимого (в том виде, как взято клиентом).
CONTENT_TYPE | PТип данных в содержимом. Используется с запросами, которые прилагают информацию вместе с запросом, такие как GET, POST,UT.
GATEWAY_INTERFACE | Версия спецификации CGI, используемая на сервере. В формате CGI/Версия.
HTTP_<HeaderName> Значение, запоминаемое в заголовке HeaderName. Любой заголовок, приведенный в данной таблице должен начинаться с HTTP_.

Замечание. Сервер интерпретирует любой символ подчеркивания в HeaderName как тире в в настоящем заголовке. К примеру если вы укажете HTTP_MY_HEADER, то сервер пошлет заголовок, как MY-HEADER.
HTTPS | Возвращает ON если запрос прошел через SSL-протокол или же возвращает OFF если пакет не был защищен.
HTTPS_KEYSIZE | Число бит (размер) SSL-ключа, к примеру 128.
HTTPS_SECRETKEYSIZE | Число бит (размер) SSL секретного ключа на сервере, к примеру 1024.
HTTPS_SERVER_ISSUER | Издатель серверного сертификата.
HTTP_SERVER_SUBJECT | Владелец серверного сертификата.
INSTANCE_ID | Текущий идентификатор для IIS в текстовом формате. Если он равен 1, то это представляется в виде строки.
INSTANCE_META_PATH | Мета-путь к тому приложению, которое будет отвечать на запрос.
LOCAL_ADDR | Возвращает адрес сервера (IP), который связан с ним в IIS. Это важно на машинах, которые отзываются на многое количество IP адресов.
LOGON_USER | Windows NT учетная запись пользователя, который зарегистрирован на нем.
PATH_INFO | Информация о пути, в том виде, как ее получает клиент. Вы можете использовать скрипт, который использует виртуальный путь и PATH_INFO сервера. Если это информация, пришедшая из URL, то она декодируется сервером, прежде, чем ее получит CGI скрипт.
PATH_TRANSLATED | Преобразованный вариант PATH_INFO, который берет путь и, по необходимости, производится преобразование виртуальный -> физический.
QUERY_STRING | Строка с параметрами, передаваемая в запросе после знака вопроса (?).
REMOTE_ADDR | Адрес удаленного хоста, произведшего запрос.
REMOTE_HOST | Имя удаленног хоста, сделавшего запрос. Если сервер не имеет этой информации, то точно установит REMOTE_ADDR, а данную константу оставит пустой.
REMOTE_USER | Непреобразованное имя, переданное пользователем.
REQUEST_METHOD | Метод, который использовался, чтобы сделать запрос. Для протокола HTTP это GET, POST, HEAD.
SCRIPT_NAME | Виртуальный путь к скрипту, который запускается. Используется URL.
SERVER_NAME | Имя сервера, как хоста, DNS alias или IP адрес.
SERVER_ROOT | Номер порта, по которому был получен запрос.
SERVER_PORT_SECURE | Строка, содержащая 0 или 1. Если запрос обрабатывается защищенным портом, то значение 1, в противном случае 0.
SERVER_PROTOCOL | Имя и версия протокола запроса. Формат - протокол/версия
SERVER_SOFTWARE | Название и версия програмного обсеспечения, под которым стоит сервер. Формат следующий: название/версия
URL | Хранит основную порцию URL.

Замечание:

Если клиент передает заголовок подругому, нежели указано в таблице, то вы можете получить его значение, используя префикс HTTP_ в вызове Request.ServerVariables. Для примера рассмотрим вариант, если клиент отсылает такой заголовок:

SomeNewHeader: SomeNewValue

Вы сможете получить данный заголовок, используя следующий скрипт:

<% Request.ServerVariables("HTTP_SomeNewHeader") %>

а также вы можете воспользоватся изощренным скриптом, чтобы напечатать все серверные переменные в таблицу.

<table>
<tr><td><b>Переменная</b></td><td><b>Значение></b></td></tr>
<% For each name In Request.ServerVariables %>
<tr><td> <% = name %> </td><td> <% = request.ServerVariables(name) %> </td></tr>
</table>
<% Next %>

Примеры:

Следующий пример демонстрирует использование объекта Request чтобы показать различные серверные переменные.

<HTML>
<!-- This example displays the content of several ServerVariables. -->
ALL_HTTP server variable =
<%= Request.ServerVariables("ALL_HTTP") %> <BR>
CONTENT_LENGTH server variable =
<%= Request.ServerVariables("CONTENT_LENGTH") %> <BR>
CONTENT_TYPE server variable =
<%= Request.ServerVariables("CONTENT_TYPE") %> <BR>
QUERY_STRING server variable =
<%= Request.ServerVariables("QUERY_STRING") %> <BR>
SERVER_SOFTWARE server variable =
<%= Request.ServerVariables("SERVER_SOFTWARE") %> <BR>
</HTML>

Следующий пример использует коллекцию ServerVariables чтобы вставить имя сервера в гиперссылку:

<A HREF = "http://<%= Request.ServerVariables("SERVER_NAME") %>
/scripts/MyPage.asp">Link to MyPage.asp</A>

Метод Request.BinaryRead

Синтакс:

численное_значение = Request.BinaryRead (счетчик)

Параметры:

численное_значение
массив беззнаковых байт, возвращенный данным мотодом. Этот параметр будет иметь тип VT_ARRAY | VT_UI1.
счетчик
перед запуском, указывается как много байт нужно прочитать от клиента. После этого метод будет выполнен, то счетчик будет содержать количество байт, удачно считанных от клиента. Общее число байт, которое будет в действительности прочитано меньше или равно Request.TotalBytes.

Замечание:

Метод Request.BinaryRead используется для чтения потока данных, переданных от клиента, как часть POST-запроса. Данный метод использует низкоуровненный доступ к этим данным. А, к примеру, Request.Form предоставляет вам теже данные, но предварительно преобразованные и рассортированные. Если вы вызвали в скрипте Request.BinaryRead вы никак не можете использовать в последующем метод Request.Form для получения данных из формы, в противном случае это приведет к ошибке.
Аналогично, используя в скрипте описание, присваивание и т.д. элементам формы через Request.Form вы уже не сможете воспользоваться методом Request.BinaryRead так как это приведет к ошибке.

Пример:

Следующий пример демонстрирует использования метода Request.BinaryRead для того, чтобы записать содержимое запроса в ваш массив.

<%
Dim binread
Dim bytecount
bytecount = Request.TotalBytes
binread = Request.BinaryRead(bytecount)
%>

Свойство Request.TotalBytes

Данное свойство позволяет определить количество байт, которые клиент посылает серверу в теле запроса. Данное свойство является доступным только для чтения.

Синтакс:

счетчик = Request.TotalBytes

Параметры

счетчик
параметр которому будет присвоено значение, возвращенное данным свойством.

Пример:

Следующий пример показывает как можно получить размер клиентского запроса (в байтах), посланных серверу.

<%
Dim bytecount
bytecount = Request.TotalBytes
%>


Объект Response

Описание объекта Response

Описываемый объект является очень полезным и мощным инструментом. Данный объект имеет несколько методов, их описание приводится ниже:

Коллекции:

  • Response.Cookies

Методы:

  • Response.Write
  • Response.Redirect
  • Response.End
  • Response.AddHeader
  • Response.AppendToLog
  • Response.BinaryWrite
  • Response.Clear
  • Response.Flush

Свойства:

  • Response.Buffer
  • Response.CacheControl
  • Response.Charset
  • Response.ContentType
  • Response.Expires
  • Response.ExpiresAbsolute
  • Response.IsClientConnected
  • Response.Pics
  • Response.Status

Коллекция Response.Cookies

Коллекция Cookies устанавливает значения для cookies. Если указанные cookies не существуют, то создает их. Если cookie существует, то принимает новое значение, а старое уничтожается.

Синтакс:

Response.Cookies( cookie ) [( ключ ) | . аттрибуты ] = значение

Параметры:

cookie
Имя cookie
ключ
Необязательный параметр. Если он указан, то cookie - это справочник (вложенный) и ключ - это множество значений.
аттрибуты
Указанная информация о самих cookie. Данный параметр может быть один из следующих:

Название | Описание
Domain | Только запись. Если указан, то cookie передаются только по запросу из этого домена.
Expires | Только запись. Дата, когда у cookie истекает срок действия. Эта дата должна быть установлена для того, чтобы cookie записались на клиентский жесткий диск после окончания сессии. Если этот атрибут не установлен, то дата окончания срока действия cookie принимается текущей датой. Cookie прекратят срок действия сразу же по окончании сессии.
HasKey | Только чтение. Указывает на то, содержит ли cookie данный ключ.
Path | Только запись. Если указан, то cookie передаются только по запросу с этого пути. Если параметр не установлен, то используется путь к приложению.
Secure | Только запись. Указывает на то, защищены ли будут cookie или нет.

значение
Указывает значение, которое необходимо присвоить данному ключу или атрибуту.

Замечание:

Если cookie с ключем созданы так, как показано в следующем скрипте,

<%
Response.Cookies("mycookie")("type1") = "сахар"
Response.Cookies("mycookie")("type2") = "печенье"
%>

то следующий заголовок будет послан:

Set-Cookie:MYCOOKIE=TYPE1=сахар&TYPE2=печенье

Если же присвоить mycookie значение без использования ключей, то это действие разрушит type1 и type2 - ключи. К примеру:

<% Response.Cookies("myCookie") = "шоколадный зефир" %>

В предыдущем примере ключи type1 и type2 будут разрушены и их значения потерены. Mycookie будет теперь содержать в себе значение шоколадный зефир.

Вы также можете проверить существование конкретного ключа следующим способом:

<% = Response.Cookies("myCookie").HasKeys %>

Если будет выведено TRUE, значить такой ключ существует, в случае FALSE - нет.

Метод Response.Write

Синтакс:

Response.Write переменная_или_значение

Параметры:

переменная_или_значение
Данные для вывода на экран браузера через HTML. Этот параметр может быть любого типа, поддерживаемого VisualBasic Scripting Edition. То есть данные могут быть типов: дата, строка, символ, числовые значения. Значение данного параметра не может содержать комбинации %>. Вместо нее можно использовать равнозначную комбинацию %\>. Web-сервер будет преобразовывать эту последовательность в требуемую, когда скрипт будет выполнен.

Примеры:

Следующий пример показывает как работает метод Response.write для вывода сообщения клиенту.

Я просто скажу вам: <%Response.write "Привет всем!!!"%>
А ваше имя <%Response.write(Request.Form("name"))%>

Следующий пример добавляет HTML-таг на web-страничку. Так как данный метод не может содержать комбинацию %>, то мы используем последовательность %\>. Итак пример скрипта:

<% Response.write "<TABLE WIDTH=100%\>" %>

Результатом вывода будет строка: <TABLE WIDTH=100%>

Метод Response.Redirect

Синтакс:

Response.Redirect URL (URL - универсальный описатель ресурсов)

Параметры:

URL
Параметр является универсальным описателем ресурса. Он показывает , када необходимо переадресовать браузер.

Замечание:

Любое вхождение данного метода между тагами <BODY> и </BODY> web-страницы будет проигнорирован. Данный метод может использоваться только в заголовке HTML-страницы. Данный метод передаст заголовок (header) браузеру, если пропущен параметр URL данного объекта в следующем виде:

HTTP/1.0 302 Object Moved
Location URL

Метод Response.End

Синтакс:

Response.End

Замечание:

Если свойство Response.Buffer был установлен в TRUE (истина), то вызывая метод Response.End будет производить очистку буфера, выталкивая данные из него клиенту. Если вы не хотите выводить данные пользователю, вы должны вызвать следующий метод:

<%
Response.Clear
Response.End
%>

Метод Response.AddHeader

Метод AddHeader добавляет HTML-заголовок с определенными значениями. Этот метод всегда добавляет новый заголовок к ответу клиентскому браузеру. Данный метод не заменяет существующий заголовок новым. Добавленный заголовок не может быть удален.

Данный метод применяется только для "продвинутых" задач.

Синтакс:

Response.AddHeader имя_переменной, значение

Параметры:

имя_переменной
Название нового параметры HTML-заголовка.
значение
Устанавливаемое значение, которое будет запомнено в заголовке.

Замечания:

Для корректной работы метода, имя_переменной не должно содержать символа подчеркивания ( _ ). Набор ServerVariables интерпретирует символ подчеркивания как тире в заголовке. Для примера следующий скрипт принуждает сервер найти параметр из HTML-заголовака, называющийся MY-HEADER.

<% Requset.ServerVariables("HTTP_MY_HEADER") %>

Так как HTTP протокол требует, чтобы все параметры заголовка были переданы до начала тела HTML-страницы, то вы должны вызывать метод AddHeader в вашем скрипте до того, как начнется описание <Body>...</Body>. Имеется одно исключение. Если значение свойства Buffer установлено в истину (true), тогда вы можете писать AddHeader в любой точке скрипта, но до первого вызова метода Flush . В противном случае вызод метода AddHeader вызовет ошибку.

Пример:

Следующие два .ASP-файла демонстрируют последнее замечание.

----------------------------Файл 1.ASP----------------------------
<% Response.AddHeader "Внимание!", "Текст сообщения об ошибке"%>
<HTML>
ваш текст на страничке
</HTML>

В данном примере страница не буферируется. Скрипт работает однако AddHeader вызывается перед тем, как сервер будет производить вывод в HTML клиенту.

-------------------------Файл 2.ASP------------------------------
<% Response.Buffer = true %>
<HTML>
здесь идет некоторая информация вашей странички...
<%Response.AddHeader "Внимание!", "сообщение об ошибке"%>
<%Response.Flush%>
<%Response.Write("некий текст")%>
<HTML>

Во втором примере страница буферируется и как ресультат сервер не выдает текст клиенту до тех пор, пока не кончится сам скрипт или пока не встретится метод Flush . Вы можете использовать данный метод для того, чтобы отослать несколько копий некоторого параметра заголовка с различными значениями, как с заголовком WWW-Authenticate.

Метод Response.AppendToLog

Метод AppendToLog добавляет строку в конец файла отчета (log-file) web-сервера. Вы можете вызывать этот метод столько раз, сколько вам необходимо. Каждый раз при вызове метода в файл отчета сервера будет записана указанная вами строка.

Синтакс:

Response.AppendToLog значение

Параметры:

значение
Текст, который будет добавлен к фалу отчета web-сервера. Данная строка не может содержать символ запятой (,). Причем общая длина добавляемой строки не должна превышать 80 символов.

Замечания:

Для использования данной возможности вам необходимо, чтобы опция URI Query была разрешена на панели "расширенных свойств ведения log-файла" для данного web-сервера в IIS.

Метод Response.BinaryWrite

Метод BinaryWrite позволяет записывать указанную информацию в текущий HTTP-вывод без какого-либо преобразования символов. Этот метод удобен для вывода нестроковой информации, такой как двоичные данные, требуемые каким-либо приложением.

Синтакс:

Response.BinaryWrite данные

Параметры:

данные
Данные, предназначенные для HTTP-вывода.

Пример:

Если у вас есть объект, порождающий байтовый массив, вы можете использовать следующий вызов данного метода для передачи этого массива какому-либо приложению, запущенному на клиентской машине.

<% Set BinGen = Server.CreateObject(My.BinaryGenerator)
Pict = BinGen.MakePicture
Response.BinaryWrite Pict
%>

Метод Response.Clear

Метод Clear стирает всю забуферированный HTML-вывод. Однако данный метод не стирает информаицю из буфера, связанную с заголовком. Вы можете использовать данный метод для управления ошибками. Однако выполнение данного метода будет приводить к ошибке если свойство Response.Buffer не истина (true).

Синтакс:

Response.Clear

Метод Response.Flush

Метод Flush передает буферированный вывод незамедлительно. Этот метод приведет к ошибке если свойство Response.Buffer не установлено в истину (true).

Синтакс:

Response.Flush

Замечание:

Если Flush -метод вызывается ASP страницой, то сервер не учитывает запросы "Keep-Alive" к этой странице.

Свойство Response.Buffer

Свойство Response.Buffer указывает на необходимость буферирования вывода. Когда вывод буферизован сервер не передает вывод клиенту-браузеру сразу до тех пор, пока либо не закончится выполнение данного скрипта или не встретится метод Flush или End .

Данное свойство не может быть установлено после того, как сервер уже передаст вывод клиенту. Поэтому данное свойство должно инициироваться в первой строке скрипта.

Синтакс:

Response.Buffer [=flag]

Параметры:

flag
Указывает нужно ли буферизировать вывод или нет. Параметр может принимать одно из двух значений:
TRUE - необходимо буферизировать вывод.
FALSE - не нужно буферизировать.

Замечания:

Если текущий ASP-скрипт установил буферизацию вывода, и не вызвал метода Flush , то сервер не учитывает Keep-Alive - запросы сделанные клиентом. Это сохраняет время, так как серверу не нужно создавать новое соединение на клиентский запрос.
Однако, буферизация приводит к тому, что вывод происходит лишь после полного выполнения скрипта, а для больших программ это может повлечь значительную задержку в выводе на клиентский браузер.
Вы можете использовать ASPBufferingOn - свойство для того, чтобы установить значение по умолчанию для всех скриптов выполняемых на сервере.

Свойство Response.CacheControl

Данное свойство предъизменяет установленное по умолчанию значение. Когда вы устанавливаете свойство в значение Public, то Proxy-сервер может кэшировать вывод, генерируемый ASP-ом.

Синтакс:

Response.CacheControl [= cache control header]

Параметры:

Cache control header
Этот параметр управления заголовком может быть либо Public либо Private.

Свойство Response.CharSet

Свойство CharSet позволяет добавлять название кодовой таблицы символов (к примеру, WINDOWS-1251) в HTML заголовок, строку content-type (тип содержимого).

Синтакс:

Response.CharSet имя_кодовой_таблицы

Параметры:

имя_кодовой_таблицы
Строка, которая указывает кодовую таблицу для данной HTML-страницы. Наименование данной кодовой таблицы будет добавлено в заголовок HTML-файла под параметром "content-type".

Пример:

Для ASP-страницы, для которой не использовано свойство Response.Charset параметр "content-type" в заголовке будет следующим:

content-type:text/html

Если же ASP-файл содержит компанду

<%Response.Charset("Windows-1251")%>

то в заголовке поле content-type будет иметь вид

content-type:text/html; charset=Windows-1251

Замечание:

Данная функция вставляет любую строку в заголовок и не проверяет ее правильность.

Если страничка содержит несколько тагов Response.Charset, то каждый последующий будет заменять значение на свое собственное.

Свойство Response.ContentType

Свойство ContentType позволяет указывать вид (тип) содержимого HTML-файла. Если данное свойство не использовано, то по умолчанию принимается text/html.

Синтакс:

Response.ContentType [=тип_содержимого]

Параметры:

тип_содержимого
Строка, описывающая тип содержимого HTML. Эта строка обычно имеет вид "тип/подтип", где тип это основная категория содержимого и подтип - указывает тип содержимого. Для получения полного списка поддерживаемых типов - обратитесь к документации к браузеру или спецификации HHTP.

Пример:

Следующий пример илюстрирует установку типа содержимого как Формат Определения Каналов (Push-каналы).

<% Response.ContentType = "application/x-cdf" %>

Второй пример демонстрирует установку свойства в наиболее общеизвестные значения.

<% Response.ContentType = "text/HTML" %>
<% Response.ContentType = "image/GIF" %>
<% Response.ContentType = "image/JPEG" %>

Свойство Response.Expires

Свойство Expires указывает промежуток времени пока страница HTML закешированная браузером считается не утратившей силу (срок хранения). Если пользователь запрашивает закешированную страницу у браузера, у которой не вышел срок "хранения", то браузер возвращает ее прямо из своего кэша.

Синтакс:

Response.Expires [=число]

Параметры:

число
Количество времени в минутах перед тем, как страница будет считаться "просроченной". Установка этого значения в 0 заставляет данную страницу становится "просроченной" незамедлительно.

Замечание:

Если данное свойство установлено более чем один раз на странице, то используется самое маленькое значение.

Свойство Response.ExpiresAbsolute

Свойство ExpiresAbsolute указывает время и дату, после которого страница HTML закешированная браузером считается утратившей силу (вышел срок хранения). Если пользователь запрашивает закешированную страницу у браузера, у которой не вышел срок "хранения", то браузер возвращает ее прямо из своего кэша. Если время указано (а дата указана), то "срок хранения" данной страницы истекает в полночь этого дня. Если ни время ни дата не указаны, то значение присваивается в соответствии с днем и временем, когда был запущен скрипт.

Синтакс:

Response.ExpiresAbsolute [= [дата] [время]]

Параметры:

дата
Указывает на дату истечения "срока хранения". Формат даты должен соответствовать стандврту RFC-1123 .

время
Указывает на время, когда у страницы истекает "срок хранения". Данное значение переводится в формат GMT (время по Гринвичу) перед тем, как заголовок будет передан клиенту.

Замечание:

Если данное свойство определяется более одного раза на странице, то момент истечения "срока хранения" принимается самым скорым из всех указанных значений.

Пример:

Следующий пример указывает что "срок хранения" страницы истечет в 13:30:15 31 мая 1998 года.

<% Response.ExpiresAbsolute = #May 31,1998 13:30:15# %>

Свойство Response.IsClientConnected

Данное свойство является значение только для чтения, то есть этому свойству нельзя присваивать никаких значений. Это свойство указывает на то, подключен ли клиент или уже не подключен к серверу, определенное в последнем из Response.Write .

Синтакс:

Response.IsClientConnected ( )

Замечание:

Это свойство позволяет вам определять моменты, когда пользователь подключен, и когда отключен от сервера. К примеру, длина периода времени между тем когда сервер ответил и когда клиент сделал запрос дает уверенность в том, что клиент еще подключен и есть смысл продолжить выполнение скрипта.

Пример:

<%
'посмотрим, подключен ли пользователь
If Not Response.IsClientConnected Then
'получаем номер сессии и закрываем сессию
Shutdownid = Session.SessionID
'подготовка к закрытию сессии
Shutdown(Shutdownid)
End If
%>

Свойство Response.Pics

Данное свойство позволяет добавить значение поля pics-label в заголовок ответа.

Синтакс:

Response.PICS (PICSLabel)

Параметры

PicsLabel
Строка, которая преобразована в формат PICS - метку. Значение указанное в этом параметре добавляется в заголовок ответа в поле PICS.

Пример:

Для ASP-файла включающего:

<% Response.PICS("(PICS-1.1 <http://www.rsac.org/ratingv01.html> labels on " & chr(34) & "1997.01.05T08:15-0500" until "1999.12.31T23:59-0000" ratings (v 0 s 010 n 0))%>

Следующий заголовок будет сформирован

PICS-label:(PICS-1.1 <http://www.rsac.org/ratingv01.html> labels on "1997.01.05T08:15-0500" until "1999.12.31.T23:59-0000" rating (v 0 s 0 1 0 n 0))

Замечание:

Это свойство позволяет вам вставлять любые строки в заголовок, независимо от корректности строк.
Если страничка содержит множество тагов содержащих Response.PICS, то каждая последующая будет заменять значение предыдущей.

Свойство Response.Status

Данное свойство позволяет указывать строку состояния, возвращаемую сервером. Значения статуса определены в спецификации HTTP.

Синтакс:

Response.Status = описание_состояния

Параметры

описание_состояния
Строка, которая содержит и трех цифровой номер, который указывает код статуса и также краткое описание данного кода. К примеру, 310 Move Permanently.

Пример:

Следующий пример показывает установку статуса:

<% Response.Status = "401 Unauthorized" %>

Замечание:

Используйте это свойство чтобы модифицировать строку, возвращаемую сервером.


Объект Server

Описание объекта Server

Описываемый объект позволяет получать доступ к серверу через меоды и свойства. Большинство из этих методов и свойств используются как утилитные функции.

Методы:

  • Server.CreateObject
  • Server.HTMLEncode
  • Server.MapPath
  • Server.URLEncode

Свойства:

  • Server.ScriptTimeout
Метод Server.CreateObject

Данный объект создает экземпляр серверного компонента. Если компонент был описан в OnStartPage и OnEndPage методах, то OnStartPage - метод вызовет его в этот момент.

Синтакс:

Server.CreateObject( идентификатор_программы )

Параметры:

идентификатор_программы
Указывает тип объекта, который будет создан. Формат идентификаотра_программы следующий: [владелец]Компонент[.Версия].

Замечания:

По умолчанию, объекты создаются методом Server.CreateObject из вашей страницы. Это подразумевает, что объект будет автоматически уничтожен как только сервер завершит обработку данной ASP-страницы.

Для создания объекта в виде сессии или приложения вы можете также использовать тэг <OBJECT> и установить атрибут SCOPE в значение SESSION или APPLICATION или сохранить объект в переменной сессии или приложения.

К примеру, объект сохранен в переменной сессии, как показано в следующем скрипте, и будет удален, когда объект Session будет утилизирован. А также тогда, когда истекло максимальное время сессии или же был вызван метод Abandon.

<% Set Session("ad") = Server.CreateObject("MSWC.AdRotator") %>

Вы также можете уничтожить объект установив переменную копии объекта в значение Nothing или присвоить ей новое значение, как показано выше. Первый пример удаляет объект Ad. Второй заменяет Ad строкой.

<% Session("Ad") = Nothing %>
<% Session("Ad") = "Какая-то строка текста" %>

Вы не можете создать экземпляр объекта с тем же именем, что и сам встроенный объект. К примеру, следующий скрипт вызовет ошибку:

<% Set Response = Server.CreateObject("Response") %>

Примеры:

<% Set MyAd = server.CreateObject("MSWC.AdRotator") %>

Приведенный пример показывает создание серверного компонента MyAd, как экземпляр встроенного компонента MSWC.AdRotator который может быть использован для автоматизации рекламной акции на web-страницах.

Метод Server.HTMLEncode

Данный метод позволяет установить HTML-кодировку указанной строке.

Синтакс:

Server.HTMLEncode ( строка)

Параметры:

строка
Указанная строка для преобразования.

Примеры:

Следующий скрипт

<% = Server.HTMLEncode("Тэг параграфа - <p>") %>

выведет следующий текст:

Тэг параграфа - &lt;P&gt;

Замечание:

Но на броузере предыдущий пример отобразит:

Тэг параграфа - <p>

Если вы смотрите источник или открываете страничку как текст, то вы будете иметь возможность видеть преобразованный HTML.