Чтение HTTP-запроса
(Продолжительность занятия 15 минут)
Когда пользователь пытается получить данные с Web-страницы, запрос передается серверу в формате HTTP. Приложения ASP применяют для обработки HTTP-запроса и извлечения необходимых данных объект Request. Например, если пользователь отправляет заполненную форму, значения элементов управления формы (например, значения текстовых полей) передаются серверу в теле HTTP-запроса. Web-приложение средствами объекта Request может извлечь эти данные и, обработав их, возвратить пользователю персонализированную Web-страницу.
На этом занятии описано, как применять объект Request для извлечения информации из Web-страниц.
Изучив материал этого занятия, Вы сможете:
- описать пять наборов объекта Request, предназначенных для извлечения информации из HTTP-запроса;
- использовать набор QueryString объекта Request для получения информации из заголовка HTTP-запроса;
- использовать набор Form объекта Request для получения информации из тела HTTP-запроса.
Объект Request
Объект Request обеспечивает доступ ко всей информации, содержащейся в HTTP-запросе.
Наборы объекта Request
Объект Request содержит пять наборов, предназначенных для извлечения информации из HTTP-запроса.
Набор | Описание |
QueryString | Значения переменных в строке запроса HTTP, в частности значения, следующие за знаком вопроса (?) в HTTP-запросе |
Form | Значения элементов форм, размещенных в теле HTTP-запроса методом Post формы |
Cookies | Значения агентов HTTP-запроса |
ClientCertificate | Значения полей сертификата HTTP-запроса |
ServerVariables | Значения предопределенных переменных среды Web-сервера |
Использование объекта Request
Каждый набор объекта Request содержит переменные, которые Вы можете использовать для извлечения информации из HTTP-запроса.
Примечание Полный список
предопределенных переменных среды приведен в документе Active Server Page Roadmap,
который устанавливается вместе с AS Р.
Пример Здесь переменная
SERVER_NAME набора ServerVariables используется для получения имени Web-сервера:
Request.ServerVariables("SERVER_NAME")
Значения этих переменных помогут Вам создать динамические HTML-страницы для пользователей Вашего приложения.
Пример Здесь имя Web-сервера используется для создания гиперссылки на расположенную на нем Web-страницу:
<А HREF="http://<%= Request.ServerVariables("SERVER_NAME")%>
/MyPage.asp">Link to MyPage</A>
К переменным можно обращаться
и напрямую, не указывая имя набора.
Пример Вот пример непосредственного
обращения к серверной переменной:
Request("SERVER_NAME")
Если Вы обращаетесь к переменной напрямую, Web-сервер просматривает в ее поисках наборы в следующем порядке:
- QueryString;
- Form;
- Cookies;
- ClientCertificate;
- ServerVariables.
Если несколько наборов содержат переменные с одинаковым именем, используется первый из них.
Набор QueryString
Набор QueryString объекта Request предназначен для извлечения информации из заголовка HTTP-запроса.
Когда пользователь отправляет заполненную форму или добавляет параметры к URL-запросу, Вы можете средствами набора QueryString получить переданную информацию.
Из запроса считываются параметры, стоящие после знака вопроса (рис. 10.2).
Рис. 10.2 HTTP-запрос, содержащий передаваемую информацию
Примечание Набор
QueryString — это синтаксически разобранная версия переменной QUERY_STRING
набора ServerVariables. Набор QueryString позволяет Вам обращаться к параметрам
QUERY STRING по именам.
Чтобы извлечь всю информацию, переданную пользователем, просмотрите в цикле все значения, содержащиеся в строке запроса.
Пример Этот пример выполняет
цикл считывания значений из HTTP-запроса:
<%For Each Item In Request.QueryString
'Отображение элемента
Next %>
Если под одним именем передается несколько значений, например в форме списка, отдельные значения можно получить посредством индекса переменной набора QueryString.
Пример Здесь показано,
как получить доступ к первому и второму значениям переменной «sport» в наборе
QueryString:
Request,QueryString("sport")(0)
Request.QueryString("sport")(1)
Набор Form
Набор Form объекта Request извлекает информацию из тела HTTP-запроса.
Примечание Если форма
использует метод GET, в набор QueryString будет включена вся информация,
переданная в форме.
Набор Form содержит значения каждого стандартного элемента управления HTML, у которого есть атрибут NAME. Когда пользователь отправляет заполненную форму методом Post, средствами набора Form можно считать введенные им значения.
Пример Пусть пользователь
заполняет и отправляет такую HTML-форму:
<FORM ACTION="submit.asp" METHOD=POST> Name: <INPUT TYPE=TEXT NAME="name"xP> Favorite Color: <SELECT MULTIPLE NAME="color">
<OPTION>Red
<OPTION>Green
<OPTION>Blue
</SELECT><P>
<INPUT TYPE=SUBMIT NAME="cmdSubmit" VALUE="Submit">
</FORM>
Чтобы извлечь переданную информацию, воспользуйтесь следующим сценарием в файле submit.asp:
Request.Form("name")
Request.Form("color")
Кроме того, Вы можете считать переданную пользователем информацию в цикле по всем элементам формы.
Пример Здесь выполняется
цикл по всем стандартным элементам управления HTML в HTTP-запросе:
<% For Each Item in Request.Form
'Отображение элемента
Next %>
Если элемент управления формы имеет несколько значений, (как, например, в случае списка), для извлечения отдельных значений применяются индексы переменных набора Form.
Пример Здесь показано,
как получить доступ к первому и второму значениям переменной «color», выбранным
из многозначного списка:
Request.Form("color")(0)
Request.Form("color")(1)
Резюме
Объект Request позволяет извлечь значения, содержащиеся в HTTP-запросе. Объект Request обеспечивает доступ ко всей информации, передаваемой Web-серверу, а также содержит пять наборов для извлечения данных конкретного типа. Набор QueryString выделяет информацию из заголовка HTTP-запроса, набор Form — из тела HTTP-запроса, а набор Cookies извлекает значения агентов, переданных в HTTP-запросе. Набор ClientCertificate содержит значения полей сертификата запроса, а набор ServerVariables представляет значения предопределенных переменных среды Web-сервера.