Servlet之HTTP请求

别来无恙 提交于 2020-02-06 02:55:15

1.Http传输协议

PS:这里只是做简单的介绍,更详细的会在后面俺系统学习网络知识时再详细写。

概念:Hyper Text Transfer Protocol 超文本传输协议

传输协议:定义了客户端和服务器端通信时发送数据的格式
C:\Users\j2726\AppData\Roaming\Typora\typora-user-images

  • 客户端给服务器发送请求消息,服务器在接收到客户端发来的消息后,服务器会再给客户端回应一个响应消息

  • Http传输协议就是服务器与客户端之间消息内容的标准,双方有了一个标准(约定)后,才能彼此建立通信

那么,问题来了??我打开一次百度首页,服务器需要给我的PC响应几次呢?

这段话写的很好,送给即将秋招毕业的自己和大家,一起加油吧!

    你在电脑前看这段文字,

    写文字的人在百度等你。

    N年前你来到了这个世界,

    N年后你想改变世界。

    期待你脚踏祥云,

    与百度一起改变世界。

在这里插入图片描述

  • 答案是响应多次

在这里插入图片描述

在Network这一栏,每一个Name就是对应一次请求。

每一个图片,js,css文件都是单独的请求,他们都是独立请求的。先建立连接,然后发送数据,最后断开连接。然后这个页面的每一个资源都是如此。所以发送了多次请求!


特点

  1. 基于 TCP / IP 的高级协议
  2. 默认端囗号:80
  3. 基于 请求/响应 模型的:一次请求对应一次响应
  4. 无状态的:每次请求之间相互独立,不能交互数据

历史版本

1.0:每一次请求响应都会建立新的连接

1.1:复用连接

就像是上面百度首页的响应,在1.0时资源A请求完之后会立即断开连接,这样当页面资源很多时会很耗时。而1.1版本则是A获取完资源后不会立即断开,会有一个等待时间,如果在此时间段内有客户端有请求,则会复用这个连接继续响应。

2. 请求消息数据格式

2.1 请求行

请求方式 请求url 请求协议/版本

GET /login.html HTTP/1.1

请求方式:

I. GET

  • 请求参数在请求行中,在URL之后
  • 请求的URL长度有限制
  • GET不安全
    C:\Users\j2726\AppData\Local\Temp

II. POST

  • 请求参数在请求体中
  • 请求的URL长度无限制
  • POST相对安全

2.2 请求头

请求头名称:请求头值

常见的请求头:

  1. User-Agent:浏览器告诉服务器,你使用的浏览器版本信息
  • 可以在服务器端获取该头的信息,解决浏览器的兼容性问题
  1. Referer:http://localhost/login.html
  • 告诉服务器,我从哪里来?

    作用:

    • 防止盗取链接(盗版视频播放网站)

    • 统计工作:

2.3 请求空行

空行,就是用于分割POST请求的请求头和请求体的。

2.4请求体

请求体(正文)

封装POST请求消息的请求参数的


字符串格式:

GET /login.html HTTP/1.1

Host:localhost

User-Agent:Mozilla/5.e(Windows NT 6.1;Win64;×64;rv:60.0)Gecko/20100101 Firefox/60.0

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8

Accept-Language:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

Accept-Encoding:gzip,deflate

Referer:http://localhost/login.html

Connection:keep-alive

Upgrade-Insecure-Requests:1

空行,就是用于分割POST请求的请求头和请求体

uername = Mr.Q


3.响应消息数据格式

request对象和response对象的原理

  1. requestresponse对象是由服务器创建的,我们来使用它们

  2. request对象是来获取请求消息,response对象是来设置响应消息

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!