Get与Post请求的区别
Get与Post请求的区别
1、参数传递方式
Get:通过Url传递参数,Url与参数之间用?隔开,多个参数之间用&隔开,也是表单的默认提交方式。
Post:所有操作对用户来说都是不可见的,相对于get方式更安全。
2、传送数据量大小不同
Get传送的数据量较小,这主要是因为受URL长度限制;Post传送的数据量较大,一般被默认为不受限制。
3、信息缓存
Get提交的信息能被缓存,请求保留在浏览器历史记录中;Post提交的数据一般不能被缓存,请求不会保留在浏览器历史记录中。
4、编码方式与乱码处理问题
Get:默认编码编码类型是:application/x-www-form-urlencoded;Tomcat8之前的版本,默认编码格式是iso-8859-1,从Tomcat8版本之后默认编码改为UTF-8,所以如果是Tomcat8及以上版本就不需要进行转码处理,如果是Tomcat7及之前版本可以使用以下方法进行转码:
String name = request.getParameter("name");
String encodingName=new String(name.getBytes("iso-8859-1"),"utf-8");
Post:支持多种编码类型,application/x-www-form-urlencoded 或 multipart/form-data。可以使用以下方法进行转码:
request.setCharacterEncoding("utf-8");
在这里顺便说一下响应的乱码处理方法,后面我们还会详细讲解:
response.setContentType("text/html;charset=utf-8");
总结:
Get参数会直接显示到URL不安全,Post在请求主体中,比较安全。
Get传送数据量大小有限制,根据浏览器不同限制不同,一般为2KB-6KB。Post无限制。
Get缓存数据会直接将参数缓,保留在浏览器历史记录中,不安全。Post缓存时不缓存参数,不保 留在浏览器记录中。
Get只能有一个种编码方式,转码的时候使用字符串转字节的方式,Post支持多种编码方式,转码直接使用setCharacterEconding()即可。
由于Get具有缓存功能,一般用来直接获取数据,提高查询速度; Post是发送数据到服务器作存储,适合于增删改操作。