Asp объект request


Содержание

Введение в ASP

Этот текст предназначен для тех, кто никогда не имел дела с ASP, и вообще смутно себе представляет возможности программирования на стороне сервера. Я ставил себе задачу, создать у читателя общее представление о предмете. Отдельные неточности при этом менее важны, пожалуйста, громко не ругайтесь.

Общие сведения

ASP (Active Server Pages) – это мощная технология от Microsoft, позволяющая легко разрабатывать приложения для WWW. ASP работает на платформе Windows NT и IIS (Internet Information Server), начиная с версии 3, хотя вроде есть реализации на других платформах. ASP – это не язык программирования, это внутренняя технология, позволяющая подключать программы к Web-страницам. Основа успеха ASP – простой скриптовый язык (Visual Basic Script или Java Script) и возможность использования внешних COM-компонент.

Как это все происходит?

Вы пишите программу и складываете в файл на сервере. Браузер клиента запрашивает файл. Файл сначала интерпретируется сервером, на выходе производится HTML-код. Этот HTML посылается клиенту. Файлы с программами имеют расширение .asp. Файлы asp – это обычные текстовые файлы, содержащие исходные тексты программ. Файлы делаются с помощью любого текстового редактора. Каталог, в котором размещены файлы asp должен иметь права на выполнение, так как сервер исполняет эти файлы, когда браузер их запрашивает. Собственно программы пишутся на любом скриптовом языке, который установлен в системе. По умолчанию поддерживаются VBScript и JavaScript. Можно доустановить другие (например, Perl). Если ничего специально не указывать используется VBScript. В дальнейшем будем ссылаться только на него. Программные фрагменты заключаются в скобки . Можно ставить открывающую скобку в начале файла, закрывающую – в конце, все что между ними – программа на Visual Basic’е.

Какие средства есть для программирования?

Web – нормальная среда программирования, если правильно понять, что есть что. В VBScript есть все нормальные конструкции структурного программирования (if, while, case, etc). Есть переменные (описывать не обязательно, тип явно не задается). Поддерживаются объекты. Работа с ними обычная – Object.Property, Object.Method. Есть ряд встроенных объектов (Request, Response, Session, Server, Connection, Recordset). Можно доустанавливать другие компоненты (скачивать, покупать, программировать), например для работы с электронной почтой.

Вывод

Понятия «экран», куда можно выводить данные нет. Все, что надо показать пользователю, выбрасывается в выходной поток на языке HTML. Браузер пользователя интерпретирует этот HTML. Для упрощения вывода существует объект Response. Вывод осуществляется с помощью метода Write.

Так производится запись во внутренний буфер объекта Response. Когда скрипт заканчивает работу, весь буфер выдается клиенту. Надо заметить, что клиент получает «чистый» HTML, таким образом программы на ASP не зависят от клиентского ПО, что очень важно. Если внутри выводимой строки нужно использовать кавычку, кавычка удваивается. Другие методы и свойства Response позволяют управлять выводом. Так Response.Buffer регулирует, получает ли клиент данные по мере из записи в Response, или все сразу по завершении исполнения страницы. Метод Response.Redirect перенаправляет браузер на другую страницу. Чтобы им пользоваться, нельзя до него на странице использовать Response.Write.

Программа на ASP не может явно спросить пользователя о чем-то. Она получает данные из других страниц, либо через URL. Передаваемые параметры помещаются во входной поток и доступны через объект Request. Чтобы передать переменную var в программу test.asp, надо написать:

Чтобы из программы получить значение этой переменной, надо написать:

Несколько переменных разделяется знаком &:

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

При этом пользователь увидит форму из одного поля ввода (var1), в нем будет значение по умолчанию «default». Второе поле (var2) будет невидимо и будет передавать всегда фиксированное значение «var2value». Кнопка «Submit Form» завершает заполнение формы и передает все переменные на test.asp (action). Если method=»get», переменные передаются через URL (test.asp?var1=default&var2=var2value). Если method=»post», передаются вместе с запросом так, что внешне передача переменных не заметна. В вызываемой программе безразлично, какой метод изпользовался (почти). Если у вас нет специальных аргументов за метод GET, используйте метод POST.

Формы

Формы HTML используются для организации диалога с пользователем. Поддерживаются стандартные элементы управления. Все многообразие задается немногими тэгами:

  • INPUT (с параметром TYPE=)
  • SELECT
  • TEXTAREA

Описание – в документации по HTML.

Взаимосвязь между отдельными страницами

Обычно сервер WWW не хранит состояние приложения, т.е. все запросы взаимонезависимы, и нет стандартного способа понять, что несколько запросов пришли от одного и того же пользователя. Но это очень нужно для разработки полноценных приложений и является одной из главных проблем разработки Web-приложений.

Один из методов решения этой проблемы — cookies. Пользователю при первом обращении выдается специальный идентификатор, после этого браузер пользователя предъявляет этот идентификатор при каждом обращении, и сервер может распознать, что это тот же самый пользователь. Пользователь может отключить cookies, в этом случае этот метод не работает.

ASP, используя cookies, предоставляет программисту более простое средство — объект Session (сессия). Сессия стартует, когда новый пользователь обращается к любому asp-файлу приложения. Сессия заканчивается при отсутствии активности пользователя в течение 20 минут, либо по явной команде. Специальный объект Session хранит состояние сессии. Туда можно записывать переменные, которые доступны из любой страницы в этой сессии. Записать данные в этот объект можно просто:

Считать потом еще проще:

Сессия, таким образом, – это еще один метод передачи данных между страницами. Одна страница пишет данные в сессию, другая – берет потом оттуда.

Наряду с объектом Session существует объект Application. Если сессия создается для каждого нового пользователя, до Application существует в единственном экземпляре, и может использоваться всеми страницами приложения.

Управление приложением

Программисту предоставляется возможность реагировать на 4 события: старт/стоп приложения и старт/стоп каждой сессии. Для реализации этих событий предназначен файл global.asa, который должен располагаться в корневом каталоге приложения. Вот его примерный скелет:

Нужно «просто» вписать Ваш код на соответствующее место. Нужно заметить, что отлаживать код для global.asa довольно непросто, так как он выполняется при очень специфических обстоятельствах (к примеру при старте или остановке сервера).

Использование внешних компонент

Если на сервере установлены дополнительные компоненты, их можно использовать из ASP. Стандартные объекты (например из библиотек ADO (Connection и Recordset) и Scripting (Dictionary, FileSystemObject)) доступны всегда. Установка новой компоненты обычно состоит в копировании dll-файла в каталог на сервере и ее регистрации с помощью программы regsvr32.exe. [В COM+ используется своя процедура инсталляции объектов, это однако не влияет на использования объектов.]

Создать экземпляр объекта можно так:

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

Пожалуйста всегда обнуляйте все ссылки на объекты, когда они больше не нужны. Теоретически это должно происходить автоматически при завершении процедуры/страницы, однако в стандартной сборке мусора есть определенные «проблемы».

В остальном использование компоненты зависит от самой этой компоненты.

Работа с базами данных

Из ASP можно легко и просто работать с любыми базами данных. Это делается через две промежуточные технологии: ODBC и ADO.

ODBC позволяет организовать доступ к любым базам данных через унифицированный интерфейс с помощью языка SQL. Специфика конкретных СУБД учитывается при помощи специальных драйверов БД. Такие драйверы существуют для всевозможных СУБД (в частности SQL Server, Oracle, Access, FoxPro). Поддержка ODBC обеспечивается на уровне операционной системы Windows (NT). Настройка – через Control Panel/ODBC. Базовым понятием является источник данных или data source. Источник данных – это совокупность сведений о базе данных, включая ее драйвер, имя компьютера и файла, параметры. Чтобы пользоваться базой надо создать источник данных для нее. Важно, чтобы источник данных был «системным», в отличии от «пользовательского». После этого надо лишь знать имя источника данных. [В настоящее время ODBC отступает перед натиском технологии OLE DB. На практике это однако практически ничего не изменяет. Вместо имени источника данных нужно использовать Connection String, в которой указывается имя ODBC-драйвера и все его параметры.]

ADO – это совокупность объектов, доступных из ASP, позволяющих обращаться к источнику данных ODBC [или OLE DB]. Фактически нужны лишь 2 объекта – Connection, представляющий соединение с базой данных и Recordset, представляющий набор записей, полученный от источника. Сначала необходимо открыть соединение, потом к нему привязать Recordset, потом, пользуясь методами Recordset’а, обрабатывать данные. Вот пример:

Если команда SQL не возвращает данных, recordset не нужен, надо пользоваться методом Conn.Execute(SQL_COMMAND).

Если Вы хотите вызывать хранимые процедуры сервера БД с параметрами, нужно воспользоваться объектом Command, который в свою очеред содержит объекты Parameter.

Методики программирования, советы

Описание переменных

VBScript — очень нетребовательный к программисту язык. Так он не требует описывать переменные и не содержит явных типов данных. Все переменные принадлежат одному типу Variant. Из-за отсутствия описаний могут произойти очень трудно обнаруживаемые ошибки. Одна опечатка может стоить полдня поисков.

Однако, есть возможность явно потребовать описания переменных. Для этого первой строкой в ASP-файле нужно написать Option Explicit. После этого обращение к переменной, которая не была объявлена с помощью Dim, вызывает ошибку с указанием номера строки.

Кстати, где расположены описания Dim в процедуре — совершенно не важно. Они могут стоять как до использования переменной, так и после, и даже в цикле. Видимо они отрабатываются препроцессором. Явно задать тип переменной с помощью Dim Var as Typ, как в Visual Basic, все равно нельзя.

Чередование ASP/HTML

Если нужно выдать большой кусок HTML, можно не пользоваться Response.Write. Если в asp-файле встречается кусок текста вне скобок , он трактуется просто как HTML, который надо вывести. Пример:

Обработка ошибок

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

Включение других файлов

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

Важно: все includes в тексте отрабатываются до исполнения файла. Т.е. даже если include стоит внутри if, то сначала будут включены все includes во всех ветках, и только потом, во время исполнения, будет принятно решение, какую ветку выполнять. Т.е. следующий код не дает условного включения файлов:


Обработка форм

Если надо что-то спросить у пользователя и на основании этого что-то сделать, в простейшем случае создается два файла: один с формой, второй – с ее обработчиком. Обработчик выполняет все действия. Пример:

Рекурсивная обработка форм

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

Переменные HTTP

Запрос от браузера, кроме запрашиваемой страницы несет еще некоторые данные. Эти данные, например, IP-адрес клиента, доступны через специальные переменные объекта Request. IP-адрес – Request(«REMOTE_ADDR»). Другие — см.документацию (ASPSampSamplessrvvar.asp).

Переадресация

Очень легко написать на ASP скрипт, который будет производить некоторые расчеты, и в зависимости от результатов переадресовывать браузер на разные URL (например, подставлять нужный баннер). Делается это так:

Только надо следить, чтобы до выполнения команды redirect ничего не было записано в Response (даже коментарии HTML).

Электронная почта

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

Но это приводит к тому, что при отправке формы делается попытка на клиентской машине запустить почтовую программу и создать новое сообщение с данными формы. Если это не получается (почтовая программа не настроена, пользователь не отправил почту, и т.д.) — письмо и не будет отправлено. Гораздо надежнее работает серверное решение.

Для этого существуют внешние компоненты, есть и бесплатные. Например, компонента Jmail от Dimac. Все, что для нее нужно – это адрес SMTP-сервера. Вот пример ее использования:

Ссылки

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

ASP Request Object

The ASP Request object is used to get information from the user.

QueryString Collection Examples

Send query information when a user clicks on a link
This example demonstrates how to send some extra query information to a page within a link, and retrieve that information on the destination page (which is, in this example, the same page).

A QueryString collection in its simplest use
This example demonstrates how the QueryString collection retrieves the values from a form. The form uses the GET method, which means that the information sent is visible to everybody (in the address field). The GET method also limits the amount of information that can be sent.

How to use information from forms
This example demonstrates how to use the values retrieved from a form. We use the QueryString collection. The form uses the get method.

More information from a form
This example demonstrates what the QueryString contains if several input fields have the same name. It shows how to separate input fields with equal names from each other. It also shows how to use the Count keyword to count the «name» property. The form uses the get method.

Form Collection Examples

A form collection in its simplest use
This example demonstrates how the Form collection retrieves the values from a form. The form uses the POST method, which means that the information sent is invisible to others, and it has no limits (you can send a large amount of information).

How to use information from forms
This example demonstrates how to use the values retrieved from a form. We use the Form collection. The form uses the post method.

More information from a form
This example demonstrates what the Form collection contains if several input fields have the same name. It shows how to separate input fields with equal names from each other. It also shows how to use the Count keyword to count the «name» property. The form uses the post method.

A form with radio buttons
This example demonstrates how to interact with the user through radio buttons, with the Form collection. The form uses the post method.

A form with checkboxes
This example demonstrates how to interact with the user through checkboxes, with the Form collection. The form uses the post method.

Other Examples

Get the server variables
This example demonstrates how to find out the visitors (yours) browser type, IP address, and more with the ServerVariables collection.

Create a welcome cookie
This example demonstrates how to create a Welcome Cookie with the Cookies Collection.

Find the total number of bytes the user sent
This example demonstrates how to use the TotalBytes property to find out the total number of bytes the user sent in the Request object.

Request Object

When a browser asks for a page from a server, it is called a request. The ASP Request object is used to get information from the user. Its collections, properties, and methods are described below:

Collections

Collection Description
ClientCertificate Contains all the field values stored in the client certificate
Cookies Contains all the cookie values sent in a HTTP request
Form Contains all the form (input) values from a form that uses the post method
QueryString Contains all the variable values in a HTTP query string
ServerVariables Contains all the server variable values

Properties

Property Description
TotalBytes Returns the total number of bytes the client sent in the body of the request

Methods

Method Description
BinaryRead Retrieves the data sent to the server from the client as part of a post request and stores it in a safe array

Get Your Diploma!

W3Schools’ Online Certification Program is the perfect solution for busy professionals who need to balance work, family, and career building.

The HTML Certificate is for developers who want to document their knowledge of HTML, XHTML, and CSS.

The JavaScript Certificate is for developers who want to document their knowledge of JavaScript and the HTML DOM.

The XML Certificate is for developers who want to document their knowledge of XML, XML DOM and XSLT.

The ASP Certificate is for developers who want to document their knowledge of ASP, SQL, and ADO.

The PHP Certificate is for developers who want to document their knowledge of PHP and SQL (MySQL).

WEB HOSTING
Web based charting
for ASP.NET
$15 Domain Name
Registration
Save $20 / year!
Buy UK Domain Names
Register Domain Names
Cheap Domain Names
Cheap Web Hosting
Best Web Hosting
PHP MySQL Hosting
Top 10 Web Hosting
UK Reseller Hosting
Web Hosting
FREE Web Hosting
WEB BUILDING
Website Templates
Flash Templates
Website Builder
Internet Business Opportunity
Custom Programming
FREE Trial or Demo
Web Content Manager
Forms,Web Alerts,RSS
Download XML editor
FREE Flash Website
FREE Web Templates
EDUCATION
US Web Design Schools
HTML Certification
JavaScript Certification
XML Certification
PHP Certification
ASP Certification

W3Schools is for training only. We do not warrant the correctness of its content. The risk from using it lies entirely with the user.
While using this site, you agree to have read and accepted our terms of use and privacy policy.
Copyright 1999-2009 by Refsnes Data. All Rights Reserved.

Web-формы

Класс Page

Класс System.Web.UI.Page является базовым для классов создаваемых страниц. В локальных приложениях такую роль играет класс Form . Это значит, что динамические страницы наследуют множество полезных свойств и методов класса Page . Класс Page служит контейнером имен всех элементов управления, входящих в состав страницы. ASP.NET создает новое виртуальное пространство имен, гарантирующее всем дочерним элементам управления уникальность имен в пределах всего дерева элементов управления.

Свойства класса Page можно разделить на три группы:


  1. Внутренние объекты
  2. Рабочие свойства
  3. Специфические страничные свойства

На данном этапе мы коснемся только первой группы свойств.

Когда ASP.NET загружает страницу в память сервера, она создает объект , порожденный от класса Page . Одновременно создаются объекты первой группы и их имена становятся свойствами страницы-объекта. В эти объекты записывается информация , важная для управления всей страницей. Перечислим свойства-объекты страницы.

HOME or Top of Page Printer Friendly
Внутренние объекты ASP.NET в составе класса Page
Свойство-объект Порождающий класс Описание
Application System.Web.HttpApplicationState Содержит информацию о состоянии приложения
Cache System.Web. Caching . Cache Следит за приоритетностью и устареванием элементов
Request System.Web.HttpRequest Содержит текущий запрос HTTP
Response System.Web.HttpResponse Осуществляет отправку ответа клиенту
Server System.Web.HttpServerUtility Предоставляет вспомогательные методы для отправки Web-запросов
Session System.Web.SessionState.HttpSessionState Управляет данными, связанными с определенным пользователем
Trace System.Web.TraceContext Осуществляет трассировку выполнения страницы
User System.Security. Principal .IPrincipal Представляет пользователя, от которого поступил запрос

Объекты Session, Application, Cache

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

Объект Application содержит словарь данных имя=значение, глобальных для всего приложения.

Объект Cache также хранит глобальную информацию, но предоставляет более динамичный механизм хранения, поскольку ASP.NET может удалять в нем часть информации при нехватке памяти сервера. Это тоже коллекция объектов имя=значение, однако здесь для каждого элемента можно также устанавливать специализированные политики истечения срока и определять зависимости.

Объект Request

Этот объект представляет значения и свойства HTTP -запроса, вызвавшего загрузку страницы. Он содержит все параметры URL и другую информацию, отправляемую клиентом. Мы можем использовать объект Request , чтобы обнаружить, какой броузер используется клиентом, или устанавливать и анализировать cookie -наборы ( куки ). Ниже приведены наиболее распространенные свойства класса System.Web.HttpRequest , порождающего объект Request

Свойства класса System.Web.HttpRequest
Свойство Порождающий класс Описание
ApplicationPath string Виртуальный каталог приложения ASP.NET
PhysicalPath string Реальный каталог приложения ASP.NET
AnonymousID string Однозначно идентифицирует текущего пользователя при включенном анонимном доступе
Browser System.Web.HttpBrowserCapabilities Содержит свойства, которые описывают различные возможности броузера пользователя. Например, поддержку элементов управления ActiveX , cookie -наборов, активных сценариев, фреймов и т.д.
ClientCertificate System.Web.HttpClientCertificate Предоставляет сертификат безопасности для текущего запроса, если таковой существует
Cookies System.Web.HttpCookieCollection Предоставляет коллекцию cookie -наборов, прибывших с текущим запросом (постингом)
FilePath string Возвращает реальный путь (относительно сервера) к файлу страницы, запустившей процесс выполнения
CurrentExecutionFilePath string Содержит реальный путь новой страницы, если мы программно переместили пользователя на новую страницу с помощью метода Server. Transfer () без его уведомления (без полного цикла). Иначе содержит то же, что и FilePath
Form System. Collections . Specialized .NameValueCollection Представляет коллекцию переменных формы, поступивших с обратной отсылкой (постингом). В большинстве случаев мы будем извлекать эту информацию из свойств элемента управления вместо использования этого набора
Headers System. Collections . Specialized .NameValueCollection Предоставляет коллекцию HTTP-заголовков имя=значение
ServerVariables System. Collections . Specialized .NameValueCollection Предоставляет коллекцию глобальных серверных переменных имя=значение
IsAuthenticated bool Возвращает true при успешной аутентификации пользователя
IsSecureConnection bool Возвращает true при успешном подключении пользователя по протоколу защищенных сокетов ( Secure Sockets Layer — SSL )
IsLocal bool Возвращает true при запросе пользователем страницы с текущего компьютера
QueryString System. Collections . Specialized .NameValueCollection Предоставляет параметры, переданные клиентом в строке запроса методом get
Url System. Uri Содержит URL-адрес текущей страницы
UrlReferrer System. Uri Содержит URL-адрес страницы, с которой пользователь попал на текущую
UserAgent string Строка, представляющая тип броузера . Для этого свойства в Microsoft Internet Explorer предусмотрено значение MSIE
UserHostAddress string Предоставляет IP-адрес клиента
UserHostName string Предоставляет доменное имя клиента ( DNS — Domain Name System — служба имен доменов)
UserLanguages string Предоставляет отсортированный массив, который перечисляет языковые предпочтения клиента. Может пригодиться при создании многоязычных страниц

Объект Response

Этот объект содержит информацию и методы формирования ответа Web-сервера на запрос клиента. В таблице перечислены основные свойства и методы объекта Response .

Основные свойства и методы объекта Response
Член Тип Описание
BufferOutput bool При установке в true (по умолчанию) страница не отправляется клиенту до тех пор, пока не будет полностью сгенерирована (в отличие от отправки по частям при false )
Cache System.Web.HttpCachePolicy Позволяет конфигурировать кэширование вывода
Cookies System.Web.HttpCookieCollection Содержит коллекцию cookie -наборов, передаваемых вместе с ответом. Можно использовать для добавления дополнительных cookie -наборов
Expires int Это свойство можно использовать для кэширования сгенерированного HTML для страницы, что улучшает производительность последующих запросов
ExpiresAbsolute System. DateTime Это свойство можно использовать для кэширования сгенерированного HTML для страницы, что улучшает производительность последующих запросов
IsClientConnected bool Указывает на то, подключен ли клиент к серверу. Если нет, можно потребовать остановить длинную операцию
Write ( char );

Write ( char [ ], int, int);

Эти методы позволяют записать текст содержимого соответствующего типа непосредственно в поток ответа. Можно даже записать содержимое файла. Эти методы не так важны и не должны использоваться в сочетании с серверными элементами управления , которые сами заботятся о выводе
BinaryWrite( byte [ ]) Эти методы позволяют записать текст содержимого соответствующего типа непосредственно в поток ответа. Можно даже записать содержимое файла. Эти методы не так важны и не должны использоваться в сочетании с серверными элементами управления , которые сами заботятся о выводе
WriteFile(IntPtr, long, long);

WriteFile(string, long, long)

Эти методы позволяют записать текст содержимого соответствующего типа непосредственно в поток ответа. Можно даже записать содержимое файла. Эти методы не так важны и не должны использоваться в сочетании с серверными элементами управления , которые сами заботятся о выводе
Redirect (string);

Redirect (string, bool)

Этот метод направляет пользователя на другую страницу приложения или на другой сайт. Этот метод требует полного цикла с уведомлением пользователя. По сути он отправляет сообщение броузеру, которое заставляет его запросить новую страницу. Метод Server. Transfer () сразу загружает новую страницу и начинает ее обработку. В результате URL, отображаемый в броузере клиента, не меняется. Но этим методом перемещаться на другой сайт нельзя

Объект Server

Основные свойства и методы объекта Server
Член Тип Описание
MachineName string Представляет имя компьютера, на котором запускается страница. Это имя Web-сервера, используемое компьютером с целью его идентификации для остальной части сети
CreateObject(string); Создает экземпляр COM-объекта, определяемый его программным идентификатором progID . Используется для обратной совместимости , поскольку упрощает взаимодействие с COM-объектами в .NET
GetLastError() Извлекает объект самого последнего исключения или нулевую ссылку, если исключения не было. Используется в обработчике событий приложения, проверяющего сбойные ситуации.
HtmlEncode(string); Осуществляет HTML-кодирование строки допустимыми символами, которые не будут восприниматься как управляющие ( > & & amp ; жесткий пробел &nbsp )
HtmlDecode(string); Осуществляет обратную операцию по отношению к HTML- кодированной строке символов
UrlEncode(string); Заменяет обычную строку строкой допустимых символов URL, отменяя пробелы и другие спецсимволы , кодируя кириллицу, %, ?, &
UrlDecode(string); Раскодирует строку символов URL
UrlTokenEncode( byte [ ]) Выполняет те же действия, что и UrlEncode() , но работает с байтовым массивом, который содержит данные в формате Base64
UrlTokenDecode(string) Выполняет те же действия, что и UrlDecode() , но работает с байтовым массивом, который содержит данные в формате Base64
MapPath(string) Возвращает физический файл, соответствующий определенному виртуальному пути файла на Web-сервере
Transfer (string);

Transfer (string, bool);

Transfer (System.Web.IHttpHandler, bool)

Передает исполнение другой Web-странице в текущем приложении. Этот метод похож на метод Response . Redirect () , но работает быстрее. Но его нельзя применять для перемещения пользователя на сайт, расположенный на другом Web-сервере, или же на страницу, отличную от ASP.NET (например, HTML или ASP )

При использовании метода Server. Transfer () не происходит полного цикла. Вместо этого механизм ASP.NET просто загружает новую страницу и начинает ее обработку. В результате URL, отображаемый в броузере клиента, не меняется (. хотели кока, а съели Кука).

Метод Server.MapPath() является еще одним полезным методом. Пусть, например, мы собираемся загрузить файл под названием info.txt из текущего виртуального каталога. Вместо жесткого кодирования пути можно использовать Request .ApplicationPath() , чтобы получить текущий относительный виртуальный каталог. Затем применить метод Server.MapPath() — для преобразования его в абсолютный физический путь.

Объект User

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

Http Request Класс

Определение

Разрешает ASP.NET считывать HTTP-значения, отправленные клиентом во время веб-запроса. Enables ASP.NET to read the HTTP values sent by a client during a Web request.

Примеры

В следующих примерах осуществляется HttpRequest доступ к экземпляру для текущего запроса Request с помощью свойства Page класса. The following examples access the HttpRequest instance for the current request by using the Request property of the Page class.

Можно использовать упрощенный синтаксис для доступа к данным из QueryStringколлекций Form Cookies,, или ServerVariables . You can use simplified syntax for accessing data from the QueryString, Form, Cookies, or ServerVariables collections. Можно написать Request[«key»] . You can write Request[«key»] .

В первом примере показано, как получить значение строки запроса при загрузке страницы. The first example shows how to retrieve a query string value when loading a page.

В следующем примере показано, как проверить, прошел ли запрос проверку подлинности, и получить необработанный URL-адрес. The next example shows how to check if the request is authenticated and retrieve the raw URL.

Для этого раздела доступен проект веб-сайта Visual Studio с исходным кодом: Скачайте. A Visual Studio Web site project with source code is available to accompany this topic: Download.

В этом примере StreamWriter класс используется для записи значений нескольких HttpRequest свойств класса в файл. This example uses the StreamWriter class to write the values of several HttpRequest class properties to a file. Для свойств, имеющих тип String, значения записываются в HTML-кодировке по мере их занесения в файл. For properties that are of type string, the values are HTML encoded as they are written to the file. Свойства, представляющие коллекцию, проходят через цикл, и каждая пара «ключ-значение», которую они содержат, записывается в файл. Properties that represent a collection are looped through, and each key/value pair that they contain is written to the file.

В этом примере имеется текстовое поле, принимающее вводимые пользователем данные, что является потенциальной угрозой безопасности. This example has a text box that accepts user input, which is a potential security threat. По умолчанию данные, вводимые пользователем на веб-страницах ASP.NET, проверяются на наличие скриптов и HTML-элементов. By default, ASP.NET Web pages validate that user input does not include script or HTML elements. Дополнительные сведения см. в разделе Общие сведения об использовании сценариев. For more information, see Script Exploits Overview.

Комментарии

Методы HttpRequest и свойства класса предоставляются Request через свойства HttpApplicationклассов, HttpContext, Pageи UserControl . The methods and properties of the HttpRequest class are exposed through the Request properties of the HttpApplication, HttpContext, Page, and UserControl classes.

Для доступа к данным из QueryStringколлекций Form, Cookies, или ServerVariables можно написать Request[«key»] , как показано в примере для QueryString свойства. To access data from the QueryString, Form, Cookies, or ServerVariables collections, you can write Request[«key»] , as shown in the example for the QueryString property.

Для поддержки Юникода HttpRequest для членов класса требуется IIS версии 6,0 или более поздней. Unicode support for HttpRequest class members requires IIS version 6.0 or later.

Конструкторы

Инициализирует объект HttpRequest. Initializes an HttpRequest object.


Свойства

Получает строковый массив типов приема MIME, поддерживаемых клиентом. Gets a string array of client-supported MIME accept types.

Получает анонимный идентификатор для пользователя, если представлен. Gets the anonymous identifier for the user, if present.

Получает виртуальный путь к корневому каталогу приложения ASP.NET на сервере. Gets the ASP.NET application’s virtual application root path on the server.

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

) для корня приложения (как в «

/page.aspx»). Gets the virtual path of the application root and makes it relative by using the tilde (

) notation for the application root (as in «

Получает или задает сведения о возможностях запрашивающего браузера на клиентской стороне. Gets or sets information about the requesting client’s browser capabilities.

Получает сертификат безопасности клиента, отправившего текущий запрос. Gets the current request’s client security certificate.

Получает или задает набор знаков объекта. Gets or sets the character set of the entity-body.

Указывает длину отправленного клиентом содержимого в байтах. Specifies the length, in bytes, of content sent by the client.

Получает или задает тип MIME содержимого входящего запроса. Gets or sets the MIME content type of the incoming request.

Получает коллекцию файлов Cookie, отправленных клиентом. Gets a collection of cookies sent by the client.

Получает виртуальный путь текущего запроса. Gets the virtual path of the current request.

Получает расширение имени файла, заданного в свойстве CurrentExecutionFilePath. Gets the extension of the file name that is specified in the CurrentExecutionFilePath property.

Получает виртуальный путь текущего запроса. Gets the virtual path of the current request.

Получает коллекцию загруженных с клиента файлов (составной формат MIME). Gets the collection of files uploaded by the client, in multipart MIME format.

Получает или задает фильтр, используемый при считывании текущего потока входных данных. Gets or sets the filter to use when reading the current input stream.

Получает коллекцию переменных формы. Gets a collection of form variables.

Получает коллекцию заголовков НТТР. Gets a collection of HTTP headers.

Получает объект ChannelBinding текущего экземпляра HttpWorkerRequest. Gets the ChannelBinding object of the current HttpWorkerRequest instance.

Получает метод передачи данных НТТР (например, GET , POST или HEAD ), используемый клиентом. Gets the HTTP data transfer method (such as GET , POST , or HEAD ) used by the client.

Получает содержимое входящего объекта НТТР. Gets the contents of the incoming HTTP entity body.

Получает значение, позволяющее определить, прошел ли запрос проверку подлинности. Gets a value indicating whether the request has been authenticated.

Получает значение, которое указывает, был ли запрос отправлен с локального компьютера. Gets a value indicating whether the request is from the local computer.

Получает значение, определяющее, используются ли сокеты безопасности (т. е. HTTPS) в соединении HTTP. Gets a value indicating whether the HTTP connection uses secure sockets (that is, HTTPS).

Получает указанный объект из коллекций QueryString, Form, Cookies или ServerVariables. Gets the specified object from the QueryString, Form, Cookies, or ServerVariables collections.

Получает тип WindowsIdentity для текущего пользователя. Gets the WindowsIdentity type for the current user.

Получает объединенную коллекцию элементов QueryString, Form, Cookies и ServerVariables. Gets a combined collection of QueryString, Form, Cookies, and ServerVariables items.

Получает виртуальный путь текущего запроса. Gets the virtual path of the current request.

Получает дополнительные сведения о пути к ресурсу с расширением URL-адреса. Gets the additional path information for a resource with a URL extension.

Получает физический путь в файловой системе к корневой папке приложения, выполняющегося в данный момент на сервере. Gets the physical file system path of the currently executing server application’s root directory.

Получает физический путь в файловой системе, соответствующий запрашиваемому URL-адресу. Gets the physical file system path corresponding to the requested URL.

Получает коллекцию переменных строки запроса HTTP. Gets the collection of HTTP query string variables.

Получает исходный URL-адрес текущего запроса. Gets the raw URL of the current request.

Получает значение, указывающее, прочитано ли тело сущности запроса, и, если да, как оно было прочитано. Gets a value that indicates whether the request entity body has been read, and if so, how it was read.

Получает экземпляр RequestContext текущего запроса. Gets the RequestContext instance of the current request.

Получает или задает метод передачи данных НТТР ( GET или POST ), используемый клиентом. Gets or sets the HTTP data transfer method ( GET or POST ) used by the client.

Получает коллекцию переменных веб-сервера. Gets a collection of Web server variables.

Получает объект CancellationToken, задействуемый при истечении времени ожидания запроса. Gets a CancellationToken object that is tripped when a request times out.

Получает сведения о привязке токена TLS. Gets the TLS token binding information. Свойство позволяет приложениям извлекать сведения о токенах из входящих HTTP-запросов для расширенных возможностей аутентификации. The property enables applications to retrieve token information from incoming HTTP requests for enhanced authentication.

Получает число байтов в текущем потоке входящих данных. Gets the number of bytes in the current input stream.

Получает значения HTTP-запроса, не активируя его проверку. Gets the HTTP request values without triggering request validation.

Получает сведения об URL-адресе текущего запроса. Gets information about the URL of the current request.

Получает сведения об URL-адресе предыдущего запроса клиента, связанного с текущим URL-адресом. Gets information about the URL of the client’s previous request that linked to the current URL.

Получает исходную строку пользовательского агента, переданную от клиентского браузера. Gets the raw user agent string of the client browser that has been provided. Обратите внимание, что результат может иметь значение null. Please note it may be null.

Получает IP-адрес узла удаленного клиента. Gets the IP host address of the remote client.

Получает DNS-имя удаленного клиента. Gets the DNS name of the remote client.

Получает упорядоченный строковый массив языковых настроек клиента. Gets a sorted string array of client language preferences.

Методы

Принудительно завершает основное подключение TCP, из-за чего любой ВВОД-ВЫВОД дает сбой. Forcibly terminates the underlying TCP connection, causing any outstanding I/O to fail. Этот метод можно использовать в ответ на атаку со стороны вредоносного HTTP-клиента. You might use this method in response to an attack by a malicious HTTP client.

Выполняет чтение двоичного кода заданного числа байтов, содержащихся в текущем потоке входящих данных. Performs a binary read of a specified number of bytes from the current input stream.

Определяет, равен ли заданный объект текущему объекту. Determines whether the specified object is equal to the current object.

(Унаследовано от Object) GetBufferedInputStream()


Получает объект Stream, который можно использовать для чтения тела входящего объекта HTTP. Gets a Stream object that can be used to read the incoming HTTP entity body.

Получает объект Stream, который можно использовать для чтения тела входящего объекта HTTP. Gets a Stream object that can be used to read the incoming HTTP entity body.

Получает объект Stream, который может использоваться для чтения входящего тела сущности HTTP, дополнительно отменяя задаваемое в свойстве MaxRequestLength ограничение на длину запроса. Gets a Stream object that can be used to read the incoming HTTP entity body, optionally disabling the request-length limit that is set in the MaxRequestLength property.

Служит хэш-функцией по умолчанию. Serves as the default hash function.

(Унаследовано от Object) GetType()

Возвращает объект Type для текущего экземпляра. Gets the Type of the current instance.

(Унаследовано от Object) InsertEntityBody()

Предоставляет службам IIS копию тела HTTP-запроса. Provides IIS with a copy of the HTTP request entity body.

Предоставляет службам IIS копию тела HTTP-запроса и сведения об объекте запроса. Provides IIS with a copy of the HTTP request entity body and with information about the request entity object.

Сопоставляет параметр входящей формы полей рисунков с соответствующими значениями координат x и y. Maps an incoming image-field form parameter to appropriate x-coordinate and y-coordinate values.

Сопоставляет указанный виртуальный путь с физическим путем. Maps the specified virtual path to a physical path.

Сопоставляет указанный виртуальный путь с физическим путем. Maps the specified virtual path to a physical path.

Сопоставляет параметр входящей формы полей изображений с соответствующими значениями координат X и Y. Maps an incoming image field form parameter into appropriate x and y coordinate values.

Создает неполную копию текущего объекта Object. Creates a shallow copy of the current Object.

(Унаследовано от Object) SaveAs(String, Boolean)

Сохраняет HTTP-запрос на диске. Saves an HTTP request to disk.

Возвращает строку, представляющую текущий объект. Returns a string that represents the current object.

(Унаследовано от Object) ValidateInput()

Вызывает проверку для коллекций, доступных через свойства Cookies, Form и QueryString. Causes validation to occur for the collections accessed through the Cookies, Form, and QueryString properties.

ASP. Основы. Объекты и компоненты. Доступ к базам данных

Dynamic HTML представляет собой основное средство программирования клиента для Microsoft Internet Explorer 4.0 и выше, но такие программы просмотра Web, как Netscape Navigator, не поддерживают Dynamic HTML. На самом деле очень малая часть функциональности клиентской части, поддерживаемой различными программами просмотра, может рассматриваться как действительно кросс-платформенная.

Если Вы хотите разработать Интернет-узел, открытый для доступа самым различным программам просмотра, то должны перенести программирование с клиента на сервер. Такую возможность предоставляют Microsoft ASP (Active Server Pages — активные серверные страницы). По сути ASP не что иное, как сценарий на VBScript, который исполняется на сервере. Когда запрашивается страница, этот сценарий порождает HTML-текст. Это ключевая особенность ASP — клиент никогда не видит вашего кода, а только результирующий HTML, который воспринимает любая программа просмотра.

Листинг 4.1 демонстрирует простую ASP-страницу, которая создает приветствие в соответствии со временем суток. В нем текущий час определяется при помощи кода Hour(Now), где Now — функция VBScript, возвращающая текущий момент времени и дату. Если текущий час меньше 12, то приветствие задается в форме «Доброе утро!» От полудня до шести вечера сообщение имеет вид «Добрый день!», а после шести — «Добрый вечер!»

Листинг 4.1.Простой пример ASP.

Simple ASP Example

11 And Hour(Now) 17 Then

strGreeting = «Добрый вечер!»

Обратите внимание на код в листинге, окруженный специальными символами: угловыми скобками и знаками процента ( ). Такие символы означают, что это серверный код, который выполняется перед тем, как страница будет на самом деле послана программе просмотра. Если бы Вы посмотрели в Internet Explorer на результирующий HTML-текст, то увидели бы следующее (в предположении, что сейчас еще не вечер, но уже не утро):

Simple ASP Example

В этом-то и состоит суть ASP. Результат исполнения кода — обыкновенный HTML! Эту страницу можно просматривать любой программой просмотра: не только Internet Explorer, но и, например, Netscape Navigator. Иными словами, ASP предоставляет разработчику подлинную платформенную независимость

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

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

А теперь обратите внимание на ту строку, где и происходит генерация HTML-текста. Здесь для вывода приветствия используется переменная:

Переменная strGreeting заключена в угловые скобки со знаками процента, как и весь остальной серверный код, но, кроме того, ей предшествует знак равенства. Такая конструкция играет важную роль в ASP, указывая, что в данное место HTML-страницы нужно вставить текущее значение этой переменной.

Объекты и компоненты.На самом простом уровне создание ASP-страницы — это ни что иное, как написание серверного кода для получения ожидаемого результата. Но VBScript не является полнофункциональным языком и, как только Вы приступаете к построению более сложных страниц, его выразительных средств начинает не хватать. Так, в VBScript нет встроенных функций доступа к данным; не умеет он и открывать текстовые файлы. Собственно говоря, в VBScript отсутствуют какие-либо встроенные средства доступа к каким бы то ни было внешним источникам данных. Так как же в таком случае при помощи ASP выполняются такие сложные действия, как доступ к данным? Ответ будет таким: нужно дополнить VBScript объектами и компонентами ASP.

ASP-объекты и компоненты — это не что иное, как компоненты ActiveX, подобные обычным DLL ActiveX, с которыми Вы наверняка работали в Microsoft Visual Basic. Различие между объектами и компонентами ASP состоит в том, каким образом они появляются в программе. ASP-объекты — это элементы управления ActiveX, которые в коде на VBScript доступны всегда: их не нужно создавать явно. В число объектов ASP входят Application, Session, Request, Response и Server. А вот ASP-компоненты представляют собой DLL, существующие вне структуры ASP. Эти компоненты могут быть написаны на любом языке, а некоторые по­лезные ASP-компоненты просто поставляются в комплекте с Visual InterDev. ASP-компо­ненты нужно явно создавать в коде. ASP поддерживает компоненты Database Access, File Access, Browser Capabilities, Ad Rotator и Content Linking.

Файл GLOBAL.ASA.Одна из главных трудностей разработчика для Интернета, независимо от того, какую технологию он использует, состоит в том, как сложно создать в Интернете настоящее приложение. Взаимодействие программы просмотра и Web-сервера представляет собой по сути лишенную состояния транзакцию, в ходе которой сервер посылает клиенту Web-страницу и затем забывает о его существовании. Когда клиент запрашивает другую Web-страницу, сервер ничего не помнит о предыдущем запросе. Коренная проблема для всех Web-приложений такова: как показать, что это именно приложение?

Определить приложение в среде Microsoft Windows довольно просто. Приложение запуска­ется двойным щелчком значка и завершается, когда в меню File выбран пункт Exit. В проме­жутке между двумя этими событиями данные хранятся в переменных. Но для Интернет-при­ложений это не так. Как определить, когда приложение начинается, а когда заканчивается? Можно сказать, что приложение начало работу, если пользователь зашел на узел и просмат­ривает одну из его страниц. Но что если он переходит к другому узлу, а через пять минут возвращается? Приложение все еще активно? А если пользователь отсутствовал час или два?

Проблема определения моментов запуска и завершения приложения оказывает серьезное влияние на правильное управление переменными и последовательностью выполнения. К счастью, ASP предлагает решение. Оно состоит в том, что для определения начала и завер­шения — как всего приложения, так и отдельных пользовательских сессий — используется специальный файл под названием GLOBAL.ASA. На этот файл возложено реагирование на четыре ключевых события узла: Application_OnStart (запуск приложения), Application_OnEnd (завершение приложения), Session_OnStart (начало сессии) и Session_OnEnd (завершение сессии). В листинге 4.2 приведен типичный файл GLOBAL.ASA.

Листинг 4.2.Файл GLOBAL.ASA.

Для обозначения разделов сценария GLOBAL.ASA содержит теги

Хотя GLOBAL.ASA отмечает начало и завершение приложения при помощи событий, оста­ется неясным, что же все-таки составляет собственно приложение. Одна из рабочих форму­лировок, предложенная Microsoft, определяет Интернет-приложение как виртуальный ката­лог со всеми его файлами. Если пользователь запрашивает Web-страницу из виртуального каталога под названием Bookstore, то тем самым он запускает приложение Bookstore, и в GLOBAL.ASA возбуждаются события Application_OnStart и Session_OnStart.

Согласно этому определению с приложением одновременно могут работать несколько про­грамм просмотра. Но событие Application_OnStart происходит только один раз: когда первый пользователь запрашивает Web-страницу из виртуального каталога. Когда затем страницы из этого ката­лога запрашивают другие пользователи, возбуждается только событие Session_OnStart.

В то время как приложение может относиться к нескольким программам просмотра, обра­щающимся к одному и тому же множеству Web-страниц, сессия касается какой-то одной программы просмотра, обращающейся к тем же Web-страницам. Для конкретной программы просмотра сессия длится, пока программа продолжает запрашивать страницы виртуального каталога. Если же пользователь не запрашивает Web-страницы (из данного виртуального каталога) на протяжении 20 минут (по умолчанию), сессия завершается, и возбуждается событие Session_OnEnd. Когда в данном виртуальном каталоге завершаются все сессии, возбуждается событие Application_OnEnd.

В качестве примера рассмотрим следующий сценарий. Два пользователя намереваются посе­тить на Web-узле приложение Magazine. Пользователь 1 оказывается проворнее и быст­ренько запрашивает Web-страницу DEFAULT.ASP. Тут же возбуждаются события Application_OnStart и Session_OnStart. Буквально пятью минутами позже к приложению обращается пользователь 2. Поскольку пользователь 1 как-то проявлял себя в течение последних 20 минут, приложение Magazine активно. Следовательно, возбуждается только событие Session_OnStart, сигнализируя о начале новой сессии. Кроме того, теперь для завершения приложения необходимо, чтобы завершились обе сессии.

В течение следующих 15 минут пользователь 1 не запрашивает ни­каких страниц приложе­ния Magazine. Поскольку он не проявлял активности на протяжении 20 минут, ASP приходит к выводу, что пользователь 1 закончил свою работу с приложением, и возбуждает событие Session_OnEnd. Но приложение все еще активно, поскольку в течение последних 20 минут к нему обращался пользователь 2.

Пользователь 2 работает с приложением еще час, то и дело запрашивая новые Web-страницы. Но в конце концов он отключается, а через 20 минут после того, как он покинул узел (точнее, в последний раз запросил Web-страницу приложения), возбуждается событие Session_OnEnd. Поскольку пользователь 2 был последним пользователем данного приложения, оно завершается, и возбуждается событие Application_OnEnd.

В ASP есть несколько встроенных объектов, которые доступны разработчику. Эти объекты помогают управлять многими вещами: от переменных, до передачи форм. Работать с ними легко, они вызываются из кода напрямую без какого-то особого синтаксиса.

Объект Application.Объект Application (приложение) позволяет создавать переменные приложения (application variables) — переменные, доступные всем пользователям данного приложения. Все, кто обращается к Web-страницам данного виртуального каталога, могут совместно использовать любую переменную приложения определенную для этого каталога.

В листинге 4.3 приведен пример программы, которая использует Объект Application. В нем переменная приложения служит для отслеживания времени последнего обращения к страницам приложения.

Листинг 4.3.Объект Application.

Эта страница последний раз посещалась:

Создание переменной приложения сводится к адресации объекта Application именем новой переменной, которую вы хотите создать. Например, следующий код создает новую переменную приложения с именем Company и присваивает ей значение NewTech.

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


Поскольку такие переменные доступны нескольким пользователям одновременно, вы не сможете гарантировать, что два пользователя не попытаются одновременно присвоить одной и той же переменной разные значения. Для разрешения подобных коллизий объект Application поддерживает методы Lock и UnLock. Метод Lock блокирует весь объект Application, а не только переменную, вы хотите изменить, поэтому сразу же после изменения значения переменной разблокируйте объект:

Несмотря на то, что переменные приложения пригодны для временного хранения данных, их нельзя использовать для долговременного хранения. Все данные в переменных приложения уничтожаются, когда происходит событие Application_OnEnd. Так что, если вы хотите, чтобы они сохранились после завершения приложения, позаботьтесь о их переносе в файл или базу данных.

Объект Session.Зачастую разработчиков меньше интересуют данные, совместно используемые несколькими пользователями, зато гораздо больше — данные, связанные с конкретным пользователем. ASP поддерживает переменные для индивидуального пользователя при помощи объекта Session (сессия), который позволяет создавать переменные сессии (session variables).

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

Листинг 4-..Создание переменных сессии.

Переменные сессии можно создавать на любой Web-странице или в файле GLOBAL.ASA, а доступны они на любой Web-странице приложения, в котором эти переменные были первоначально созданы. Получить значения переменных сессии можно, считывая их из объекта Session. Следующий фрагмент кода считывает переменные сессии, созданные в листинге 4.4, и выводит их в полях ввода:

Ранее мы определили Интернет-приложение как лишенные статуса транзакции между Web-сервером и программой просмотра. Как же тогда ASP запоминает переменные сессии для каждого пользователя приложения? Ответ будет таким: эти переменные сохраняются на сервере для каждого клиента. Программа просмотра получает от сервера уникальный идентификатор, позволяющий определить, какой набор переменных кому принадлежит. Клиент этот идентификатор (Globally Unique Identifier, GUID) сохраняет, а впоследствии посылает серверу и получает именно ему предназначенные данные. Таким образом каждый клиент может иметь свой набор данных в каждом Интернет-приложении.

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

Объект Request.Для передачи данные клиенту создается Web-страница, а для передачи данных в обратном направлении программа просмотра использует отправку формы (form submission). В форме содержатся текстовые поля, переключатели и т.п. Клиент размещает введенные данные в этих полях и пересылает пакет серверу. Процессом передачи формы управляют два атрибута тега

Элемент формы с типом SUBMIT — это кнопка, нажатие которой пользователем заставляет программу просмотра упаковать данные формы и отправить их. Формат пересылки данных определен строго и сервер знает, чего ожидать от клиента. Данные имеют вид пар Поле=Значение,отсылаемых серверу в формате открытого текста. Если в предыдущем примере ввести в поле Name NewTech и info@newtech.com в поле Email, то сценарию DATA.ASP будет послан следующий текст:

На сервере эти данные можно вновь разобрать по полям и использовать в любых целях. Вот тут-то и нужен объект Request. Он используется в ASP для разбора полученных от клиента данных. Для работы с объектом Request просто сообщите ему имя поля, значение которого хотите получить, и объект вернет вам это значение. Например, следующий код вернет вам значение поля Name:

Request.Form применяется, когда данные были отправлены методом POST и именно этому сценарию. Если для отправки данных используется метод GET или сценарий вызывается с передачей параметров прямо в гиперссылке

то для разбота данных применяют свойство Request.QueryString, который работает так же, как Request.Form. Следующий фрагмент кода вернет значение поля Name из гиперссылки:

Другое свойство — Request.Cookies используются для извлечения информации из кукисов (cookies), отосланных вместе с запросом строке пользовательского агента программы просмотра. А листинг 4.5 демонстрирует применение свойства ServerVariables для определения имени компьютера, с которого клиент вызвал сценарий.

Листинг 4.5.Определение компьютера пользователя.

Вы вошли с компьютера

Переменные сервера представляют широкий круг информации о клиенте и Web-сервере. Доступ к каждой конкретной переменной сводится к чтению соответствующей переменной.

Объект Response.Этот объект управляет содержимым страницы, которую ASP возвращает программе просмотра. Фактически в комбинации знак равенства представляет собой сокращенное обозначение метода Write объекта Response. Так что следующие две строки кода эквивалентны:

Поскольку объект Response используется очень часто, такое сокращение оправдано.

Полезное свойство объекта Response — Expires. Оно задает время (в минутах) за которое страница устаревает. Если установить его в нуль, то страница будет устаревать в момент загрузки и Internet Explorer не будет ее кэшировать. Кэширование сильно влияет на разработку и может привести к тому, что приложение будет функционировать неправильно. IE кэширует страницы двумя способами: на диске и в памяти. Рассмотрим такой фрагмент кода, показывающий текущее время и дату:

Когда IE запрашивают страницу с этим кодом, на сервере выполняется сценарий, и на странице появляется текущее время. Однако, если программа просмотра переходит к другой странице, а затем возвращается к этой, со временем, то время не изменится, поскольку IE не запрашивает ее повторно. В листинге 4.6 приведена исправленная версия примера, устаревающая уже в момент загрузки.

Листинг 4.6.Страница, устаревающая уже в момент загрузки.

Forcing a Page to Expire

Еще один полезный метод объекта Response — Redirect, перенаправляющий программу просмотра на указанный URL:

Объект Server.Объект Server (сервер) представляет собой в некотором роде свалку — в том смысле, что предоставляемые им функции никак не связаны между собой, за тем исключением, что все они полезны разработчику для Интернета. Пожалуй, самая важная из всех функций объекта Server — это метод CreateObject, который создает экземпляр компонента ActiveX. Причем это может быть как встроенный компонент, входящий в комплект поставки, так и тот, который написали Вы сами на любом языке. В любом случае использование компонента ActiveX на сервере требует вызова метода CreateObject.

Аргументом метода CreateObject служит ProgID (программный идентификатор) требуемого компонента ActiveX. ProgID — это содержательное имя компонента, такое как Excel.Sheet или Word.Basic. Следующая строчка показывает, как при помощи CreateObject создать экземпляр компонента с ProgID Excel.Sheet.

Set MyObject = Server.CreateObject(«Excel.Sheet»)

Другим полезным методом объекта Server является MapPath, возвращающий фактический путь, соответствующий заданному виртуальному каталогу.

Компоненты ASP — это на самом деле просто компоненты ActiveX, наподобие тех, что Вы можете сами создать на Visual Basic или Visual C++. Но эти компоненты написаны Microsoft и поставляются вместе с Visual InterDev. Они предназначены для выполнения полезных для Web-узлов задач общего характера, включая доступ к данным. Создать их на своей странице Вы можете при помощи метода CreateObject объекта Server, а как только они созданы, смело обращайтесь к их свойствам и методам для выполнения нужных Вам задач.

Компонент ActiveX Data Objects.Самым полезным изо всех компонентов ASP следует признать компонент доступа к базам данных, называемый также ActiveX Data Objects, или сокращенно ADO. Он и содержащиеся в нем объекты применяются для чтения и записи данных в источники данных ODBC при публикации в Web информации из баз данных.

Объект Connection (подсоединение) создается методом CreateObject объекта Server, и ссылка на него помещается в переменную. Когда объект создан, его можно использовать для открытия подсоединения к любому источнику данных ODBC. Следующий фрагмент кода устанавливает подсоединение к источнику данных ODBC с названием Publications:

‘ Создаем объект Connection

Set objConnection = Server.CreateObject(«ADODB.Connection»)

‘ Открываем подсоединение к источнику данных

objConnection.Open «Publications», «sa», «» %>

Здесь objConnection — переменная для объектной ссылки на экземпляр объекта Connection. Метод Open устанавливает подсоединение, принимая в качестве аргументов имя источника данных, идентификатор пользователя и пароль.

Когда подсоединение установлено, получать информацию из источника данных можно при помощи объекта Recordset (набор записей). Этот объект умеет выполнять оператор SELECT языка SQL и возвращать набор записей, удовлетворяющих этому запросу. Как и объект Connection, Recordset создается методом CreateObject. В следующем примере программа выполняет оператор SELECT над источником данных, представленным переменной objConnection:

После того, как записи получены, для передвижения по ним можно обращаться к методам MoveFirst, MoveLast, MoveNext и MovePrevious. Затем метод Write объекта Response помещает данные на Web-страницу, которая и посылается программе просмотра. В листинге 4.7 приведен полный пример ASP-страницы, которая строит список пользователей, со­держащихся в источнике данных Data.

Листинг 4.7.Построение списка при помощи ADO.

Одна из основных задач в управляемом данными Web-приложении — управление информацией в объекте Recordset. Очень часто простой запрос возвращает гораздо больше данных, чем имеет смысл показывать. Давайте, например, посмотрим, что происходит, когда Вы обращаетесь к какой-либо поисковой системе в Интернете. Поисковая машина, получив ключевое слово, возвращает ссылки на узлы, где это ключевое слово встречается. Но зачастую обнаруживаются тысячи узлов, содержащих данное ключевое слово. Совершенно очевидно, что показать все эти узлы на одной Web-странице совершенно невозможно.

Выход состоит в разбиении на страницы (paging). Этот механизм реализован во всех поисковых системах для передачи за один раз некоей порции результатов запроса, скажем, из 10 записей. Теперь пользователь может эффективно работать с полученной информацией. Поддерживает разбиение на страницы и ADO — посредством нескольких свойств объекта Recordset: PageSize, PageCount и AbsolutePage.

При получении набора данных можно указать, что записи следует разбить на страницы. Количество строк набора данных, составляющих страницу, задается значением свойства PageSize. Затем можно определить общее количество страниц в наборе данных посредством свойства PageCount. А доступ к заданной странице обеспечивает свойство AbsolutePage.

В листинге 4.8 приведен полный пример, в котором пользователь может просматривать 10 записей за раз. Переменная сессии CurrentPage отслеживает текущую страницу. Пользователь может перейти к предыдущей порции данных или к следующему набору из 10 записей, выбрав одну из двух гипертекстовых ссылок на странице.

Листинг 4.8.Разбиение набора данных на страницы средствами ADO.

Обработка запросов в ASP.NET MVC

Попробую внести свою лепту в освоение относительно неосвоенного фреймворка ASP.NET MVC и предлагаю вашему вниманию перевод отрывка из книги «Pro ASP.NET MVC Framework» под названием «The Request Processing Pipeline».

Давайте рассмотрим, что происходит в режиме runtime, когда ASP.NET MVC обрабатывает входящий запрос.

Конвейер обработки запросов в ASP.NET MVC сравним с жизненным циклом страницы в ASP.NET WebForms в том, что он отображает анатомию системы. Понимание этого процесса необходимо для выполнения каких-либо нестандартных задач. В отличие от традиционного жизненного цикла страницы в ASP.NET, конвейер обработки запросов в MVC очень гибок – можно изменить любую его часть так, как вам хочется, и даже перераспределить или заменить некоторые компоненты. Хотя обычно не приходится расширять или изменять конвейер, можно сделать это в любой момент, потому как расширяемость лежит в основе ASP.NET MVC.

На рисунке представлена схема конвейера обработки запросов. Центральная ось – стандартный конвейер (для запросов, которые рендерят представление); ответвления – главные точки расширения. Для упрощения схема не содержит абсолютно все этапы и точки расширения. Наиболее значимое упущение – фильтры, которые можно встраивать до или после выполнения методов действий, или до или после выполнения результатов действий.

ЭТАП 1: IIS

Internet Information Services (IIS), веб-сервер от Microsoft, начинает работу в первую очередь. При поступлении HTTP запроса, до того, как в дело вступает ASP.NET, драйвер HTTP.SYS ядра Windows анализирует комбинацию URL/port number/IP address, сопоставляет их и перенаправляет зарегистрированному приложению (которое может быть как веб-сайтом IIS, так и виртуальным каталогом внутри веб-сайта IIS).

Поскольку приложения ASP.NET MVC основаны на ASP.NET, необходимо включить ASP.NET для пула приложений (каждое приложение IIS сопоставлено с каким-либо пулом приложений). ASP.NET можно включить в двух управляемых конвейерных режимах (managed pipeline modes):

• В режиме ISAPI (классический режим) ASP.NET активизируется с помощью расширения ISAPI (aspnet_isapi.dll), ассоциированного с определенными расширениями файлов из URL адреса (например, .aspx, .ashx, .mvc). В IIS 6 можно использовать подстановочные знаки, и тогда aspnet_isapi.dll будет обрабатывать все запросы, несмотря на расширение файлов.

• В интегрированном режиме (поддерживается только в IIS 7+) .NET является нативной частью конвейера обработки запросов, поэтому не нужно использовать расширение ISAPI, ассоциированное с расширениями файлов. Именно это делает легким использование маршрутизации с «красивыми» URL адресами (без расширений файлов).


В любом случае, как только система ASP.NET принимает входящий запрос, она оповещает все зарегистрированные модули HTTP о том, что пришел новый запрос. (Модуль HTTP – это класс .NET, реализующий интерфейс IHttpModule, который можно «встроить» в конвейер обработки запросов). Один особенно важный модуль HTTP, зарегистрированный по умолчанию во всех приложениях ASP.NET MVC – UrlRoutingModule. Этот модуль является начальной точкой всей системы маршрутизации (core routing system). Для IIS 6 модуль UrlRoutingModule регистрируется в файле web.config.

В случае IIS 7 можно использовать Modules GUI (для этого откройте Internet Information Services (IIS) Manager из Administrative Tools, выберите веб-сайт и дважды кликните Modules).

ЭТАП 2: МАРШРУТИЗАЦИЯ (CORE ROUTING)

Когда модуль UrlRoutingModule вступает в обработку запроса, он запускает систему маршрутизации System.Web.Routing. Задача маршрутизации состоит в том, чтобы распознать и проанализировать входящий URL и заполнить контекст запроса (request context), который могут использовать последующие компоненты (например, ASP.NET MVC использует его для передачи управления соответствующему контроллеру MVC и заполнения параметров методов действий).

На схеме видно, что система маршрутизации в первую очередь проверяет, соответствует ли входящий URL файлу на диске. Если да, тогда система маршрутизации заканчивает свою работу и IIS продолжает обработку запроса. Для статичных файлов (например, .gif, .jpeg, .png, .css или .js) это значит, что IIS будет обрабатывать их стандартным способом (поскольку они существуют на диске), что очень эффективно. Подобно этому, традиционные страницы ASP.NET WebForms (.aspx) будут обработаны обычным способом.

Однако, если входящий URL не соответствует файлу на диске (например, запросы к контроллерам MVC, которые являются классами .NET, а не файлами), тогда система маршрутизации исследует текущую конфигурацию для того, чтобы определить как обработать входящий URL.

ТАБЛИЦА МАРШРУТИЗАЦИИ

Таблица маршрутизации хранится в статичной коллекции System.Web.Routing.RouteTable.Routes. Каждая запись в коллекции представляет собой шаблон для допустимых URL адресов. В шаблон могут опционально входить заполнители (placeholders) (например, /blog//) и ограничения (constraints), которые ограничивают диапазон допустимых значений для каждого из параметров. Каждая запись указывает на обработчик маршрута (route handler) – объект, реализующий интерфейс IRouteHandler, который принимает и обрабатывает запрос. Для того, чтобы заполнить коллекцию RouteTable.Routes, нужно добавить соответствующий код в метод RegisterRoutes() файла Global.asax.cs.

Для поиска соответствия запроса HTTP конкретному маршруту из RouteTable.Routes, система маршрутизации начинает сканировать коллекцию RouteTable.Routes сверху вниз и выбирает первый найденный маршрут, соответствующий входящему запросу. Найдя его, система маршрутизации передает управление обработчику маршрута, обеспечивая его контекстом запроса, описывающим выбранный маршрут и все параметры URL адреса.

ЭТАП 3: КОНТРОЛЛЕРЫ И ДЕЙСТВИЯ (CONTROLLERS AND ACTIONS)

К этому моменту система маршрутизации выбрала маршрут из коллекции RouteTable.Routes и проанализировала параметры URL адреса. Вся эта информация помещена в контекст запроса. Итак, в каком месте на сцену вступают контроллеры и действия?

ПОИСК И ЗАПУСК КОНТРОЛЛЕРОВ

Для приложений ASP.NET MVC большинство маршрутов из RouteTable.Routes соответствуют одному обработчику – обработчику MvcRouteHandler, это стандартный обработчик, встроенный в ASP.NET MVC. MvcRouteHandler знает, как с помощью контекста запроса вызвать соответствующий контроллер.

Как видно на схеме, он делает это, используя фабрику контроллеров (controller factory). По умолчанию он использует невероятно оригинально названную фабрику DefaultControllerFactory, которая использует определенное соглашение именования контроллеров для того, чтобы выбрать правильный контроллер для входящего запроса.

Однако, если вы заменяете встроенную фабрику DefaultControllerFactory какой-либо другой реализацией интерфейса IControllerFactory или наследником класса DefaultControllerFactory, тогда вы должны изменить эту логику.

ЧТО ДОЛЖНЫ ДЕЛАТЬ КОНТРОЛЛЕРЫ

Минимальное требование к классу контроллера состоит в том, что он должен реализовывать интерфейс IController:

public interface IController
<
void Execute(RequestContext requestContext);
>

Как вы можете убедиться, это очень простой интерфейс! Он не определяет ничего, кроме того, что контроллер должен что-то сделать в методе Execute(). Заметьте, что параметр requestContext хранит полную информацию о контексте запроса, сформированном системой маршрутизации, включая параметры URL адреса, и, кроме того, обеспечивает доступ к объектам Request и Response.

ЧТО КОНТРОЛЛЕРЫ ДЕЛАЮТ ОБЫЧНО

Чаще всего нет необходимости реализовывать IController напрямую – можно наследовать контроллеры от класса System.Web.Mvc.Controller. Это стандартный базовый контроллер ASP.NET MVC, который добавляет необходимую инфраструктуру для обработки запросов. Что наиболее важно, он вводит в систему методы действий (action methods). Это значит, что все public методы контроллера достижимы через URL (такие методы и называются «методы действий») и, кроме того, это значит, что не нужно самостоятельно реализовывать метод Execute().

Хотя методы действий могут выводить результат прямо в HTTP response, так не рекомендуется делать. По причинам удобства тестирования и повторного использования кода в методах действий лучше возвращать результат действий (action result) (объект, наследованный от ActionResult), который описывает результат выполнения действия. Например, если вы хотите отрендерить представление, следует вернуть ViewResult. Или для перенаправления HTTP запроса к другому методу действия следует вернуть RedirectToRouteResult. ASP.NET MVC позаботится о выполнении результата в нужный момент конвейера обработки запросов.

Кроме того, существует очень гибка система фильтром (filters). Это атрибуты .NET (например, [Authorize]), которыми вы можете помечать классы контролеров или методы действий, встраивая какую-либо логику до или после выполнения методов действий, или до или после запуска результатов действий. Существуют несколько встроенных фильтров, например фильтры исключений и фильтры авторизации. Фильтры могут применяться в стольких различных местах, что им не нашлось места на схеме!

Контроллеры и действия (и связанные с ними возможности) – главные понятия в ASP.NET MVC.

ЭТАП 4: РЕЗУЛЬТАТЫ ДЕЙСТВИЙ И ПРЕДСТАВЛЕНИЯ (ACTION RESULTS AND VIEWS)

Ок, да, уже достаточно много всего произошло! Давайте повторим:

• Система маршрутизации сопоставила входящий URL с конкретным маршрутом и подготовила объект, содержащий контекст запроса. Выбранный из RouteTable.Routes маршрут обозначил обработчик MvcRouteHandler для обработки запроса.

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

• Контроллер вызвал один из своих методов действий.

• Метод действия вернул объект ActionResult.
В этот момент, ASP.NET MVC выполняет запуск результата ActionResult.

РЕНДЕРИНГ ПРЕДСТАВЛЕНИЯ

Уделим особое внимание одному особенному классу, наследованному от ActionResult – ViewResult. Этот класс способен найти и отрендерить соответствующий шаблон представления, передав ему что-либо в коллекции ViewData, сформированном в методе действия. Это и есть то, что называется «движок отображения» («view engine») (класс .NET, реализующий интерфейс IViewEngine).

В чем разница между объектом Response и объектом Request?

В чем разница между объектом Response и объектом Request в ASP?

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

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

Объект ASP Response используется для отправки вывода пользователю с сервера.

Объектная модель ASP.NET

Доступность Web-страниц

Технология ASP.NET обеспечивает высокую доступность созданных в ее рамках Web-страниц, благодаря применению эффективной системы обработки ошибок, устранения «утечек памяти» и взаимных блокировок. Для этого задается максимальное количество запросов и устанавливаются значения параметров для контроля объема используемой памяти. Конфигурационная информация сохраняется в файле Web.config. При достижении приложением ASP.NET предельного значения какого-либо установленного параметра создается новый экземпляр Web-страницы. Запросы перенаправляются к новому экземпляру Web-страницы, а старый экземпляр уничтожается по окончании обработки всех поступивших к нему запросов.

ASP.NET предоставляет новую объектно-ориентированную модель разработки Web-приложений. Сами ASP.NET-страницы являются объектами классов. Можно создавать программный код с возможностью его повторного использования классами. Эти классы можно использовать для создания экземпляров объектов.

Объектная модель — это иерархия объектов, предоставляющих разработчикам определенные возможности. В ASP.NET используется новая структура Web-страниц, которая отличается от структуры ASP-страниц и обеспечивает поддержку объектной модели для сохранения содержимого ASP.NET-страницы. Добавлен новый класс элементов управления — серверные элементы управления. Можно добавлять собственные комментарии и связывать эти данные с серверными элементами управления. Для оформления Web-страниц имеются наборы директив, которые предназначены для установки параметров. Например, параметры TraceContext и isEnabled позволяют, соответственно, включить и отключить механизм отслеживания Web-запросов.

ASP.NET определяет шесть внутренних объектов структуры страниц:

Эти объекты встроены в модель ASP.NET-страниц и готовы к использованию.

В объекте application хранятся данные, которые будут доступны всем пользователям, одновременно работающим с Web-приложением. Данные о сеансе работы каждого отдельного пользователя сохраняет объект session. Объект application используется для хранения глобальных переменных, которые содержат информацию, общедоступную для всех пользователей Web-приложения, например приветственное сообщение или индекс посещения Web-страницы. Этот объект представляет собой коллекцию разнородных элементов. Пользователи совместно используют объекты Web-приложения, поэтому требуется гарантировать, что несколько пользователей не смогут одновременно изменять переменные, хранимые в объекте application. Для блокирования содержимого коллекции объектов от изменения применяется метод Lock, для разблокирования — метод Unlock.

С помощью объекта ObjectContext выполняется фиксация или откат транзакций, управляемых MTS. Транзакции могут быть инициированы со страницы ASP.NET. Методы SetComplete и SetAbort объекта ObjectContext используются, соответственно, для фиксации и отката транзакций.

В объекте request сохраняется информация, отправляемая броузером клиента на сервер в HTTP-запросе. После обработки запроса с помощью объекта request пользователю отправляется ответная информация. Объект server позволяет получить доступ к свойствам и методам Web-сервера. С помощью метода Server.createobject можно создать экземпляр объекта server.

Объект session используется для хранения информации о пользовательских сеансах. Значения переменных объекта session сохраняются, даже когда пользователь переходит на другую страницу Web-приложения. Этот объект создается при организации пользователем сеанса и уничтожается при его завершении. Например, в нём можно сохранять регистрационную информацию каждого пользователя, посещающего сайт виртуального магазина. Эта информация остаётся доступной для всего Web-приложения даже при переходе пользователя на другие Web-страницы сайта.

Каждый из внутренних объектов ASP.NET обладает набором методов и коллекций для управления функциональными возможностями этого объекта. Назначение и возможности внутренних объектов технологий ASP и ASP.NET практически идентичны.

Вопросы промежуточного контроля третьего раздела

  1. Назовите фундаментальные основы ASP.NET;
  2. Архитектура ASP.NET;
  3. История создания ASP.NET;
  4. Назовите модель программирования ASP.NET
  5. Возможности ASP.NET.

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Студент — человек, постоянно откладывающий неизбежность. 10528 — | 7318 — или читать все.


Объект HttpRequest в Asp.Net

Если объект HttpResponse позволяет разработчику с максимальным удобством отправлять информацию удаленному пользователю, не заботясь о различных мелочах физического уровня, а сосредотачиваясь именно на логике отсылаемого пакета, то объект HttpRequest помогает разработчику легко разгрести ту кучу разнородной информации, которая приходит от удаленного пользователя. В этот объект помещается информация, посылаемая браузером на сервер. В блоке принимаемой информации могут находиться данные, введенные пользователем в элементы управления форм, URL запрошенного ресурса, содержание cookies и многое другое. Объект HttpRequest поможет разработчику получить именно ту информацию, которая ему нужна для функционирования приложения.

Рассмотрим перечень свойств и методов объектов.

AcceptTypes – свойство содержит в качестве значения массив строк типа String, в которых записываются типа MIME, которые поддерживаются браузером удаленного пользователя.

ApplicationPath – свойство содержит путь к виртуальному каталогу, в котором находится ASP.NET приложение, относительно корневого каталога WWW-сервера.

Browser – Составное свойство, в котором указывается список параметров браузера удаленного пользователя. Значение данного свойства имеет тип HttpBrowserCapabalities. Соответственно, объект подобного типа имеет свои свойства, которые необходимо перечислить.

-ActiveXControls – свойство логического типа, указывающее, разрешено ли данному браузеру работать с элементами ActiveX.
-AOL – свойство логического типа, указывающее, использует ли удаленный пользователь специализированный браузер службы AOL.
-BackgroundSounds – свойство логического типа, указывающее, разрешено ли данному браузеру воспроизводить звуковые файлы, прикрепленные к Web-страницам.
-Beta – свойство логического типа, сигнализирующее, что браузер удаленного пользователя является всего лишь бета-версией с возможно усеченной функциональностью.
-Browser – значение данного свойства является строкой, в которой содержится условное наименование браузера. Это же наименование передается в виде содержимого заголовка HTTP с наименованием User-agent.
-CDF – свойство логического типа, указывающее, может ли браузер удаленного пользователя обрабатывать push-каналы доставки информации, созданные на основе формата CDF (Channel Definition Format).
-Cookies – свойство логического типа, указывающее, разрешено ли браузеру сохранять cookies на машине удаленного клиента.
-Crawler – свойство логического типа, указывающее, установлено ли в браузере пользователя средство поиска Web crawler.
-Frames – свойство указывает, может ли браузер пользователя отображать фреймы. В настоящее время этот вопрос, очевидно, не имеет особого смысла.
-JavaApplets – свойство логического типа, указывающее, может ли браузер удаленного пользователя корректно работать с аппретами Java.
-JavaScript – логическое свойство, в котором указывается, умеет или нет браузер удаленного пользователя интерпретировать и выполнять Java-сценарии.
-MajorVersion – свойство содержит основной номер версии браузера, т.е. число, стоящее до точки в полном номере версии. Значение данного свойства имеет, естественно, тип Integer.
-MinorVersion – свойство содержит дополнительный номер версии, т.е. число, находящееся после точки в полном номере версии.
-MSDomVersion – в свойстве указывается номер версии объектной модели документа (Microsoft XML Document Object Model), которая поддерживается браузером пользователя.
-Platform – в данном свойстве содержится кодовое наименование операционной системы, которая установлена на машине удаленного пользователя. Естественно, значение данного свойства имеет тип String.
-Tables – свойство указывает, может ли браузер пользователя отображать таблицы, включаемые в состав HTML_документов. Да, было когда-то такое время, когда браузеры не могли работать с таблицами.
-Type – в данном свойстве указывается кодовое наименование браузера и основной номер его версии. Значение свойства имеет тип String.
-VBScript – логическое свойство, в котором указывается, умеет или нет браузер удаленного пользователя интерпретировать и выполнять сценарии, написанные на языке VBScript.
-Version – свойство содержит в строковом виде полную версию применяемого пользователем браузера.
-W3CDOMVersion – в свойстве указывается номер версии объектной модели документа (W3C Document Object Model), которая разработана консорциумом WWW.
-Win16 – логическое свойство, в котором указывается, работает удаленный пользователь на шестнадцатиразрядной версии Windows или нет.
-Win32 – логическое свойство, в котором указывается, работает удаленный пользователь на тридцатидвухразрядной версии Windows или нет.

ClientCertificate – значение данного свойства имеет тип HttpClientCertificate и содержит информацию об установках безопасности клиента, если тот использует соединение по протоколу SSL 3.0.

ContentEncoding – в этом свойстве указывается наименование кодировки символов, примененной браузером при отправке информации на сервер.

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

ContentType – свойство содержит наименование MIME-типа для принимаемой сервером информации.

Cookies – свойство содержит коллекцию coоkies, которые передаются на сервер браузером пользователя.

FilePath – в свойстве содержится путь к документу, который запросил пользователь. При этом не учитывается путь для перемещения внутри запрошенного документа, т.е. все закладки, если таковые были указаны в URL, этим свойством игнорируются. Путь указывается только к файлу.

Files – свойство содержит коллекцию файлов, переданных пользователем на сервер. Естественно, свойство имеет смысла обрабатывать только в том случае, если указан MIME-тип multipart/form-data.

Filter – данное свойство является функционально идентичным своему одноименному близнецу, который применяется к объекту HttpResponse. В этом свойстве указывается фильтр, применяемый к входящему потоку информации.

Form – в свойстве содержится коллекция наименований органов управления формы, которая была использована посетителем сайта для ввода информации.

Headers – в свойстве содержится коллекция заголовков протокола HTTP переданных браузером удаленного пользователя на сервер.

HttpMethod – свойство указывает, какой именно тип передачи информации на сервер был использован браузером удаленного пользователя. В качестве значений применяются ключевые слова Get, Post и Head. Тип значения свойства, естественно, string.

InputStream – в свойстве содержится входящий поток информации в «сыром» виде. А именно таким, каким его принял сервер.

IsAuthenticated – логическое свойство, указывающее, прошел ли удаленный пользователь аутентификацию или нет.

IsSecureConnection – логическое свойство, которое применяется для указания, что клиент пользуется защищенный протоколом соединения, таким как SSL.

Params – свойство объединяет в себе коллекцию всех переменных из QueryString, Form, ServerVariable и Cookies.

Path – в свойстве указывается путь в системе виртуальных каталогов к запрошенному удаленным пользователем ресурсу.

PathInfo – свойство содержит часть URL, запрошенного пользователем, располагающуюся после расширения файла. Другими словами, это добавочная информация, включенная в состав URL, помимо основного документа.

PhysicalApplicationPath – в свойстве содержится физический (а не виртуальный) путь к каталогу, в котором находиться и выполняется действующее приложение ASP.NET.

PhysicalPath – в свойстве содержится физический путь, соответствующий виртуальному расположению файла, запрошенного пользователем.

QueryString – в свойстве находится коллекция с наименованиями всех переменных и параметров, переданных в строке запроса URL. Обычно в эту строку добавляются наименования органов ввода информации из форм и значений, введенных в них пользователем, если применен метод передачи GET.

RawUrl – в свойстве находится URL, запрошенный пользователем, в сыром виде, не прошедший процедуру лексического анализа для выделения из него составных частей. Если у разработчика есть такое желание, он может самостоятельно разбирать этот URL.

RequestType – свойство позволяет получать или устанавливать тип передачи информации от браузера удаленного пользователя на сервер. В качестве значений, естественно, могут быть использованы слова GET и POST.

ServerVariable – свойство позволяет приложению получить доступ к коллекции наименований стандартных свойств сервера и браузера.

TotalBytes – в свойстве указывается размер пришедшего на сервер запроса от удаленного пользователя в байтах. Естественно, значение данного свойства имеет тип Integer.

Url – в данном составном свойстве собрана самая различная информация об URL, запрошенного пользователем.

UrlReffer – в данном свойстве содержится информация об URL той страницы, с которой пользователь пришел не текущую.

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

UserHostAddress – в свойстве содержится IP-адрес удаленного пользователя, который послал данный запрос.

UserHostName – в свойстве содержится доменное имя, приписанное удаленному пользователю.

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

На этом список свойств встроенного объекта HttpRequest заканчивается.

Перейдем к методам:

BinaryRead – метод позволяет читать определенное количество байтов из входящего потока информации. В качестве параметра методу передается целочисленное значение, указывающее, сколько именно байтов следует прочитать. Метод возвращает массив типа Byte.

MapImageCoordinates – метод возвращает двумерный массив, содержащий координаты активных областей, присущих изображению гиперссылки.

SaveAs – метод сохраняет входящий поток информации на диск в виде файла. В качестве параметров методу передается строка с наименованием создаваемого файла и логическое значение, указывающее, следует ли сохранять помимо основного потока информации еще и заголовки протокола HTTP, пришедшие вместе с ним.

Список уникальных методов объекта HttpRequest исчерпан.

What is the difference between the Response object and Request object?

What is the difference between the Response object and Request object in ASP?

5 Answers 5

Generally, the request object is going to hold information about the current user request, that is the client browser requesting a webpage from your server. The response object contains the response data that will be sent back to the user. Think of it in terms of a http request/response cycle. The objects hold the respective data.

The ASP Request object is used to get information from a visitor. Usually, you read the contents of the request to determine the course of action and the proper response.

The ASP Response object is used to send output to the user from the server.

Request Object: is used to read the data submitted by the client (i.e. the data comes with the client request)

Response Object: is used to send instructions to the client browser.

This might help you further. Request object: from client (you) to server. Response object: from Server to client (you) rendering back to the service. These objects are called intrinsic object of ASP.Net.

Request Object: Used to send information to the clients. Response Object: Used to retrieve information included with the request from server.

Not the answer you’re looking for? Browse other questions tagged asp-classic or ask your own question.

Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2020 Stack Exchange Inc; user contributions licensed under cc by-sa 4.0 with attribution required. rev 2020.11.11.35402

Илон Маск рекомендует:  Движки сайтов все о движках сайтов, форумов, плагинах
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL