玩转Web之servlet(四)---B/S是如何使用http协议完成通信过程的
2014-04-26 11:16
281 查看
在上一篇文章中,我简单的说了一下B/S架构的流程图,关于浏览器和服务器之间的通信过程知识含糊的说了一下,在这篇文章中我再总结一下B/S架构里是如何利用http协议去完成通信的。
![](http://img.blog.csdn.net/20140426102449812?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjExNjQ1Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
(一)通讯过程
1:浏览器建立于Web服务器的连接---->2:浏览器将请求数据打包(即请求数据包),并发送到服务器--->3:服务器将处理结果打包(响应数据包),发给浏览器-->4:关闭连接
注意:每次请求都需要重新建立连接
(二):数据格式
请求数据包:1:请求行:请求方式+请求资源路径+协议描述。例如:GET/image/http.png HTTP/1.1 即为从image目录下请求http.png这个文件
2:消息头:通过一些键值对,浏览器向服务器提供浏览器的类型和版本
3:实体内容:如果请求方式为post,会把请求参数添加到实体内容里面,如果是get请求会把请求参数添加到请求资源路径的后面。
响应数据包:1:状态行:协议描述+状态行+状态码
2:响应头:服务器会返回给浏览器一些信息,包括编码格式等
3:实体内容:返回的处理结果
(三)请求方式
常用的请求方式是get和post,只少目前我只使用这两种方式
get请求: get请求会把请求内容添加到请求资源路径后面,而因为请求资源路径的长度就是浏览器地址栏最大允许字符数,所以get请求可提交的数据非常少,而且请求内容都 显示在地址栏里,存在安全问题
那什么时候使用get请求呢?当直接在地址栏里输入地址,或者使用超链接都是使用get请求,表单提交的默认提交方式也是get提交
post请求:post请求会把请求加到实体内容里,所以可以请求大量数据,同时不会显示在地址栏里,所以相对安全。
当设置表单的提交方式为post时,会使用post请求;在Ajax提交中,设置提交方式为post,也是使用post提交。
(一)通讯过程
1:浏览器建立于Web服务器的连接---->2:浏览器将请求数据打包(即请求数据包),并发送到服务器--->3:服务器将处理结果打包(响应数据包),发给浏览器-->4:关闭连接
注意:每次请求都需要重新建立连接
(二):数据格式
请求数据包:1:请求行:请求方式+请求资源路径+协议描述。例如:GET/image/http.png HTTP/1.1 即为从image目录下请求http.png这个文件
2:消息头:通过一些键值对,浏览器向服务器提供浏览器的类型和版本
3:实体内容:如果请求方式为post,会把请求参数添加到实体内容里面,如果是get请求会把请求参数添加到请求资源路径的后面。
响应数据包:1:状态行:协议描述+状态行+状态码
2:响应头:服务器会返回给浏览器一些信息,包括编码格式等
3:实体内容:返回的处理结果
(三)请求方式
常用的请求方式是get和post,只少目前我只使用这两种方式
get请求: get请求会把请求内容添加到请求资源路径后面,而因为请求资源路径的长度就是浏览器地址栏最大允许字符数,所以get请求可提交的数据非常少,而且请求内容都 显示在地址栏里,存在安全问题
那什么时候使用get请求呢?当直接在地址栏里输入地址,或者使用超链接都是使用get请求,表单提交的默认提交方式也是get提交
post请求:post请求会把请求加到实体内容里,所以可以请求大量数据,同时不会显示在地址栏里,所以相对安全。
当设置表单的提交方式为post时,会使用post请求;在Ajax提交中,设置提交方式为post,也是使用post提交。
相关文章推荐
- 玩转Web之servlet(四)---B/S是如何使用http协议完成通信过程的
- 玩转Web之servlet(四)---B/S是如何使用http协议完成通信过程的
- 玩转Web之servlet(四)---B/S是怎样使用http协议完毕通信过程的
- [原创]java WEB学习笔记55:Struts2学习之路---详解struts2 中 Action,如何访问web 资源,解耦方式(使用 ActionContext,实现 XxxAware 接口),耦合方式(通过ServletActionContext,通过实现 ServletRequestAware, ServletContextAware 等接口的方式)
- 深入web请求过程:如何发起请求,HTTP协议解析,DNS域名解析
- Java_Web Project_如何使用Annotation配置Servlet?
- 使用Socket API如何与WEB服务器通信
- 如何使用IntelliJ IDEA 创建基于Maven构建的Web项目的过程
- 玩转web之servlet(六)---session介绍及简单使用(登录验证中保存信息)
- 玩转web之servlet(六)---session介绍及简单使用(登录验证中保存信息)
- 玩转web之servlet(六)---session介绍及简单使用(登录验证中保存信息)
- http通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤
- 如何在Windows环境下的VS中安装使用Google Protobuf完成SOCKET通信
- Servlet开发(一)如何在Myeclipse 中使用tomcat(配置tomcat,发布web项目)
- 如何使用JSP完成传输对象的过程
- Web - HTTP协议通信过程细节
- 如何在WEB下使用JSON
- 如何使用Docker部署Go Web应用程序
- 考虑下列生成二进制的过程,编译器被用来生成单个单元的目标代码,链接器被用来将多个目标单元合并成一个程序二进制,链接器如何改变指令和数据到内存地址的绑定?需要什么信息从编译器传递给链接器,以协助完成链接