Get:是以实体的方式得到由请求URI所指定资源的信息,如果请求URI只是一个数据产生过程,那么最终要在响应实体中返回的是处理过程的结果所指向的资源,而不是处理过程的描述。
Post:用来向目的服务器发出请求,要求它接受被附在请求后的实体,并把它当作请求队列中请求URI所指定资源的附加新子项,Post被设计成用统一的方法实现下列功能:
1:对现有资源的解释
2:向电子公告栏、新闻组、邮件列表或类似讨论组发信息。
3:提交数据块
4:通过附加操作来扩展数据库
get(相对不安全)和post(相对安全)对应的处理方法 doGet和doPost。
两种方式传递区别:
1、本质区别是:它们传递的流不同,get方式是把form里面的参数及其值的信息存放在url里面进行传递(所以会看到页面地址栏里有很多参数信息)
传递的(可以把周二我们小组一起写的那个jsp页面的method改为get试一下,当你点击提交的时候地址栏会出现那些参数)
就是说用get方式的话,后台Servlet只认url里面的参数和它们的值,但是地址栏长度有限,所以get方式传递的信息量做多只能有几K(所以上传图片等文件的method肯定是post)。而post参数是通过另外的流传递的,它把表单所有信息封装成信息块存放到 HTML HEADER(简单理解为页面的头部信息)里面传递到服务器(所以地址栏里看不到任何参数信息),所以它可以传递的数据量可以非常大
2、get方式规定表单的数据集的值必须为ASCII字符(不支持中文),所以Servlet接收时会很麻烦的处理中文问题(具体代码:
String title=new String(request.getParameter("title").getBytes("ISO-8859-1"),"gbk");
)。而post支持整个ISO10646字符集,默认是用ISO-8859-1编码(此格式不支持中文,所以要改为“gbk”),
3、使用环境:当请求仅仅是对数据进行查询或搜索(无隐私)的时候用get方式,比如我们点击下一页时<a href="Servleta?offSet=**?pageSize=**" />(链接默认也是一种get提交方式);当请求需要向数据库插入信息(插入留言、上传文件等)时用post(这样相对安全而且保证更大的信息量)