Занятие 3. Чтение HTTP-запроса
(Продолжительность занятия 15 минут)
Когда пользователь пытается получить данные с Web-страницы, запрос передается серверу в формате HTTP. Приложения ASP применяют для обработки HTTP-запроса и извлечения необходимых данных объект Request. Например, если пользователь отправляет заполненную форму, значения элементов управления формы (например, значения текстовых полей) передаются серверу в теле HTTP-запроса. Web-приложение средствами объекта Request может извлечь эти данные и, обработав их, возвратить пользователю персонализированную Web-страницу.
На этом занятии описано, как применять объект Request для извлечения информации из Web-страниц.
Объект Request
Объект Request обеспечивает доступ ко всей информации, содержащейся в HTTP-запросе.
Наборы объекта Request
Объект Request содержит пять наборов, предназначенных для извлечения информации из HTTP-запроса.
Набор |
Описание |
QueryString |
Значения переменных в строке запроса HTTP, в частности значения, следующие за знаком вопроса (?) в HTTP-запросе |
Form |
Значения элементов форм, размещенных в теле HTTP-запроса методом Post формы |
Cookies |
Значения агентов HTTP-запроса |
ClientCertificate |
Значения полей сертификата HTTP-запроса |
ServerVariables |
Значения предопределенных переменных среды Web-сервера |
Использование объекта Request
Каждый набор объекта Request содержит переменные, которые Вы можете использовать для извлечения информации из HTTP-запроса.
Request.ServerVariables("SERVER_NAME")
Значения этих переменных помогут Вам создать динамические HTML-страницы для пользователей Вашего приложения.
<А HREF="http://<%= Request.ServerVariables("SERVER_NAME")%>
/MyPage.asp">Link to MyPage</A>
К переменным можно обращаться и напрямую, не указывая имя набора.
Request("SERVER_NAME")
Если Вы обращаетесь к переменной напрямую, Web-сервер просматривает в ее поисках наборы в следующем порядке:
Если несколько наборов содержат переменные с одинаковым именем, используется первый из них.
Набор QueryString
Набор QueryString объекта Request предназначен для извлечения информации из заголовка HTTP-запроса.
Когда пользователь отправляет заполненную форму или добавляет параметры к URL-запросу, Вы можете средствами набора QueryString получить переданную информацию.
Из запроса считываются параметры, стоящие после знака вопроса (рис. 10.2).
Рис. 10.2 HTTP-запрос, содержащий передаваемую информацию
Чтобы извлечь всю информацию, переданную пользователем, просмотрите в цикле все значения, содержащиеся в строке запроса.
<%For Each Item In Request.QueryString
'Отображение элемента
Next %>
Если под одним именем передается несколько значений, например в форме списка, отдельные значения можно получить посредством индекса переменной набора QueryString.
Request,QueryString("sport")(0)
Request.QueryString("sport")(1)
Набор Form
Набор Form объекта Request извлекает информацию из тела HTTP-запроса.
Набор Form содержит значения каждого стандартного элемента управления HTML, у которого есть атрибут NAME. Когда пользователь отправляет заполненную форму методом Post, средствами набора Form можно считать введенные им значения.
<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")
Кроме того, Вы можете считать переданную пользователем информацию в цикле по всем элементам формы.
<% For Each Item in Request.Form
'Отображение элемента
Next %>
Если элемент управления формы имеет несколько значений, (как, например, в случае списка), для извлечения отдельных значений применяются индексы переменных набора Form.
Request.Form("color")(0)
Request.Form("color")(1)
Резюме
Объект Request позволяет извлечь значения, содержащиеся в HTTP-запросе. Объект Request обеспечивает доступ ко всей информации, передаваемой Web-серверу, а также содержит пять наборов для извлечения данных конкретного типа. Набор QueryString выделяет информацию из заголовка HTTP-запроса, набор Form — из тела HTTP-запроса, а набор Cookies извлекает значения агентов, переданных в HTTP-запросе. Набор ClientCertificate содержит значения полей сертификата запроса, а набор ServerVariables представляет значения предопределенных переменных среды Web-сервера.