表单在网页中主要负责数据采集功能、整体把数据传递过去,大大提高向服务器提交数据的效率。
表单三个基本组成部分:
表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法。
表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。
表单按钮:包括提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作。
表单格式:
<form name="表单的名称" method="get | post" action="URL">
......
</form>
Form表单数据提交到服务器的方式有两种:Get和Post方式。
Request.Form["UserName"].ToString();
或者:
Request.Form.Get["UserName"].ToString();
Get方法接收:
Request["UserName"].ToString();
(1) get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML 。 HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
(2) 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
(3) get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
(4) get安全性非常低,post安全性较高。
post 和 get 的联系:
GET 将表单数据附加到请求页面的URL地址后面。GET方法用来传送少量数据, URL的长度限制在8192个字符以内。如果发送的数据量太大,数据将被截断,从而导致意外的处理结果。
POST 在HTTP请求中嵌入表单数据。POST方法可用来发送大量数据,而且对于用户名、密码和信用卡等机密信息的发送,POST方法比GET方法更安全。
特别说明
一般来说,尽量避免使用Get方式提交表单,因为有可能会导致安全问题。比如说在登陆表单中用Get方式,用户输入的用户名和密码将在地址栏中暴露无遗。但是在分页程序中,用Get方式就比用Post好。本例中用到的表单的属性解释(ASP部分请参考第四部分): Get把参数添加到action属性指定的地址中,并以锚方式打开。Post通过HTTP post处理发送数据。
Form数据集合
使用Request的Form集合来获取客户端通过POST方法传送的表单数据,例如,服务器上有两个网页form.htm和do.aspx,form.htm中包含一个表单,表单传送数据的方法为POST,并且表单提交到同一目录下的do.aspx。form.htm的代码如下:<html>
<head>
<title>使用POST传送数据</title>
</head>
<body>
<form method="post" action="do.aspx">
请输入您的名字:<input type="text" name="mingzi"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
在do.aspx中将使用Request.Form["mingzi"]来获取用户输入的名字,do.aspx的代码如下:
private void Page_Load(Object o,EventArgs e)
//页面加载后即显示表单数据
{
string strmessage="您的名字为:"; //定义字符串变量并赋初值
strmessage+= Request.Form["mingzi"]; //把表单数据串接到变量
Response.Write(strmessage);//输出变量
}
QueryString数据集合
可以利用QueryString集合来获取客户端通过GET方法传送的表单数据,如果把form.htm中表单的method属性值由POST改为GET,则在do.aspx中就需要通过Request.QueryString ["mingzi"]来 获取输入的名字。因为GET方法传送数据有一定的限制并且不安全,所以表单一般不使用GET方法。private void Page_Load(object sender, System.EventArgs e)
{
if(Request.QueryString["mingzi"].ToString()!="")
Response.Write("您的名字是:"+Request.QueryString["mingzi"].ToString());
}
在Web应用程序开发中,QueryString常用来获取URL查询字符串中变量的值,这与使用GET方法传送表单数据的情况一样。随着实践的深入逐步的加深理解!