Архитектура Microsoft Windows для разработчиков


Занятие 4. Создание HTTP-ответа

(Продолжительность занятия 15 минут)

Определив, что именно пользователь запрашивает в HTTP-запросе, Вы можете вернуть ему необходимую информацию с помощью свойств и методов объекта Response. На этом занятии Вы узнаете, как пользоваться объектом Response для создания ответа на HTTP-запрос.

 
Изучив материал этого занятия, Вы сможете:

  • перечислить и описать общие свойства и методы объекта Response;
  • используя метод Write объекта Response, добавлять текст в HTTP-ответ;
  • использовать метод Redirect объекта Response для перехода на другую Web-страницу;
  • буферизировать ответ

Объект Response

Объект Response позволяет манипулировать информацией, передаваемой пользователю в виде HTTP-ответа.

Свойства и методы

Объект Response снабжен свойствами и методами, предназначенными для отправки информации пользователю. Некоторые свойства объекта Response вкратце описаны в приведенной ниже таблице.

Свойство

Описание

Buffer

Указывает, буферизован ли ответ

Expires

Указывает, как долго страница может храниться в кэше программы просмотра

ExpiresAbsolute

Указывает дату и время, когда страница должна быть удалена из кэша программы просмотра (т.е. когда она будет считаться устаревшей)

 

В следующей таблице перечислены некоторые методы объекта Response.

 

Метод

Описание

Clear

Очищает любые буферизованные ответы

End

Останавливает обработку Web-страницы и возвращает информацию, полученную на этот момент

Flush

Немедленно отправляет буферизованный ответ

Redirect

Посылает пользователю сообщение о переадресовке, которое направит программу просмотра по другому URL

Write

Записывает значение переменной в виде строки в текущий HTTP-ответ

 

Объект Response также содержит набор Cookies, который Вы можете использовать для установки значения агента.

Синтаксис объекта Response

Синтаксис Для свойств и методов объекта Response применяется следующий синтаксис:

Response.свойство метод

 
Пример Здесь свойству Expires объекта Response присваивается значение 0 — содержимое ответа, возвращенного пользователю, будет считаться устаревшим сразу же после отправки:

<% Response.Expires = 0 %>


Если пользователь возвратится на эту Web-страницу, Web-сервер обновит ее содержимое перед отображением.

Метод Write

Метод Write добавляет текст в HTTP-ответ. Синтаксис Синтаксис метода Write таков:

Response.Write вариант

Здесь вариант — это любой тип данных (в том числе символы, строки и целые числа), который поддерживается выбранным по умолчанию языком создания

сценариев.

Вариант не может содержать комбинацию символов %>, так как она обозна-чает конец сценария. Если это необходимо, воспользуйтесь escape-последователь-ностью %\>, которую Web-сервер преобразует при обработке сценария.

 
Примечание Если в качестве языка создания сценариев по умолчанию Вы при-меняете VBScript, вариант не может содержать более 1 022 символов.

 
Пример Здесь метод Write используется в цикле для вывода значений каждого стандартного элемента управления HTML формы, присланной в HTTP-запросе:

<%For Each Item In Request.Form

Response.Write Item

Next %>


 
Пример Здесь тэг HTML добавляется на Web-страницу. Строка, возвращаемая методом Write, не может содержать символы %> в тэге HTML, поэтому вместо них используется escape-последовательность %\>:

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


Метод Redirect

Метод Redirect применяется для переадресации на другую Web-страницу.

В качестве аргумента метода Redirect объекта Response задается указатель ресурса новой страницы.

Синтаксис Для метода Redirect применяется следующий синтаксис:

Response.Redirect URL

Здесь URL — абсолютный или относительный указатель ресурса, куда перенаправляется программа просмотра.

 
Примечание Применив метод Redirect после отправки информации пользователю, Вы получите сообщение об ошибке.

 
Пример Здесь метод Redirect используется для отображения страницы в разных разрешениях в зависимости от параметров экрана компьютера-клиента:

<%

If Request.ServerVariables("HTTP_UA_PIXELS") = "640х480" Then

Response.Redirect "lo_res.htm"

Else

Response.Redirect "hi_res.htm"

End If


Помещение значений в форму

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

Чтобы выяснить, заполнена ли форма, проверьте, содержат ли элементы управления HTML какие-нибудь значения. Если нет — пользователь еще не заполнял форму, и поэтому Вам нужно отобразить ее пустой бланк.

 
Пример Здесь выводится пустая форма:

<% If IsEmpty (Request("txtName")) Then

'Вывести форму

Else

'Форма была отправлена

End If %>


Буферизация ответа

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

 
Примечание Ожидание завершения обработки сервером всех сценариев иногда значительно задерживает ответ. Отправлять ответ пользователю по частям, не дожидаясь конца обработки, позволяет метод Flush объекта Response.

А теперь запустите видеоролик Chap10b.exe, который находится на прилагаемом к книге компакт-диске. Он познакомит Вас с применением буферизации в IIS.

Установка свойства Buffer

Чтобы включить режим буферизации, присвойте свойству Buffer значение True. Свойство Buffer нельзя устанавливать после того, как сервер отправил ответ пользователю, поэтому лучше всего задавать его в первой строке ASP-файла.

 
Пример Здесь свойству Buffer присваивается значение True:

Response.Buffer = Tru


Обработка ошибок в режиме буферизации

Если во время обработки активной страницы в режиме буферизации возникла ошибка, примените метод Redirect объекта Response, предварительно очистив буфер методом Clear.

 
Пример Чтобы при возникновении ошибки очистить буфер и направить пользователя на страницу, сообщающую об ошибке, введите следующий код:

Response.Buffer = True

On Error Resume Next

'Код, который может вызвать фатальную ошибку,

'например, невозможность подключиться к данным If Err.number <> 0 Then

Response.Clear

Response.Redirect "error.him"

End If


Резюме

Выяснив, какую информацию запрашивает пользователь, Вы можете создать ответ средствами объекта Response. Свойства и методы объекта Response позволяют оперировать информацией, передаваемой клиенту. Чаще всего применяются следующие свойства этого объекта: Buffer, Expires и ExpiresAbsolute. Наиболее популярные методы объекта Response — Clear, End, Flush, Redirect и Write.

Метод Write добавляет текст в HTTP-ответ, а метод Redirect обеспечивает переход к другому ресурсу. Свойство Buffer позволяет предотвратить отправку Web-сервером HTTP-ответа пользователю до завершения обработки всех серверных сценариев данной активной страницы.