javaEE(2)_http协议
一、HTTP协议简介
1、客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式.dos环境下可直接通过telnet命令连上web服务器,使用HTTP协议发送请求获取某个页面.
2、HTTP是超文本传输协议,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程,HTTP协议是学习JavaWEB开发的基石,不深入了解HTTP协议,就不能说掌握了WEB开发,更无法管理和维护一些复杂的WEB站点.
3、HTTP协议的版本有HTTP/1.0、HTTP/1.1,在HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源,HTTP1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源.可以使用telnet验证,目前都使用http1.1.
4、一个web页面中,使用img标签引用了三幅图片,当客户端访问服务器中的这个web页面时,客户端总共会访问几次服务器,即向服务器发送了几次HTTP请求.如下的一个页面:
<head>
<script type="text/javascript" src="..." />
<link rel="stylesheet" type="text/css" href="css/reset.css">
</head>
<body>
<img alt="a" src="a.png">
<img alt="b" src="b.png"/>
</body>
</html>
客户端访问这个页面时总共会向服务器发送5次请求,因为浏览器可以解析这些js,css,图片等资源,解析到这些相应在服务器上的资源时,则又会向服务器发送请求.所以将这些东西合并,减少服务器访问次数,可一定程度上减轻服务器的压力.访问新浪首页时会向服务器发送上百次请求.
二、HTTP请求
1、客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求.一个完整的HTTP请求包括如下内容:一个请求行、若干消息头、以及实体内容,请求头和实体内容之间有一个空行,如下所示 :

2、HTTP请求的细节——请求行
请求行中的GET称之为请求方式,请求方式目前主要有GET、 POST,用户如没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输地址访问,点超链接访问等都是get,用户如想把请求方式改为post,可通过更改表单的提交方式或ajax实现.不管POST或GET,都用于向服务器请求某个WEB资源,这两种方式的区别主要表现在数据传递上:如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如:GET /mail/1.html?name=abc&password=xyz HTTP/1.1,GET方式的特点:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K.如请求方式为POST方式,则可以在请求的实体内容中向服务器发送数据,Post方式的特点:传送的数据量无限制.
3、HTTP请求的细节——消息头
例:

主要消息头含义如下:

ps:1.accept */*代表可以接受任何数据.2.if-Modified-Since,服务器接受到这个时间后会和要访问资源的最后跟新时间比较,如果大于资源最后跟新时间就会拿客户端的缓冲而不会去访问服务器,返回状态码304或307,如果小于资源的跟新时间才会访问web资源,返回状态码200.
二、HTTP响应
1、一个HTTP响应代表服务器向客户端回送的数据,它包括:一个状态行、若干消息头、以及实体内容 .
例:

2、HTTP响应的细节——状态行
格式: HTTP版本号 状态码 原因叙述<CRLF>,举例:HTTP/1.1 200 OK,状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数.响应状态码分为5类,如下所示:

ps:100-199一般很少使用,307和304表示请求的资源是从缓冲拿的,404表示访问的web资源不存在,必定是客户端的问题,403表示没有访问资源的权限.
3、HTTP响应细节——常用响应头
服务器通过响应头可以完全控制浏览器行为,例:

含义如下:

HTTP实用头字段-range实现断点续传功能,略.
可编写servlet程序,设置响应头,来具体查看浏览器的行为。
javaEE(2)_http协议的更多相关文章
- Java精选笔记_HTTP协议
HTTP协议 HTTP概述 介绍 HTTP是Hyper Text Transfer Protocol的缩写,即超文本传输协议. HTTP是一种请求/响应式的协议,客户端在与服务器端建立连接后,就可以向 ...
- javaweb基础(4)_http协议
一.什么是HTTP协议 HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的 ...
- 互联网_http协议
一.定义 http协议叫做超文本传输协议,是从web服务器传输超文本到本地浏览器的协议. 二.特征 1.无连接:即每次连接仅处理一个请求,服务器处理完客户的请求,并收到客户端的响应后,即断开连接.采用 ...
- [转】:HTTP请求流程(一)----流程简介
http://www.cnblogs.com/stg609/archive/2008/07/06/1236966.html HTTP请求流程(一)----流程简介 最近一直在研究如何让asp.net实 ...
- [置顶] Java Web开发教程来袭
Java Web,是用Java技术来解决相关web互联网领域的技术总和.web包括:web服务器和web客户端两部分.Java在客户端的应用有java applet不过现在使用的很少,Java在服务器 ...
- JAVA学习之路与大家分享
这是我四年以前总结的JAVA学习之路,希望对初学者或想从事JAVA开发的人有帮助. 本人是软件工程专业出身,先后学过C.C++.JAVA.VB.delphi等等开发语言以及网络相关管理技术.哎,好久不 ...
- Python爬虫视频教程
├─第1章_[第0周]网络爬虫之前奏 │ ├─第1节_"网络爬虫"课程内容导学 │ │ 第1部分_全课程内容导学.mp4 │ │ 第2部分_全课程内容导学(WS00单元)学习资料. ...
- JavaEE 要懂的小事:一、图解Http协议
Writer :BYSocket(泥沙砖瓦浆木匠) 微 博:BYSocket 豆 瓣:BYSocket FaceBook:BYSocket Twitter ...
- [javaEE] HTTP协议总结
OSI网络7层协议 物理层 ==> 数据链路层 ==> 网络层ip ==> 传输层 TCP UDP ==>会话层 ==>表示层 ==> 应用层 HTTP FTP S ...
随机推荐
- Unity(2) 脚本简单操作
生命周期(按顺序排列) Awake():脚本唤醒,系统执行的第一个方法,在脚本声明周期内只执行一次,初始化一般可以在这里 Start():Awake之后,Update之前,只执行一次,一般在awake ...
- [Xcode 实际操作]八、网络与多线程-(11)使用同步Post方式查询IP地址信息
目录:[Swift]Xcode实际操作 本文将演示如何通过Post请求,同步获取IP地址信息. 一旦发送同步请求,程序将停止用户交互,直至服务器返回数据. 在项目导航区,打开视图控制器的代码文件[Vi ...
- 【MySQL】全量+增量的备份/恢复
生产环境中,有时需要做MySQL的备份和恢复工作.因MySQL是在运行过程中的,做全量备份需要时间,全量备份完成后又有数据变动,此时需要增量备份辅助.如果想恢复数据到一个空库(例如数据迁移或者上云等更 ...
- C 语言实例 - 复数相加
C 语言实例 - 复数相加 C 语言实例 C 语言实例 使用结构体(struct)将两个复数相加. 我们把形如 a+bi(a,b均为实数)的数称为复数,其中 a 称为实部,b 称为虚部,i 称为虚数单 ...
- iOS开发 - 多线程实现方案之NSOperation篇
NSOperation简介 1.实现多线程编程步骤: 配合使用NSOperation和NSOperationQueue实现多线程编程,我们不用考虑线程的生命周期.同步.加锁等问题,如下: 先将需要执行 ...
- python入门之实例-验证码
需求: 随机生成6位的验证码,要求有字母和数字 import random temp = "" for i in range(6): j = random.randrange(0, ...
- how browser handler file:/// link
1. why browser can only open .txt file directly, pop up open or save dialog for others? 2. html cann ...
- Unity Shader入门精要学习笔记 - 第3章 Unity Shader 基础
来源作者:candycat http://blog.csdn.net/candycat1992/article/ 概述 总体来说,在Unity中我们需要配合使用材质和Unity Shader才能达 ...
- docker镜像与容器
目录 docker镜像与容器 概述 分层存储 镜像与容器 删除镜像与容器 将容器中的改动提交到镜像 慎用 docker commit--构建镜像推荐使用dockerfile docker镜像与容器 概 ...
- vuex2 10分钟快速入门
因为太简单了,我直接就贴代码了~ #建立store.js import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex) export de ...