Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[ПСП] / lab22.doc
Скачиваний:
80
Добавлен:
31.05.2015
Размер:
6.19 Mб
Скачать

Синтаксис строки запроса http

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

http://loca1host/Cars/СlassicAspPage.asp?txtUserName= Chucky&txtPassword=somepassword&btnSubmit=Submit

Обратите внимание, что вся строка запроса разбивается на две части символом знака вопроса (?). Слева от знака вопроса находится адрес получателя данных, а справа — сами пары имя — значение (например, txtUserName=Chucky).

Как можно убедиться, каждая пара имя — значение отделена от другой пары символом амперсанда (&). Строка в нашем примере не представляет никаких слож­ностей для анализа, поскольку передаваемые значения очень просты. Однако, к примеру, если бы нам потребовалось поместить внутрь какого-либо значения про­бел (Chucky заменить на Chucky Chuckles), то строка запроса выглядела бы уже сле­дующим образом:

http://Iocalhost/Cars/ClassicAspPage.asp?txtUserName= Chucky+Chuckles&txtPassword=somepassword&btnSubmit=Submit

Таким образом, вместо пробелов в передаваемых значениях подставляется сим­вол +. Если нам придет в голову поставить между Chucky и Chuckles пять пробелов, то строка запроса будет выглядеть так:

http://Iocalhost/Cars/ClassicAspPage.asp?txtUserName= Chucky+++++Chukles&txtPassworcl=somepassword&btnSubmit=Submit

А что будет, если в передаваемом значении попадутся какие-нибудь служеб­ные символы? Они будут переданы в виде символа процента, за которым следует шестнадцатеричное значение соответствующего символа ASCII. Например, если пользователь придумал себе пароль, который выглядит как Hellо^77, то этот па­роль будет передан так:

http://localhost/Cars/ClassicAspPage.asp?txtUserName= Chucky+++++Chuckles&txtPassword=Hello%5E77&btnSubmi t=Submit

Создание классической страницы asp

Наша форма уже в состоянии передавать данные, однако принимать их пока неко­му. Давайте ликвидируем этот недостаток нашего web-приложения и создадим страницу — приемник наших данных. Вначале мы создадим ее не на ASP.NET, а с помощью классических ASP.

Первое, с чего нам нужно начать — добавить новую страницу Active Server Page при помощи Visual Studio.NET (рис. 14.20). Присвоим этой странице то имя, которое мы указали в атрибуте action для формы (ClassicASPPage.asp) и со­храним ее в физическом каталоге, которому соответствует виртуальный ката­лог Cars.

Рис. 14.20. Добавление классического файла ASP

Страницу ASP можно воспринимать как набор из кода HTML и скриптов, пред­назначенных для выполнения на сервере. Можно сказать, что основной смысл ASP заключается в генерации кода HTML «на лету» при помощи серверных скриптов.

Например, можно создать страницу ASP, которая будет считывать данные из ис­точника данных (при помощи ADO) и представлять возвращаемые строки в виде кода HTML.

В нашем примере страница ASP будет использовать встроенный объект Request для считывания значений из входящей строки запроса и выводить полученные от клиента данные в виде кода HTML. Можно сказать, что клиенту будет возвращать­ся эхо его запроса. Вот код соответствующего скрипта (обратите внимание на блок <%...%>, в который помещен скрипт):

<%@ Language=VBScript %>

<!- VBScript вполне подходит для серверных скриптов ->

<НТМL>

<HEAD>

<МЕТА NAME="GENERATOR" Content=Microsoft Visual Studio 7.0">

</HEAD>

<BODY>

<!- Возвращаем обратно то, что получили ->

<center>

<hl>You said: </hl>

<b>User Name: </b><%= Request.QueryString(“txtUserName") %><br>

<b>Password: </b><%= Request.QueryString(“txtPassword") %><br>

</center>

/<BODY>

</HTML>

Первое, что необходимо отметить, — на странице ASP используются те же теги <HTML>, <HEAD> и <BODY>, что и на обычной web-странице. Мы используем объект Request, который, как и положено объектам, поддерживает некоторое количество свойств, методов и событий. Для того чтобы извлечь данные в виде запроса от кли­ента, используется метод Request.QueryString().

Как же генерируется код HTML, который будет возвращен клиенту? Можно сказать, что запись <%...%> означает: «Вставь это в HTTP-ответ». Кроме того, мы можем получить полный контроль над тем, что возвращается пользователю, при помощи объекта Response. Например:

<!- Возвращаем обратно то, что получили -> <center>

<hl>You said: </hl>

<b>User Name: </b><%=Request.QueryString(“txtUserName")%><br>

<b>Password: </b>

<%

dim pwd

pwd = Request.QueryString(“txtPassword")

Response.Write(pwd)

%>

</center>

В типах Request и Response, конечно же, предусмотрено множество других очень полезных членов, кроме того, в распоряжении web-разработчика классических ASP также находится набор дополнительных объектов, таких как Session. Server, Application и ObjectContext. Мы не ставим своей целью в этой главе разобрать класси­ческие ASP во всех подробностях, поэтому эти объекты мы рассматривать не бу­дем (информацию о них можно получить в электронной документации по Visual Studio). Однако отметим, что возможности этих типов реализованы в ASP.NET при помощи типа Page.

Для того чтобы запустить нашу страницу ASP, просто откроем файл default.htm, введем в текстовые поля значения для имени пользователя и пароля и нажмем кнопку Submit. Сработает серверный скрипт ASP, и в окне браузера откроется сге­нерированная на основе ваших данных страница (рис. 14.21).

Рис. 14.21. Динамически созданная страница HTML

Наш пример, конечно, трудно отнести к разряду очень изощрённых, но он хо­рошо иллюстрирует основной принцип работы ASP (и ASP.NET): данные переда­ются через форму HTML, обрабатываются серверным скриптом, и результат воз­вращается пользователю в виде сгенерированного кода HTML.

Соседние файлы в папке [ПСП]