Request对象
当客户端发出请求执行asp.net程序时,CLR会将客户端的请求信息包含在Request对象中。这些请求信息包括请求报头,客户端的基本信息(如浏览器类型,浏览器版本号,用户所用的语言以及编码方式等),请求方法(如post,get),参数名,参数值等。
Request对象的调用方法:Request.Collection["Variable"];
其中Collection包括四种集合:QueryString,Form,Cookies,ServerVariables。
1.QueryString集合收集的信息来源于请求url地址中"?"号后面的数据,这些数据称作url附加信息。例如,www.sina.com/show.asp?id=111
在此url中,QueryString收集到的信息是"show.asp?"后面的数据"id=111"。此时,取得参数"id"的参数值的语句为:Request.QueryString["id"];
QueryString主要用于收集http协议中get请求发送的数据,如果在一个请求事件中被请求的程序url地址出现了"?"号后的数据,则表示此次请求方式为get。get方法是http中的默认请求方法。
那么,如何发送get请求方法呢?
(1)<a href="show.aspx?id=111">显示ID为111的文章</a>
(2)<form action="show.aspx" method="get">
<input type="text" name="id" value="111">
</form>
下面演示一个例子,这个例子中有两个程序,分别是form1.htm和GetInfo1.aspx,其中form1.htm发送get请求,GetInfo1.aspx接收get请求。
///////////////////////////////////////////////////
form1.htm
///////////////////////////////////////////////////
<HTML>
<HEAD>
<TITLE> 发送GET请求</TITLE>
</HEAD>
<BODY>
<center>
发送GET请求
<hr>
<form action="GetInfo1.aspx" method="get">
您的大名:<input type="text" name="nickname"><br>
<input type="submit" value="发送">
<form>
</center>
</BODY>
</HTML>
//////////////////////////////////////////
GetInfo1.aspx
//////////////////////////////////////////
<% @ Page Language="C#" %>
<html>
<head>
<title>接收GET请求</title>
</head>
<body>
<center>
接收GET方法传来的值:
<hr>
<%
string NickName = Request.QueryString["nickname"];<%--接收参数值--%>
Response.Write("GET方法传来的nickname的值为:"+NickName);
%>
</center>
</body>
</html>
2.get方法是将传递的数据追加至url中。url地址长度是有限制的,因此使用get方法所能传递的数据也是有限的。一般地,get方法能够传递256字节的数据,在多数情况下,使用get方法传递的数据长度是远远不够的,这时便需要使用http的另外一种请求方式post,post方法可传递的数据的最大值为2MB。
post请求必须由form发出。而且,在使用post请求方法的时候,需要将"method"设置为"post"。asp.net使用Request.Form方法接收post方法传递的数据:Request.Form["Variable"];
接下来也举两个例子,来说明post方法的使用,类似于上面的例子,注意对比。
//////////////////////////////////////////////
form2.htm//发送post请求
//////////////////////////////////////////////
<HTML>
<HEAD>
<TITLE> 发送POST请求</TITLE>
</HEAD>
<BODY>
<center>
发送POST请求
<hr>
<form action="GetInfo2.aspx" method="post">
您的大名:<input type="text" name="nickname"><br>
<input type="submit" value="发送">
<form>
</center>
</BODY>
</HTML>
//////////////////////////////////////////////////
GetInfo2.aspx//接收post请求
//////////////////////////////////////////////////
<% @ Page Language="C#" %>
<html>
<head>
<title>接收POST请求</title>
</head>
<body>
<center>
接收POST方法传来的值:
<hr>
<%
string NickName = Request.Form["nickname"];
Response.Write("POST方法传来的nickname的值为:"+NickName);
%>
</center>
</body>
</html>
3.cookie的使用在后面再讲。
4.ServerVariable
ServerVariable(环境变量)包含了客户机和服务器的系统信息。获得环境变量值的方法是:Request.ServerVariables["Variable"];
Variable参数 含义
HTTP_USER_AGENT 获得用户使用的浏览器类型和版本
REMOTE_ADDR 获取用户的IP地址
REQUEST_METHOD 获取请求的方法
LOCAL_ADDR 获取服务器的IP地址
SERVER_NAME 获取服务器的主机名
PATH_INFO 获取当前执行程序的虚拟路径
PATH_TRANSLATED 获取当前执行程序的绝对路径
CONTENT_LENGTH 获取请求程序所发送内容的字符总数
CONTENT_TYPE 获取请求的信息类型
GATEWAY_INTERFACE 获取网关接口
QUERY_STRING 获取url的附加信息
SCRIPT_NAME 获取当前程序的文件名(包含虚拟路径)
SERVER_PORT 获取服务器接受请求的端口
SERVER_PROTOCOL 获取服务器遵从的协议以及版本号
HTTP_ACCEPT_LANGUAGE 获取用户所使用的语言
最后举一个关于ServerVariable的例子,这个例子的结果也可作为日后查阅ServerVariable集合的原始资料。
/////////////////////////////////////////////////////////
<% @ Page Language="C#" %>
<% @ Import Namespace="System.Data" %>
<Script Language="C#" Runat="Server">
public void Page_Load(Object src,EventArgs e)
{
//取得ServerVariables变量集合
NameValueCollection ServerVariables = Request.ServerVariables;
//产生一个数据集合,它的用法,我们后面再讨论
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("环境变量",typeof(string)));
dt.Columns.Add(new DataColumn("变量值",typeof(string)));
foreach(string SingleVariable in ServerVariables)
{
dr = dt.NewRow();
dr[0] = SingleVariable;
dr[1] = ServerVariables[SingleVariable].ToString();
dt.Rows.Add(dr);
}
DataGrid1.DataSource = new DataView(dt);
DataGrid1.DataBind();
}
</script>
<html>
<head>
<title></title>
</head>
<body>
<ASP:DataGrid id="DataGrid1" runat="server"
BorderColor="black"
BorderWidth="1"
GridLines="Both"
CellPadding="3"
CellSpacing="0"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
AlternatingItemStyle-BackColor="#eeeeee"
/>
</body>
</html>
//////////////////////////////////////
5.Request的Browser对象
Request.Browser.Browser//检测浏览器的类型
Request.Browser.Version//检测浏览器的版本
Request.Browser.ActiveXControls//检测浏览器是否支持ActiveX控件
Request.Browser.Cookies//检测浏览器是否支持Cookies
Request.Browser.VBScript//检测浏览器是否支持VBScript
下面这个例子说明Browser所有能够访问的属性。
////////////////////////////////////////////////////////////
<html>
<head>
<script runat="server" language="c#">
public void Page_Load(Object Source, EventArgs E)
{
HttpBrowserCapabilities bc= Request.Browser;
Welcome.Text = "您好,您正在使用 " + bc.Browser + " v." + bc.Version + ",你的运行平台是 " + bc.Platform ;
ActiveXControls.Text = bc.ActiveXControls.ToString();
AOL.Text = bc.AOL.ToString();
BackgroundSounds.Text = bc.BackgroundSounds.ToString();
Beta.Text = bc.Beta.ToString();
Browser.Text = bc.Browser.ToString();
CDF.Text = bc.CDF.ToString();
Cookies.Text = bc.Cookies.ToString();
Crawler.Text = bc.Crawler.ToString();
Frames.Text = bc.Frames.ToString();
JavaApplets.Text = bc.JavaApplets.ToString();
JavaScript.Text = bc.JavaScript.ToString();
MajorVersion.Text = bc.MajorVersion.ToString();
MinorVersion.Text = bc.MinorVersion.ToString();
Platform.Text = bc.Platform.ToString();
Tables.Text = bc.Tables.ToString();
Type.Text = bc.Type.ToString();
VBScript.Text = bc.VBScript.ToString();
Version.Text = bc.Version.ToString();
Win16.Text = bc.Win16.ToString();
Win32.Text = bc.Win32.ToString();
}
</script>
<style>
body{font-size:9pt}
td{font-size:9pt}
</style>
</head>
<body>
<form runat="server" method="post">
您的浏览器信息已经完全在我们的掌握中了^&^:<br>
<asp:Label runat="server" id="Welcome" Font-Bold="True" />
<table border="1" width="400" bordercolor="black">
<tr bgcolor="skyblue">
<td width="50%"><b>浏览器属性<b></td>
<td width="50%"><b>检测结果<b></td>
</tr>
<tr >
<td width="50%">ActiveXControls:</td>
<td width="50%"><asp:Label runat="server" id="ActiveXControls" /></td>
</tr>
<tr bgcolor="skyblue">
<td width="50%">AOL:</td>
<td width="50%"><asp:Label runat="server" id="AOL" /></td>
</tr>
<tr >
<td width="50%">BackgroundSounds:</td>
<td width="50%"><asp:Label runat="server" id="BackgroundSounds" /></td>
</tr>
<tr bgcolor="skyblue">
<td width="50%">Beta:</td>
<td width="50%"><asp:Label runat="server" id="Beta" /></td>
</tr>
<tr >
<td width="50%">Browser:</td>
<td width="50%"><asp:Label runat="server" id="Browser" /></td>
</tr>
<tr bgcolor="skyblue">
<td width="50%">CDF:</td>
<td width="50%"><asp:Label runat="server" id="CDF" /></td>
</tr>
<tr >
<td width="50%">Cookies:</td>
<td width="50%"><asp:Label runat="server" id="Cookies" /></td>
</tr>
<tr bgcolor="skyblue">
<td width="50%">Crawler:</td>
<td width="50%"><asp:Label runat="server" id="Crawler" /></td>
</tr>
<tr>
<td width="50%">Frames:</td>
<td width="50%"><asp:Label runat="server" id="Frames" /></td>
</tr>
<tr bgcolor="skyblue">
<td width="50%">JavaApplets:</td>
<td width="50%"><asp:Label runat="server" id="JavaApplets" /></td>
</tr>
<tr>
<td width="50%">JavaScript:</td>
<td width="50%"><asp:Label runat="server" id="JavaScript" /></td>
</tr>
<tr bgcolor="skyblue">
<td width="50%">MajorVersion:</td>
<td width="50%"><asp:Label runat="server" id="MajorVersion" /></td>
</tr>
<tr>
<td width="50%">MinorVersion:</td>
<td width="50%"><asp:Label runat="server" id="MinorVersion" /></td>
</tr>
<tr bgcolor="skyblue">
<td width="50%">Platform:</td>
<td width="50%"><asp:Label runat="server" id="Platform" /></td>
</tr>
<tr>
<td width="50%">Tables:</td>
<td width="50%"><asp:Label runat="server" id="Tables" /></td>
</tr>
<tr bgcolor="skyblue">
<td width="50%">Type:</td>
<td width="50%"><asp:Label runat="server" id="Type" /></td>
</tr>
<tr>
<td width="50%">VBScript:</td>
<td width="50%"><asp:Label runat="server" id="VBScript" /></td>
</tr>
<tr bgcolor="skyblue">
<td width="50%">Version:</td>
<td width="50%"><asp:Label runat="server" id="Version" /></td>
</tr>
<tr>
<td width="50%">Win16:</td>
<td width="50%"><asp:Label runat="server" id="Win16" /></td>
</tr>
<tr bgcolor="skyblue">
<td width="50%">Win32:</td>
<td width="50%"><asp:Label runat="server" id="Win32" /></td>
</tr>
</table>
</form>
</body>
</html>
//////////////////////////////////////////////////////////////////
6.其它Request属性和方法
FilePath 取得当前请求的文件路径
HttpMethod 取得当前请求的方法
Files 关乎文件的上传,后面会讲解
Params 获得QueryString+Form+ServerVariable+Cookies的集合
TotalBytes 请求内容的大小
Url 获得url信息
UserHostAddress 取得用户的IP地址
UserHostName 取得用户的主机名
UserLanguages 取得用户所用语言
当客户端发出请求执行asp.net程序时,CLR会将客户端的请求信息包含在Request对象中。这些请求信息包括请求报头,客户端的基本信息(如浏览器类型,浏览器版本号,用户所用的语言以及编码方式等),请求方法(如post,get),参数名,参数值等。
Request对象的调用方法:Request.Collection["Variable"];
其中Collection包括四种集合:QueryString,Form,Cookies,ServerVariables。
1.QueryString集合收集的信息来源于请求url地址中"?"号后面的数据,这些数据称作url附加信息。例如,www.sina.com/show.asp?id=111
在此url中,QueryString收集到的信息是"show.asp?"后面的数据"id=111"。此时,取得参数"id"的参数值的语句为:Request.QueryString["id"];
QueryString主要用于收集http协议中get请求发送的数据,如果在一个请求事件中被请求的程序url地址出现了"?"号后的数据,则表示此次请求方式为get。get方法是http中的默认请求方法。
那么,如何发送get请求方法呢?
(1)<a href="show.aspx?id=111">显示ID为111的文章</a>
(2)<form action="show.aspx" method="get">
<input type="text" name="id" value="111">
</form>
下面演示一个例子,这个例子中有两个程序,分别是form1.htm和GetInfo1.aspx,其中form1.htm发送get请求,GetInfo1.aspx接收get请求。
///////////////////////////////////////////////////
form1.htm
///////////////////////////////////////////////////
<HTML>
<HEAD>
<TITLE> 发送GET请求</TITLE>
</HEAD>
<BODY>
<center>
发送GET请求
<hr>
<form action="GetInfo1.aspx" method="get">
您的大名:<input type="text" name="nickname"><br>
<input type="submit" value="发送">
<form>
</center>
</BODY>
</HTML>
//////////////////////////////////////////
GetInfo1.aspx
//////////////////////////////////////////
<% @ Page Language="C#" %>
<html>
<head>
<title>接收GET请求</title>
</head>
<body>
<center>
接收GET方法传来的值:
<hr>
<%
string NickName = Request.QueryString["nickname"];<%--接收参数值--%>
Response.Write("GET方法传来的nickname的值为:"+NickName);
%>
</center>
</body>
</html>
2.get方法是将传递的数据追加至url中。url地址长度是有限制的,因此使用get方法所能传递的数据也是有限的。一般地,get方法能够传递256字节的数据,在多数情况下,使用get方法传递的数据长度是远远不够的,这时便需要使用http的另外一种请求方式post,post方法可传递的数据的最大值为2MB。
post请求必须由form发出。而且,在使用post请求方法的时候,需要将"method"设置为"post"。asp.net使用Request.Form方法接收post方法传递的数据:Request.Form["Variable"];
接下来也举两个例子,来说明post方法的使用,类似于上面的例子,注意对比。
//////////////////////////////////////////////
form2.htm//发送post请求
//////////////////////////////////////////////
<HTML>
<HEAD>
<TITLE> 发送POST请求</TITLE>
</HEAD>
<BODY>
<center>
发送POST请求
<hr>
<form action="GetInfo2.aspx" method="post">
您的大名:<input type="text" name="nickname"><br>
<input type="submit" value="发送">
<form>
</center>
</BODY>
</HTML>
//////////////////////////////////////////////////
GetInfo2.aspx//接收post请求
//////////////////////////////////////////////////
<% @ Page Language="C#" %>
<html>
<head>
<title>接收POST请求</title>
</head>
<body>
<center>
接收POST方法传来的值:
<hr>
<%
string NickName = Request.Form["nickname"];
Response.Write("POST方法传来的nickname的值为:"+NickName);
%>
</center>
</body>
</html>
3.cookie的使用在后面再讲。
4.ServerVariable
ServerVariable(环境变量)包含了客户机和服务器的系统信息。获得环境变量值的方法是:Request.ServerVariables["Variable"];
Variable参数 含义
HTTP_USER_AGENT 获得用户使用的浏览器类型和版本
REMOTE_ADDR 获取用户的IP地址
REQUEST_METHOD 获取请求的方法
LOCAL_ADDR 获取服务器的IP地址
SERVER_NAME 获取服务器的主机名
PATH_INFO 获取当前执行程序的虚拟路径
PATH_TRANSLATED 获取当前执行程序的绝对路径
CONTENT_LENGTH 获取请求程序所发送内容的字符总数
CONTENT_TYPE 获取请求的信息类型
GATEWAY_INTERFACE 获取网关接口
QUERY_STRING 获取url的附加信息
SCRIPT_NAME 获取当前程序的文件名(包含虚拟路径)
SERVER_PORT 获取服务器接受请求的端口
SERVER_PROTOCOL 获取服务器遵从的协议以及版本号
HTTP_ACCEPT_LANGUAGE 获取用户所使用的语言
最后举一个关于ServerVariable的例子,这个例子的结果也可作为日后查阅ServerVariable集合的原始资料。
/////////////////////////////////////////////////////////
<% @ Page Language="C#" %>
<% @ Import Namespace="System.Data" %>
<Script Language="C#" Runat="Server">
public void Page_Load(Object src,EventArgs e)
{
//取得ServerVariables变量集合
NameValueCollection ServerVariables = Request.ServerVariables;
//产生一个数据集合,它的用法,我们后面再讨论
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("环境变量",typeof(string)));
dt.Columns.Add(new DataColumn("变量值",typeof(string)));
foreach(string SingleVariable in ServerVariables)
{
dr = dt.NewRow();
dr[0] = SingleVariable;
dr[1] = ServerVariables[SingleVariable].ToString();
dt.Rows.Add(dr);
}
DataGrid1.DataSource = new DataView(dt);
DataGrid1.DataBind();
}
</script>
<html>
<head>
<title></title>
</head>
<body>
<ASP:DataGrid id="DataGrid1" runat="server"
BorderColor="black"
BorderWidth="1"
GridLines="Both"
CellPadding="3"
CellSpacing="0"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
AlternatingItemStyle-BackColor="#eeeeee"
/>
</body>
</html>
//////////////////////////////////////
5.Request的Browser对象
Request.Browser.Browser//检测浏览器的类型
Request.Browser.Version//检测浏览器的版本
Request.Browser.ActiveXControls//检测浏览器是否支持ActiveX控件
Request.Browser.Cookies//检测浏览器是否支持Cookies
Request.Browser.VBScript//检测浏览器是否支持VBScript
下面这个例子说明Browser所有能够访问的属性。
////////////////////////////////////////////////////////////
<html>
<head>
<script runat="server" language="c#">
public void Page_Load(Object Source, EventArgs E)
{
HttpBrowserCapabilities bc= Request.Browser;
Welcome.Text = "您好,您正在使用 " + bc.Browser + " v." + bc.Version + ",你的运行平台是 " + bc.Platform ;
ActiveXControls.Text = bc.ActiveXControls.ToString();
AOL.Text = bc.AOL.ToString();
BackgroundSounds.Text = bc.BackgroundSounds.ToString();
Beta.Text = bc.Beta.ToString();
Browser.Text = bc.Browser.ToString();
CDF.Text = bc.CDF.ToString();
Cookies.Text = bc.Cookies.ToString();
Crawler.Text = bc.Crawler.ToString();
Frames.Text = bc.Frames.ToString();
JavaApplets.Text = bc.JavaApplets.ToString();
JavaScript.Text = bc.JavaScript.ToString();
MajorVersion.Text = bc.MajorVersion.ToString();
MinorVersion.Text = bc.MinorVersion.ToString();
Platform.Text = bc.Platform.ToString();
Tables.Text = bc.Tables.ToString();
Type.Text = bc.Type.ToString();
VBScript.Text = bc.VBScript.ToString();
Version.Text = bc.Version.ToString();
Win16.Text = bc.Win16.ToString();
Win32.Text = bc.Win32.ToString();
}
</script>
<style>
body{font-size:9pt}
td{font-size:9pt}
</style>
</head>
<body>
<form runat="server" method="post">
您的浏览器信息已经完全在我们的掌握中了^&^:<br>
<asp:Label runat="server" id="Welcome" Font-Bold="True" />
<table border="1" width="400" bordercolor="black">
<tr bgcolor="skyblue">
<td width="50%"><b>浏览器属性<b></td>
<td width="50%"><b>检测结果<b></td>
</tr>
<tr >
<td width="50%">ActiveXControls:</td>
<td width="50%"><asp:Label runat="server" id="ActiveXControls" /></td>
</tr>
<tr bgcolor="skyblue">
<td width="50%">AOL:</td>
<td width="50%"><asp:Label runat="server" id="AOL" /></td>
</tr>
<tr >
<td width="50%">BackgroundSounds:</td>
<td width="50%"><asp:Label runat="server" id="BackgroundSounds" /></td>
</tr>
<tr bgcolor="skyblue">
<td width="50%">Beta:</td>
<td width="50%"><asp:Label runat="server" id="Beta" /></td>
</tr>
<tr >
<td width="50%">Browser:</td>
<td width="50%"><asp:Label runat="server" id="Browser" /></td>
</tr>
<tr bgcolor="skyblue">
<td width="50%">CDF:</td>
<td width="50%"><asp:Label runat="server" id="CDF" /></td>
</tr>
<tr >
<td width="50%">Cookies:</td>
<td width="50%"><asp:Label runat="server" id="Cookies" /></td>
</tr>
<tr bgcolor="skyblue">
<td width="50%">Crawler:</td>
<td width="50%"><asp:Label runat="server" id="Crawler" /></td>
</tr>
<tr>
<td width="50%">Frames:</td>
<td width="50%"><asp:Label runat="server" id="Frames" /></td>
</tr>
<tr bgcolor="skyblue">
<td width="50%">JavaApplets:</td>
<td width="50%"><asp:Label runat="server" id="JavaApplets" /></td>
</tr>
<tr>
<td width="50%">JavaScript:</td>
<td width="50%"><asp:Label runat="server" id="JavaScript" /></td>
</tr>
<tr bgcolor="skyblue">
<td width="50%">MajorVersion:</td>
<td width="50%"><asp:Label runat="server" id="MajorVersion" /></td>
</tr>
<tr>
<td width="50%">MinorVersion:</td>
<td width="50%"><asp:Label runat="server" id="MinorVersion" /></td>
</tr>
<tr bgcolor="skyblue">
<td width="50%">Platform:</td>
<td width="50%"><asp:Label runat="server" id="Platform" /></td>
</tr>
<tr>
<td width="50%">Tables:</td>
<td width="50%"><asp:Label runat="server" id="Tables" /></td>
</tr>
<tr bgcolor="skyblue">
<td width="50%">Type:</td>
<td width="50%"><asp:Label runat="server" id="Type" /></td>
</tr>
<tr>
<td width="50%">VBScript:</td>
<td width="50%"><asp:Label runat="server" id="VBScript" /></td>
</tr>
<tr bgcolor="skyblue">
<td width="50%">Version:</td>
<td width="50%"><asp:Label runat="server" id="Version" /></td>
</tr>
<tr>
<td width="50%">Win16:</td>
<td width="50%"><asp:Label runat="server" id="Win16" /></td>
</tr>
<tr bgcolor="skyblue">
<td width="50%">Win32:</td>
<td width="50%"><asp:Label runat="server" id="Win32" /></td>
</tr>
</table>
</form>
</body>
</html>
//////////////////////////////////////////////////////////////////
6.其它Request属性和方法
FilePath 取得当前请求的文件路径
HttpMethod 取得当前请求的方法
Files 关乎文件的上传,后面会讲解
Params 获得QueryString+Form+ServerVariable+Cookies的集合
TotalBytes 请求内容的大小
Url 获得url信息
UserHostAddress 取得用户的IP地址
UserHostName 取得用户的主机名
UserLanguages 取得用户所用语言