Java程序员必须掌握的网站知识 —— HTTP

介绍

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

HTTP是一个属于应用层的面向对象的协议。

主要特点

1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

2、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

3、无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。

4、无状态:HTTP协议是无状态协议。http协议是无状态的,同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。 为了解决这个问题, Web程序引入了Cookie机制来维护状态.

5、支持B/S及C/S模式。

小编是一个有着5年工作经验的java程序员,对于java,自己有做资料的整合,一个完整学习java的路线,学习资料和工具,相信这里有很多学习java的小伙伴,我创立了一个2000人学习扣群,479121291。每晚都有java的直播课程。无论是初级还是进阶的小伙伴小编我都欢迎!

扫描二维码关注公众号,回复: 3774944 查看本文章

HTTP URL

HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息

URL,全称是UniformResourceLocator, 中文叫统一资源定位符,是互联网上用来标识某一处资源的地址。

URI vs URL

首先,URI,是统一资源标识符,用来唯一的标识一个资源。而URL是统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。而URN,统一资源命名,是通过名字来标识资源,比如mailto:[email protected]。也就是说,URI是以一种抽象的,高层次概念定义统一资源标识,而URL和URN则是具体的资源标识的方式。URL和URN都是一种URI;URL是URI的一种。但也不是所有的URI都是URL。

URL 格式http://host['':''port][abs_path]http:表示要通过HTTP协议来定位网络资源;host:表示合法的Internet主机域名或者IP地址;port:指定一个端口号,为空则使用缺省端口80;abs_path:指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。

请求消息Request

HTTP请求消息格式:

请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。

请求行<Method> <Request-URI> <HTTP-Version> CRLFMethod:表示请求方法URI-Request:表示一个统一资源标识符HTTP-Version:表示请求的HTTP协议版本CRLF:表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。

请求方法:根据HTTP标准,HTTP请求可以使用多种请求方法。HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

GET:请求指定的页面信息,并返回实体主体。HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。PUT:从客户端向服务器传送的数据取代指定的文档的内容。DELETE:请求服务器删除指定的页面。CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。OPTIONS:返回对应URL能访问的METHODS。TRACE:回显服务器收到的请求,主要用于测试或诊断。

请求头部后文详述。。。

空行空行,请求头部后面的空行是必须的

请求数据请求数据也叫主体,可以添加任意的其他数据。

响应消息Response

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

状态行状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。『<HTTP-Version> <Status-Code> <Reason-Phrase> CRLF』HTTP-Version:表示服务器HTTP协议的版本Status-Code:服务器发回的响应状态代码Reason-Phrase:表示状态代码的文本描述

状态码:状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:① 1xx:指示信息--表示请求已接收,继续处理② 2xx:成功--表示请求已被成功接收、理解、接受③ 3xx:重定向--要完成请求必须进行更进一步的操作④ 4xx:客户端错误--请求有语法错误或请求无法实现⑤ 5xx:服务器端错误--服务器未能实现合法的请求

常见状态码:

302 Found  重定向,新的URL会在response中的Location中返回,浏览器将会使用新的URL发出新的Request。

304 Not Modified  代表上次的文档已经被缓存了, 还可以继续使用,  例如打开博客园首页, 发现很多 Response 的status code 都是304

猜你喜欢

转载自blog.csdn.net/java03_15/article/details/83477169