Опубликован: 07.05.2010 | Доступ: свободный | Студентов: 1678 / 62 | Оценка: 4.56 / 4.06 | Длительность: 34:11:00
Лекция 3:

Web-формы

Класс Page

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

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

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

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

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

Внутренние объекты 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);

Write(object);

Write(string)

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

WriteFile(string);

WriteFile(string, bool);

WriteFile(string, long, long)

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

Redirect(string, bool)

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

Пример:

// Перенаправляем на файл в текущем каталоге
Response.Redirect("newpage.aspx");
.............................
// Перенаправляем на другой Web-сайт
Response.Redirect("http://www.dialog-service.net");

Объект Server

Основные свойства и методы объекта Server
Член Тип Описание
MachineName string Представляет имя компьютера, на котором запускается страница. Это имя Web-сервера, используемое компьютером с целью его идентификации для остальной части сети
CreateObject(string);

CreateObject(System.Type)

Создает экземпляр COM-объекта, определяемый его программным идентификатором progID. Используется для обратной совместимости, поскольку упрощает взаимодействие с COM-объектами в .NET
GetLastError() Извлекает объект самого последнего исключения или нулевую ссылку, если исключения не было. Используется в обработчике событий приложения, проверяющего сбойные ситуации.
HtmlEncode(string);

HtmlEncode(string, System.IO.TextWriter)

Осуществляет HTML-кодирование строки допустимыми символами, которые не будут восприниматься как управляющие ( < &lt; > &gt; & &amp; жесткий пробел &nbsp )
HtmlDecode(string);

HtmlDecode(string, System.IO.TextWriter)

Осуществляет обратную операцию по отношению к HTML-кодированной строке символов
UrlEncode(string);

UrlEncode(string, System.IO.TextWriter)

Заменяет обычную строку строкой допустимых символов URL, отменяя пробелы и другие спецсимволы, кодируя кириллицу, %, ?, &
UrlDecode(string);

UrlDecode(string, System.IO.TextWriter)

Раскодирует строку символов 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, отображаемый в броузере клиента, не меняется (...хотели кока, а съели Кука).

Например:

// Можно переместиться на файл в текущем Web-приложении
Server.Transfer("newpage.aspx");
................................
// Перемещаться на другой Web-сайт нельзя.
// Это вызовет ошибку!!!
Server.Transfer("http://www.prosetech.com");

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

Например:

string physicalPath = Server.MapPath(Request.ApplicationPath 
						+ "/info.txt");
	
// Открытие файла
StreamReader reader = new StreamReader(physicalPath);
// Что-то делаем
reader.Close();

Объект User

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