Java Web
HTTP协议
HTTP协议概述
- 概述
- HTTP协议(Hypertext Transfer Protocol,超文本传输协议),是一个客户端请求和响应的标准协议,这个协议详细规定了浏览器和万维网服务器之间相互通信的规则。用户输入地址和端口号之后就可以从服务器上取得所需要的网页信息。
- 通信规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给客户端的内容格式。客户端发送给服务器的叫“请求协议”,服务器发送给客户端的叫“响应协议”
HTTP格式
- 浏览器中的书写格式
- 服务器资源需要通过浏览器进行,此时由浏览器将我们给出的请求解析为满足HTTP协议的格式并发出。我们发出的请求格式需要按照浏览器规定的格式来书写,在浏览器中书写格式如下:
- Http:// 127.0.0.1:8080/ myWeb/myServlet?name=hello
- 当浏览器获取到信息以后,按照规定格式解析并发送即可。客户端接收到服务器给出的响应时,也按照HTTP协议进行解析获取到各个数据,最后按照特定格式展现给用户。
- 服务器资源需要通过浏览器进行,此时由浏览器将我们给出的请求解析为满足HTTP协议的格式并发出。我们发出的请求格式需要按照浏览器规定的格式来书写,在浏览器中书写格式如下:
HTTP特点
- 支持客户/服务器模式。
- 简单快速:客户端向服务器请求服务时,只需传送请求和路径。请求方法常用的有GET,POST,CONNECT,DELETE,HEAD,PUT,OPTIONS,TRACE等。每种方法规定了客户端与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器程序规模小,因而通信速度很快
- 灵活:HTTP允许传输任意类型的数据对象。传输类型由Content-Type加以标记。
- 无连接:无连接是表示每次连接只处理一个请求。服务器处理完客户端的请求,并且收到客户端的应答后,即断开连接。采用这个方式可以节省传输时间。
- HTTP1.1版本后支持可持续连接。通过这种连接,就有可能在建立一个TCP连接后,发送请求并得到相应,然后发送更多的请求并得到更多的回应,通过把建立和释放TCP连接的开销分摊到多个请求上,则对于每个请求而言,由于TCP而造成的相对开销被大大地降低了。而且,还可以发送流水线请求,也就是说在发送请求1之后的回应到来之前就可以发送请求2。也可以认为,一次连接发送多个请求,由客户端确认是否关闭连接,而服务器会认为这些请求分别来自不同的客户端。
- 无状态:HTTP协议是无状态协议。无状态是指协议对事物处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据流增大。另一方面,在服务器不需要先前信息时它的应答就较快。
HTTP之URL
- HTTP(超文本传输协议)是一个基于请求与响应模式的、应用层的协议,常基于TCP的连接方式,绝大多数的Web开发,都是构建在HTTP协议上的Web应用
- HTTP URL(URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息)的格式如下:
- http://host[:port]/[abc_path]
- http://IP(主机名/域名):端口/访问的资源路径
- http表示要通过HTTP协议来定位网络资源;
- host表示合法的Internet主机域名或者IP地址;
- port指定一个端口号,为空则使用缺省端口号80;
- abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/"的形式给出,通常这个工作浏览器自动帮我们完成
HTTP请求
- HTTP请求由三部分组成,分别是:请求行,请求头,请求正文。
- 通过chrome浏览器,F12->NetWork查看。
-
1.Get请求(没有请求体)
-
2.Post请求
-
格式
- 请求行
- 请求头1
- 请求头2
- …
- 请求空行
- 请求体
-
请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本。
- 格式如下:Method Request-URI HTTP-Version CRLF
- Method 表示请求方法
- Request-URI 是一个统一资源标识符
- HTTP-Version 表示请求的HTTP协议版本;
- CRLF表示回车和换行
- 格式如下:Method Request-URI HTTP-Version CRLF
-
HTTP请求头
- 键值对key:value 组成不同的键值对,表示不同的含义
- 常用的请求头
- Accept:表示客户端可以接受的数据类型
- Accept-Language:表示客户单可以接受的语言类型
- User-Agent:表示客户端浏览器的信息
- Host:表示请求时的服务器ip和端口号
HTTP响应
-
在接收和解释请求后,服务器返回一个HTTP响应消息。HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文。
-
格式
-
* 状态行 响应的协议和版本号 响应的状态码 响应状态描述符 * 响应头1 key:value * 响应头2 key:value * .... * 响应空行 * 响应体 就是回传给客户端的数据
-
-
常见的响应码
- 200 表示请求成功
- 302 表示请求重定向
- 404 表示请求服务器已经收到了,但是请求的数据不存在(请求地址错误)
- 500 表示服务器已经收到请求,但是服务器内部错误
消息头
- HTTP消息由客户端到服务器的请求和服务器到客户端端的响应组成。请求消息和响应消息都是由开始行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行),消息报头(可选),空行(只有CRLF的行),消息正文(可选)组成。
- 每一个报头域都是由名字+”:“+空格+值组成,消息报头域的名字是大小写无关的。
- 请求头
- 请求报头允许客户端向服务端传递请求的附加信息以及客户端自身的信息。
- Referer:该请求头指明请求从哪里来。
- 响应头
- 响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和Request-URI所标识的资源进行下一步访问的信息。
- Location
- Location响应报头域用于重定向接收者到一个新的位置。
- Location响应报头域,常用在更换域名的时候。
- Refresh
- 自动跳转(单位是秒),可以在页面通过meta标签实现,也可在后台实现
MIME类型说明
-
MIME是HTTP协议中数据类型
-
MIME的英文全称是“Multipurpose Internet Mail Extensions”多功能Internet邮件扩充服务。MIME类型的格式是“大类型/小类型”,并与某一种文件的扩展名相对应。
-
常见的MIME类型
-
文件 文件类型 MIME类型 超文本标记语言文本 .html,.html text/html 普通文本 .txt text/plain RTF文本 .rtf application/rtf GIF图形 .gif image/gif JPEG图形 .jpeg,jpg image/jpeg au声音文件 .au audio/basic MIDI音乐文件 .mid,.midi audio/midi,audio/x-midi RealAudio音乐文件 .ra,.ram audio/x-pn-realaudio MPEG文件 .mpg,.mpeg video/mpeg AVI文件 .avi video/x-msvideo GZIP文件 .gz application/x-gzip TAR文件 .tar application/x-tar
-