网页数据的提交方式共有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提交。