代码改变世界

关于Form中的post方法和get方法

2007-08-12 08:24  libiver  阅读(229)  评论(0编辑  收藏  举报

          今天在学习ASP.NE时,程序在运行时老是发生错误

          System.NullReferenceException: 未将对象引用设置到对象的实例。

          指向:String strUserName = this.Request.Form.Get("txtUserName").ToString();

          后来经过我的努力解决的问题,原因是我对表单的post和get提交方法的理解错误。我们都知道在B/S应用程序中,前台与后台的数据交互,都是通过HTML中Form表单完成的。Form提供了两种数据传输的方式——get和post。但这两种方法是有区别的。

        1、对于get提交的数据,WWW服务器将把数据放在环境变量QUERY_STRING
中,对于POST方法,数据被送到WWW服务器的STDOUT中,然后CGI从自己的STDIN
中读取。这就是我的程序出错的原因,Form表单的默认数据传输是get,而在我的程序中刚好把顺序搞错了。

        2、get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。

        3、get和post传输的数据长度不一样。

        4、get不安全,并且get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集