在B/S 应用程序中,前台与后台的数据交互,都是通 过HTML中 Form表 单完成的。Form 提供了两种数据传输 的方式—— get和 post。 虽然它们 都是数据的提交方式,但是在实际传输时 确有很大的不同,并且可能会对数据 产生 严重的影响。 虽然为 了方便的得到变 量值, Web容器已 经屏蔽了二者的一些差异,但是了解二者的差异在以后的编 程也会很有帮助的。
Form中的 get和 post方法,在数据传输过 程中分别对应 了HTTP 协议中的GET 和POST 方法。二者主要区别如下:
1、 Get是用来从服 务器上获 得数据,而Post 是用来向服务 器上 传递数据。
2 、Get将表 单中数据的按照 variable=value的形式,添加到action 所指向的URL后面,并且两者使用" ?"连 接,而各个变量之 间使用" &"连接; Post是将表单 中的数据放在form的数据体中,按照 变量和 值相对应 的方式,传递到 action所指向URL 。
3 、Get 是不安全的,因为在 传输过程,数据被放在 请求的URL 中,而如今现 有的很多服务器、代理服 务器或者用 户 代理都会将请 求URL 记录到日志文件中,然后放在某个地方,这样 就可能会有一些隐 私的信息被第三方看到。另外,用 户也可以在浏览 器上直接看到提交的数据,一些系统 内部消息将会一同显示在用 户面前。 Post的所有操作对 用户 来说都是不可 见的。
4、 Get传输 的数据量小,这主要是因 为受 URL 长度限制;而 Post可以 传输大量的数据,所以在上传 文件只能使用Post (当然还 有一个原因,将在后面的提到)。
5、 Get限制 Form表单 的数据集的 值 必须为ASCII 字符;而Post 支持整个ISO10646 字符集。
6 、Get是 Form的默 认方法。