现在的位置: 首页 > 综合 > 正文

GET提交和POST提交的区别

2014年04月05日 ⁄ 综合 ⁄ 共 1007字 ⁄ 字号 评论关闭

网页数据的提交方式共有7种,目前最常用的是GET提交和POST提交。

GET提交和POST提交都是在form表单中表现的。

下面我来详细的说说他们之间的区别:

form:标签中常见的属性定义

action:指定表单组件数据发送的位置。如果没有定义action属性,那么默认提交到当前的页面。

method:定义表单提交的方式,只有两种比较常用,GET和POST。如果没有指定method,默认就是GET提交方式。

GET提交和POST提交的区别:

1、

GET:会将提交的信息显示在地址栏上。

POST:不会将提交的信息显示在地址栏。

2、

GET:对于敏感信息不安全,因为显示在地址栏。

POST:对于敏感信息安全,因为不会在地址栏显示出来。

3、

GET:因为显示在地址栏,而地址栏的信息数据量是有限的,所以不可以提交大数据。

POST:可以提交大体积的数据。

4、

GET:会将信息封装到请求行,也就是http请求消息头之前。

POST:会将信息封装到请求体,也就是http请求消息头之后,请求体和请求头之间通过空行来进行分隔。

下面是需要注意的特殊之处:

对于服务器是tomcat服务器。

当提交中文时:

GET提交:服务端接受到中文数据,会用默认的编码表ISO88598-1解码。会出现乱码,所以必须要对该乱码进行一次编码再解码的动作。

当向服务端请求时,会将数据封装到一个请求对象中,request对象,可以通过该对象的String name=getParamter("user"),获取客户端提交的用户名。

但是解码用的ISO88598-1,name会出现乱码,new String(name.getBytes("ISO88598-1"),"GBK");

POST提交:服务端收到中文,可以使用编一次再解一次的方式,也就是和GET一样的方式可以完成乱码的解决。

通过它有另一种方式,就是直接使用request对象,调用一个方法。setCharacterEncoding("GBK");

只要设置了请求对象中的数据编码表,那么String name=request.getParamter("user");那么name的值是直接解码以后的正确数据。

注意:为什么GET方法用setCharacterEncoding("GBK");就不行呢?

因为该方法只对请求体中的数据进行解码,不对请求头中的数据进行解码。

综上所述:以后在进行表单数据提交时,建议使用POST提交。

抱歉!评论已关闭.