asp.net中Request对象 技术浅析 (转)
2013-07-12 10:45
218 查看
asp.net中Request对象 技术浅析 (转)
2009-09-21 15:24
2009-09-21 15:24
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中Request对象 技术浅析
- asp.net中Request对象 技术浅析 (转)
- asp.net中Request对象 技术浅析
- 一起谈.NET技术,ASP.NET配置错误页面浅析
- 一起谈.NET技术,浅析ASP.NET清空缓存时遇到的问题
- 一起谈.NET技术,浅析五大ASP.NET数据控件
- 转载:ASP.NET Request对象使用实例浅析
- 一起谈.NET技术,ASP.NET缓存分析和实践浅析
- 浅析ASP.NET应用ViewState技术
- asp.net通过反射技术实现Ajax(2)--前台javascript封装的Ajax对象
- ASP.NET 2.0 本地化技术之研究
- ASP.NET缓存技术 第一讲
- 项目技术经验总结一:asp.net+oracle部署,防火墙端口开设
- ASP.NET缓存分析和实践浅析
- 路由其实也可以很简单-------Asp.net WebAPI学习笔记(一) ASP.NET WebApi技术从入门到实战演练 C#面向服务WebService从入门到精通 DataTable与List<T>相互转换
- (转)javascript直接调用asp.net方法的技术 ——介绍pixysoft.ajax技术
- [asp,jsp,asp.net]文件上传技术浅议~~
- 庖丁解牛:纵向切入Asp.net 3.5控件和组件开发技术系列—教程
- 【收藏】本周ASP.NET英文技术文章推荐[04/29 - 05/05]
- ASP.NET模板引擎技术