CFA LogoCFA Logo Computer
Загрузка поиска
Новости Компьютеры Прайс-лист [Новое] Прайс-лист [Б/У] Для ноутбуков Конфигуратор ПК Заказ, Оплата, Доставка Сервис объявления Драйвера Статьи Как нас найти Контакты
Новости
RSS канал новостей
Компания MSI заявляет о выпуске серии настольных систем MSI Trident 3, которые благодаря обновленной ...
Американская компания Hewlett-Packard в прошлом году представила линейку продуктов рассчитанных ...
В рамках выставки CES 2017 компания Dell, известная во всем мире своими отличными моделями мониторов, ...
В Сети уже появлялась информация о том, что компания Gigabyte Technology готовит к выходу новую ...
Тайваньская компания ASUStek познакомила мировую общественность с линейкой новейших материнских ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2002 ГОД

Уроки ASP-технологии

(Продолжение, начало см. в МК № 8, 11—13 (179, 181—183))

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

В прошлой статье я рассказал вам о наиболее часто использующихся коллекциях объекта Request — ServerVariables и Form. Теперь вкратце опишем коллекцию QueryString. Она предназначена для получения информации из строки URL (напомню, что данные передаются таким образом при использовании в форме метода GET). Немного модифицируем предыдущий пример. Замените метод формы с POST на GET. В первом островке ASP замените строки

на

Во втором островке замените строкиы

на

В результате в браузере вы получите ту же самую картинку, что и при использовании метода POST и коллекции Form, но в адресной строке Internet Explorer будет что-то вроде этого:

http://localhost/embedded_objects/request.asp?txtFirstName=Vasya&txtLastName=Pupkin&txtCity=Kharkov&rdoSex=Male&selEducation=High+education&selJob=Computer%2FInternet&selMarried=Yes&selChildren=More

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

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

Создайте файл cookies.asp, затем добавьте на него ссылку в файл default.htm, находящийся в виртуальном каталоге Embedded_objects. В файл cookies.asp введите следующий код:

Теперь загрузите в браузер файл default.htm (предварительно не забудьте включить сервер) и активируйте ссылку на сценарий cookies.asp (рис. 1). Введите что-нибудь в поле Username и нажмите на кнопку «Подача запроса» (рис. 2). После этого закройте окошко браузера и опять загрузите файл cookies.asp. В поле Username снова появится имя, которое вы ввели в прошлый раз! Этот эффект достигается благодаря двум островкам ASP. Первый отвечает за запись информации, а второй — за считывание.

Рис. 1   Рис. 2

Давайте разберемся, как они работают. В первой строке кода мы проверяем, является ли поле Username пустым. Если нет, то даем команду движку ASP считать его значение и записать его в cookie. В третьей строке свойству Expires, которое отвечает за время хранения cookie, присваивается значение December 31, 2003 00:00. Это значит, что этот файл cookie будет храниться на винчестере пользователя до 12 часов ночи 31 декабря 2003 года. Во втором островке встречается новая конструкция <%=Request.Cookies("Username") %>. Это всего лишь сокращенная запись такого кода: <% Response.Write Request.Cookies("Username") %>. Что эта строка делает, я думаю, вы догадались.

Наконец, последняя коллекция объекта Request — ClientCertificates. Она отвечает за прием так называемых цифровых сертификатов пользователей. Я не буду подробно останавливаться на ней, так как, скорее всего, она не понадобится в вашей повседневной работе. Перечислю, однако, некоторые члены данной коллекции — их иногда используют разработчики: Issuer, Subject, ValidFrom, ValidUntil, SerialNumber.

Объект Request поддерживает только одно свойство (TotalBytes), которое содержит объем запроса и один метод (BinaryRead), отвечающий за прием с браузера двоичных данных (картинки, файлы и т. д.) Примечание: к этому методу можно обращаться только в том случае, если после этого не будет обращений к коллекции Request.Form.

Объект Server

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

Объект Server предоставляет разработчикам следующие методы и свойства:

• Свойство ScriptTimeOut;

• Метод HTMLEncode;

• Метод URLEncode;

• Метод CreateObject;

• Метод Transfer (в PWS 4.0 не поддерживается);

• Метод Execute (в PWS 4.0 не поддерживается);

• Метод MapPath;

• Метод GetLastError (в PWS 4.0 не поддерживается).

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

Как видите, цикл не завершится никогда. Следующее изменение в сценарии приведет к сообщению об ошибке и освобождении ресурсов сервера через 20 секунд:

Этот пример очень прост, но если представить, что скрипт делает ошибочную выборку из ОЧ-ЧЕНЬ большой базы данных, то польза данного свойства станет очевидна.

Метод HTMLEncode предназначен для кодирования в escape-последовательности строковых символов, для которых невозможен обычный вывод в браузере. Такими последовательностями являются, например, угловые скобки (>, <), кавычки ("") и др. Например, необходимо вывести на экран браузера следующий текст:

В HTML это должно выглядеть так:

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

Метод URLEncode сходен с методом HTMLEncode и предназначен для кодирования URL посредством замены символов escape-последовательностями, каждая из которых состоит из знака процента и следующего за ним ASCII-кода в шестнадцатеричном представлении. Так как кодировка URL не совпадает с кодировкой HTML, то для преобразования строки в правильный URL-формат нельзя использовать метод HTMLEncode.

Метод CreateObject предназначен для запуска и работы практически любого COM-объекта. Значение данного метода при разработке web-приложений трудно переоценить. Например, чтобы создать и использовать компонент BrowserCapabilities, предназначенный для определения возможностей браузера с помощью файла browscap.ini, можно написать следующий код:

Метод MapPath служит для преобразования виртуальных путей в физические. Предположим, в корневом каталоге web-узла есть виртуальный каталог test. Чтобы определить реальный физический путь к нему, можно использовать следующий код:

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

Методы Transfer, Execute и GetLastError я не буду здесь описывать (хотя они очень полезны), так как PWS 4.0, который мы используем, их не поддерживает.

На сегодня все. В следующий раз мы продолжим знакомство со встроенными объектами ASP.

(Продолжение следует)

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы: *
captcha
Обновить






Рейтинг@Mail.ru
Хостинг на серверах в Украине, США и Германии. © www.sector.biz.ua 2006-2015 design by Vadim Popov