JavaEE day8 初识HTTP

HTTP协议

HTTP协议,又称超文本传输协议,是一种应用广泛的应用层协议。所谓超文本,其实就是除了文本还能传输其他资源。而HTTP本身是基于传输层的TCP协议实现的。目前HTTP协议3版本已经在完善中。本文采用1.1版本。

它是一种请求--响应的工作模式,浏览器处于主动地位,服务器处于被动地位。

当我们在浏览器中输入一个 搜狗搜索的 "网址" (URL) 时, 浏览器就给搜狗的服务器发送了一个 HTTP 请 求, 搜狗的服务器返回了一个 HTTP 响应. 这个响应结果被浏览器解析之后, 就展示成我们看到的页面内容. (这个过程中浏览器可能会给服务器发送 多个 HTTP 请求, 服务器会对应返回多个响应, 这些响应里就包含了页面 HTML, CSS, JavaScript, 图片, 字 体等信息).

浏览器通过URL请求资源可能出现四种结果:

1.URL中指定的web服务器进程不存在

2.进程存在但是对应的路径资源不存在

3.资源也存在,但是处理响应的过程中发生错误,大多为动态资源

4.完成响应

HTTP请求

URL格式:

协议://主机:端口/路径?查询字符串

请求(request)

请求里的内容要足够承载我们的诉求——web服务器能看到的所有东西都在请求中,其他的看不到

1.本次请求的是哪个URL

2.本次请求的动作:是从浏览器提交内容给服务器,还是浏览器从服务器取东西

3.本次请求遵循哪个版本的HTTP协议

4.本次请求的一些专门的描述

5.如果本次请求是从浏览器向服务器提交内容,内容放哪里?

请求格式:

请求行 请求头们 --请求方法--请求资源URL--请求版本--可能的请求体

 

一个请求 = 请求行  请求头   请求体  其中请求行必须存在,其他可以不存在

请求行 = 请求方法 空格 请求资源URL/路径 空格 请求协议版本 \r\n

请求头们 = 请求头\r\n请求头\r\n...请求头\r\n\r\n(最后一个\r\n是空白行)

请求头 = Name:Value\r\n

请求体没有格式要求

HTTP为文本协议:请求就是一个字符串,写出如下,经过网络发送给指定的web服务器进程

 

请求的主体是客户端

请求方法

 在浏览器中输入URL按下回车发起的就是GET请求,表单提交时可以使用post请求

<a href = ".....">  <img src = "...">都是get请求

方法使用为method = “方法名称”

GET与POST

1.GET与POST都是i请求方法:GET:取  POST:提交

2.所有资源都有一个特性:资源支持被什么方法请求

3.对于浏览器

        1.POST请求:from表单+method=”POST“、使用JS的ajax、还有其他工具

        2.GET请求:浏览器地址栏+回车/刷新/标签关联

4.GET请求不会有请求体(不能有)POST允许有(可以没有)

5.GET请求最好是具备幂等性  POST请求一般不具备幂等性

幂等性:在不考虑外部环境变化的前提下,对同一个资源多次请求,总是得到相同的结果。

SQL中select就具备幂等性,无论select多少次都是相同的结果

但是insert就不具备,一次插入成功第二次可能就失败了

另外,select的幂等性不具备副作用,不会有别的作用发生,而update具备幂等性就有副作用。

6.由于GET请求具备幂等性,使得GET请求允许被缓存,缓存的结果用于下一次查询

而POST不具备幂等性,不允许缓存

7.from既可以使用get也可以使用post提交数据,但表现上有所区别:

        1.get上不允许携带请求体,使得要提交的数据只能放到URL的查询字符串中

 

        2.post请求允许携带请求体,所以,提交的数据一般都是放在请求体中,url保持为/path(也可放在查询字符串中)

请求头

Name:Value\r\n

HTTP协议并没有死规定过Name与Value是什么,所以这里的name和value可以自行去写,但是一些常见的name有约定成俗的规定。

HOST:124.0.0.1:8080   主机   网络建立连接  连接到一个具体的web服务器进程,由于这个进程下有多个主机,所以这个HOST请求头表示我们要请求的是哪个主机下的资源

Content-XXX请求头 /响应头 描述请求头/响应头 的特征的

Content: 指的是body 请求是请求体,响应是响应体

Content-Length :body的长度,字节为单位

Content-Type:body的内容类型(有严格规定—MIMI type)如果希望对象(如果是响应,则对象是浏览器)按照指定类型格式处理响应的内容,就在Content-Type指定即可


响应

响应的主体是服务器,由服务器收到一次请求后被动发起。

服务器能响应一次的请求的前提:浏览器发起的请求满足:

1.主机存在

2.端口存在

3.没有防火墙阻拦网络连接

格式

响应行=状态(状态码+状态描述)      响应的协议版本信息

响应头=Name:Value\r\n.......Name:Value\r\n\r\n

响应体=资源的内容(一般响应都是有响应体的)

 

 无论是谁,只要遵守HTTP请求/响应的格式,都可以正常通信。


结合动态资源

动态资源在springMVC中主要体现为

一个方法,这个方法必须:

1.这个方法属于一个类,这个类被@Controller注解修饰

2.这个方法必须被@RequestMapping注解修饰,并且通过这个注解制定了资源的路径(该资源路径全工程不能重复且为绝对路径)

进行配置

web服务器中的资源,唯一路径,静态资源一般支持get和post方法,动态资源一般是进行配置,不配置则全支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花落尽舞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值