asp.net技术浅析[zz]

http://www.blog.edu.cn/user1/16888/archives/2005/264800.shtml

大家好,见面了,北京的天气真是一团糟,不是下雨就是燥热的天气,我这东北来的得适应一段时间,说实话,我都来两年了,还是有点不习惯,哎,慢慢来吧。

先前我们学习了asp.net的基础语法,以及c#语言等一些知识;随着课程的慢慢展开,我们将逐步走向正题,即如何运用asp.net去做动态网页。接下来几天我就来说一说asp.net中常用对象的使用,从而来学习asp.net处理动态web页的一般方法。

今天说一说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"的参数值的语句为:Request.QueryString["id"];

QueryString主要用于收集http协议中get请求发送的数据,如果在一个请求事件中被请求的程序url地址出现了"?"号后的数据,则表示此次请求方式为get。get方法是http中的默认请求方法。

那么,如何发送get请求方法呢?

(1)<a href="/show.aspx?>显示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 /></td>

</tr>

</table>

</form>

</body>

</html>

//////////////////////////////////////////////////////////////////

6.其它Request属性和方法

FilePath 取得当前请求的文件路径

HttpMethod 取得当前请求的方法

Files 关乎文件的上传,后面会讲解

Params 获得QueryString+Form+ServerVariable+Cookies的集合

TotalBytes 请求内容的大小

Url 获得url信息

UserHostAddress 取得用户的IP地址

UserHostName 取得用户的主机名

UserLanguages 取得用户所用语言

好,今天就讲到这里,我举的例子一定要仔细看,一般地,学习一门语言就要多看一看别人写的程序,最后达到自己熟练的写出的地步。