PageRenderTime 57ms CodeModel.GetById 34ms RepoModel.GetById 1ms app.codeStats 0ms

/_posts/2014-08-30-http-get-post.md

https://github.com/anaer/anaer.github.io
Markdown | 57 lines | 48 code | 9 blank | 0 comment | 0 complexity | c4210d9f5225c61b8097d39c19ba0d5d MD5 | raw file
  1. ---
  2. layout: post
  3. title: "web Form 表单 get与post区别"
  4. description: ""
  5. category: Java
  6. tags: [Java]
  7. ---
  8. #### web Form 表单 get与post区别
  9. ```
  10. get和post方法的不同 在B/S应用程序中,前台与后台的数据交互,都是通过HTML中Form表单完成的。
  11. Form提供了两种数据传输的方式——get和post。虽然它们都是数据的提交方式,但是在实际传输时确有很大的不同,
  12. 并且可能会对数据产生严重的影响。虽然为了方便的得到变量值,Web容器已经屏蔽了二者的一些差异,
  13. 但是了解二者的差异在以后的编程也会很有帮助的。 Form中的get和post方法,
  14. 在数据传输过程中分别对应了HTTP协议中的GET和POST方法。
  15. 二者主要区别如下:
  16. 1、Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。
  17. 2、Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,
  18. 而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,
  19. 传递到action所指向URL。
  20. 3、Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、
  21. 代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,
  22. 这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,
  23. 一些系统内部消息将会一同显示在用户面前。Post的所有操作对用户来说都是不可见的。
  24. 4、Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,
  25. 所以在上传文件只能使用Post(当然还有一个原因,将在后面的提到)。
  26. 5、Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。
  27. 6、Get是Form的默认方法。
  28. GET 和 POST 的数据格式都是一样的: GET 支持的最大字节限制是 2048 Bytes POST 支持的最大字节限制是 2GB
  29. ```
  30. #### 参数转换
  31. ```java
  32. TreeMap<String, String[]> params = new TreeMap(map);
  33. String queryString = "";
  34. for (String key : params.keySet()) {
  35. String[] values = params.get(key);
  36. for (String value : values) {
  37. queryString += key + "=" + value + "&";
  38. }
  39. }
  40. // 去掉最后一个空格
  41. queryString = queryString.substring(0, queryString.length() - 1);
  42. System.out.println("POST参数:" + queryString);
  43. ```
  44. #### 参考
  45. * [web Form 表单method="get" method="post" 区别](http://www.cnblogs.com/yzc19838458/p/3946180.html)
  46. * [get/post发送HTTP请求3](http://www.cnblogs.com/java-pan/archive/2012/05/05/HTTP-POST-byte.html)
  47. * [java如何得到GET和POST请求URL和参数列表 ](http://blog.csdn.net/yaerfeng/article/details/18942739)
  48. * [解决get方法传递URL参数中文乱码问题](http://www.cnblogs.com/maxupeng/archive/2010/11/26/1889258.html)