get请求和post请求的区别:
- 安全性:get请求的信息在请求头中保存 在网页的地址栏中可以看见 post请求的信息是封装在请求体内 在发送的过程中对 用户不可见
- 效率问题:get请求的传递速度是比post请求快的
- 传输数据量:get请求的数据在URL中存储 传输的数据量有限 post请求的信息在请求体中保存 数据量不做限制
- 传输数据类型:get请求只能传输ASCII字符 post请求可以传输多种数据类型(json类型)
- 缓存问题:get请求可以会将数据缓存起来 post请求不会缓存数据
- 生成方式:get请求:(1)网页中的超链接(2)在表单中的method属性为get时 (3)表单中的method属性为空时(4)直 接在地址栏中输入URl Post请求:当表单中的method属性为post时发送post请求
- 用户在刷新时:get请求不会有提示 post会弹出提示框询问用户是否重新提交
- 服务器获取数据的方式:get:服务器通过request.QueryString 来获取变量的值 post:通过request.form来获取数据
get请求比post请求快的原因:
- get请求的数据保存在URL中传输 post请求需要包含更多的请求头 因为post请求的数据保存在请求体内
- 数据的传输机制 数据在传输过程中get和post请求都是才有TCP协议 在数据到传输过程中get请求在三次握手后直接将数据将数据发送 但是post在tcp三次握手结束后是现将请求头发送过去 确认无误后再讲请求体发送过去
- get请求会将数据缓存起来 post不会
- post请求无法管道化传输数据
对get请求的传输数据量的误解:
- http协议是对get请求和post请求的长度没有限制的
- 限制是针对URL而不是的数据量的限制
- 对URL的限制是由浏览器和Web服务器来决定的 不同的浏览器和服务器对URL的限制是不同的
get请求和post请求的使用场景
通过以上分析可以对post请求和get请求做出判断:get请求的特点 速度快 安全性差 适合做条件筛选查询 对访问时间的要求较高但是对安全性要求低的操作(如淘宝京东的商品搜索 和 百度的信息筛选)post的请求的特点:速度慢 安全性高(数据隐私性 和数据传输安全性) 适合私密性高 要求安全性高的操作 如(各大社交网站的登录)
servlet中的doget和dopost请求的使用区别
一般来说我们是用不到doGet方法的,doGet方法提交表单的时候会在url后边显示提交的内容,所以不安全。而且doGet方法只能提交256个字符(1024字节),而doPost没有限制,因为get方式数据的传输载体是URL(提交方式能form,也能任意的URL链接),而POST是HTTP头键值对(只能以form方式提交)。通常我们使用的都是doPost方法,你只要在servlet中让这两个方法互相调用就行了,例如在doGet方法中这样写
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
再把业务逻辑直接写在doPost方法中。servlet碰到doGet方法调用直接就会去调用doPost因为他们的参数都一样。而且doGet方法处理中文问题很困难,要写过滤器之类的。