Разработка INTRANET приложений

         

Встроенные объекты


Как было сказано выше существует пять встроенных объектов, используемых в программах сценариев: Application, Request, Response, Server иSession.

Объект Application служит для обмена информацией между пользователями данного приложения. Например, можно реализовать простой счетчик обращений к серверу:

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

Методы Lock и Unlock используются для блокирования изменений свойств объекта и для отмены этого запрета соответственно. Также объект Application может реагировать на два события - OnStart и OnEnd. Эти методы используются путем написания соответствующего кода в глобальном файле GLOBAL.ASA. Об этом будет рассказано в разделе "Глобальный файл".

Рассмотрим использование объекта Request на примере традиционной задачи - формы, заполняемой пользователем. Для начала необходимо создать форму. В качестве значения атрибута ACTION тега <FORM> нужно указать имя ASP-файла, например, formdemo.asp, и установить метод передачи данных POST. Пусть форма состоит из четырех текстовых полей ввода с именами UserName, UserAddress, UserEMail и UserComm. Пользователь заполняет форму и нажатием кнопки Submit отсылает ее на сервер. Что происходит на сервере? Получая команду SUBMIT, объект Request готов к обработке полей формы, то есть к отображению содержимого полей формы, сохранению их в файле или базе данных. Для отображения полей записи файл formdemo.asp может выглядеть следующим образом:

<HTML> <BODYBGCOLOR=greenTEXT=white> <%IfRequest.Form("UserName")= "" Then %> <H4> Форма заполнена некорректно. Для исправления нажмите кнопку Back. </H4> <%Else%> Получена следующая информация:<BR> <PFONTSIZE=3> Имя: <% =Request.Form("UserName") %><BR> Адрес: <% =Request.Form("UserAddress") %><BR> E-Mail: <% =Request.Form("UserEMail") %><BR> Комментарии:<% =Request.Form("UserComm") %><BR> </P> <%EndIf%> </BODY> </HTML>


Существует ряд других методов объекта Request, на которые можно обратить внимание. Например с помощью коллекции ServerVariables можно получать доступ к серверным переменным:

'адрес, с которого пришел запрос <%Response.WriteRequest.ServerVariables("REMOTE_ADDR")%> 'поддерживаемые клиентом языки <%Response.WriteRequest.ServerVariables("HTTP_ACCEPT_LANGUAGE")%>

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

<% ForEachxInRequest.Form %> Request.Form(<% =x %> = <% =Request.Form(x) %> <BR> <% Nextx %>

Объект Responseиспользуется для посылки информации пользователю. Метод Redirect этого объекта служит для переключения на другую страницу, как локальную, так и удаленную, адрес которой задается в формате URL:

<% Response.Redirect ("URL") %>

Метод Write является одним из базовых методов объекта Response. С его помощью информация посылается непосредственно клиенту. Например, если мы хотим вывести текущие дату и время, можно использовать следующий код:

<% Response.Write "Локальное время: <B>" & Now & "</B> %>



Объект Serverимеет четыре метода: CreateObject, HTMLEncode, MapPath и URLEncode. Метод CreateObject служит для создания экземпляров серверных компонентов. Примеры использования рассматриваются ниже. Метод HTMLEncode используется для вывода на экран тегов языка HTML. Например, вызов этого метода:

<% Response.WriteServer.HTMLEncode("Для выделения текста используются теги <B> и </B>") %>

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

Для выделения текста используются теги <B> и </B>

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

Для выделения текста используются теги &lt;B&gt; и &lt;/Bgt;

Метод MapPath предназначен для преобразования относительных и виртуальных маршрутов в каталоги на сервере. Вот пример использования этого метода:



LogFile=Server.MapPath ("/Login") & "\input\logfile.txt" SetOutStreamFileObject.CreаteTextFile (Logfile, True, False)

Метод URLEncode предназначен для преобразования адресов в формате URL. Например, вызов этого метода:

<% Response.WriteServer.URLEncode("www.cpress.ru") %>

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

www%2Ecpress%2Eru

С помощью свойства ScriptTimeout объекта Server можно задать время выполнения сценария.

Объект Session используется для хранения переменных в течение одной сессии работы с сервером. Методы для обработки событий OnStart и OnEnd помещаются в глобальный файл GLOBAL.ASA. Соответствующие примеры использования указаны в разделе "Глобальный файл".

Глобальный файл

Глобальный файл GLOBAL.ASA располагается в корневом каталоге сервера (виртуальном корневом каталоге). Отметим, что корневой каталог сервера доступен из всех подкаталогов, и, таким образом, файл GLOBAL.ASA доступен из всех ASP-страниц. При необходимости он располагается и в корневом каталоге приложения, выполняемого на сервере, но этот каталог также должен быть объявлен как виртуальный корневой каталог. Как мы уже говорили, в файле GLOBAL.ASA могут быть использованы два встроенных объекта:Application и Session. С помощью объекта Application можно создавать глобальные переменные для всех ASP-страниц, а с помощью объекта Session можно создавать переменные, "видимые" в рамках одной сессии. В файле GLOBAL.ASA также можно открывать сеансы связи с базами данных.

Например, для использования методов OnStartиOnEnd объекта Application можно написать следующий код:

<SCRIPTLANGUAGE=VBScriptRUNAT=Server> SubApplication_OnStart 'эта подпрограмма выполняется, когда на узел приходит первый пользователь ENDSUB ... SubApplication_OnEnd 'эта подпрограмма выполняется при выключении сервера или изменении содержимого файла global.asa ENDSUB </SCRIPT>

Обратите внимание на расширенный синтаксис тега <SCRIPT>. Атрибут RUNAT указывает на то, что данный скрипт выполняется на сервере.

Пример использования тех же методов, но объекта Session выглядит очень похоже:



<SCRIPTLANGUAGE=VBScriptRUNAT=Server> SubSession_OnStart 'эта подпрограмма выполняется в начале сессии ENDSUB ... SubSession_OnEnd 'эта подпрограмма выполняется в конце сессии ENDSUB </SCRIPT>

Серверные компоненты

AdRotator, BrowserCapabilities, DatabaseAccess, ContentLinking и FileAccess.

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

<CENTER> Добро пожаловать на наш сервер! <BR> <% SetAd = ServerCreateObject("MSWC.Adrotator") %> <% =Ad.GetAdvertisement("advert.txt") %> </CENTER>

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

width 460 height 60 border 1 * advert1.gif http://www.cpress.ru/subscriptions/ Subscribeto "ComputerPress"! 20   advert2.gif http://www.cpress.ru/books/ Readourbooks 20   advert3.gif http://www.microsoft.com UselegalMicrosoftsoftware! 30

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

С помощью компонента BrowserCapabilities можно получать различную информацию о клиентском броузере. Приведем несколько примеров использования этого компонента. Например, мы можем узнать тип и версию клиентского броузера:



<% Setbc = Server.CreateObject("MSWC.BrowserType") %> Приветствуем на сервере пользователя броузера <B><% =bc.Browser %> версии <% =bc.Version %> </B>!

Затем можно определить, поддерживает ли клиентский броузер фреймы. На сервере может быть два набора страниц - с фреймами и без них. Определив, умеет ли клиентский броузер отображать фреймы или нет, можно загружать соответствующий набор страниц:

<% Setbc = Server.CreadteObject("MSWC.BrowserType" %> <% If (bc.Frames = TRUE) Then Response.Write "Есть поддержка фреймов!" Else Response.Write "Нет поддержки фреймов!" EndIf %>

Также перед отправкой страницы, содержащей программу на каком-либо скриптовом языке, полезно было бы определить, поддерживает ли броузер этот скриптовый язык. Например, для проверки поддержки языка VBScript можно написать такой код:

<% Setbc = Server.CreateObject("MSWC.BrowserType") %> <% If (bc.VBScript = TRUE) Then Response.Write "Есть поддержка VBScript" Else Response.Write "Нет поддержки VBScript" EndIf %>

Компонент DatabaseAccess обеспечивает доступ к данным, хранящимся в базах данных. Рассмотрение этого компонента вынесено в отдельный раздел.

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

Компонент FileAccess использует объекты FileSystemObject и TextStream и обеспечивает доступ к хранимым на сервере файлам. Вот пример использования этого компонента:

<% 'создадим файл SetFileObject = CreateObject("Scripting.FileSystemObject") SetFile = FileObject.CreateTextFile("user.txt", True) 'запишем данные в файл File.Writeline(Now()) File.Writeln(Request.ServerVariables("REMOTE_ADDR")) File.Writeln(Request.ServerVariables("REMOTE_HOST")) 'закроем файл File.Close %>


Содержание раздела