HTTP超文本传输协议

2023-11-11

HTTP协议----超文本传输协议

  1. 注意:我们以后编写Servlet类时,不会直接继承GenericServlet类,因为我们是B/S结构系统,这种系统是基于HTTP超文本传输协议的,他有一个专门的Servlet类。我们编程的时候要继承HttpServlet,其处理更方便。我们也没白学,因为HttpServlet继承GenericServlet

  2. 连接池:

    • 所谓的连接是java语言连接数据库的连接对象:java.sql.Connection对象
    • Connection对象做的就是连接JVM和数据库这两个进程,然而每次用户连接数据库时都要创建连接对象很麻烦,所以连接池所做的就是存放很多个连接对象,当用户需要连接是直接从连接池中获取即可,提高了访问效率。
    • 连接池的容量也要做相应的改变,例如访问量大时,容量多少,少时多少。
  3. 线程池:

    • TomCat服务器本身就支持多线程。
    • TomCat服务器在启动时,会先创建多个线程Thread对象,然后将线程对象放到集合当中,称为线程池,用户发送一个请求过来后,需要一个对应的线程来处理这个请求,这个时候线程对象就会直接从线程池中拿,效率更高。
  4. 什么是超文本?

    • 不是普通文本,例如流媒体,声音,视频,图片等。
  5. 这种协议游走在B和S之间,B和S之间传输数据都要遵循该协议,这样B和S才能解耦合(即B不依赖S,S不依赖B)。

  6. HTTP协议包括:

    • 请求协议:浏览器向WEB服务器发送数据时,数据格式遵循的标准
    • 响应协议:WEB服务器向浏览器发送数据时,数据格式遵循的标准
  7. HTTP请求协议:

    1. HTTP请求协议包括四部分:

      • 请求行
      • 请求头
      • 空白行
      • 请求体
    2. HTTP请求协议的具体报文:GET请求

      •     GET /servlet01/getServlet?username=jack&password=123456 HTTP/1.1      //请求行
            Accept: 														//请求头text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
            Accept-Encoding: gzip, deflate, br
            Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
            Connection: keep-alive
            Host: localhost:8080
            Referer: http://localhost:8080/servlet01/index.html
            Sec-Fetch-Dest: document
            Sec-Fetch-Mode: navigate
            Sec-Fetch-Site: same-origin
            Sec-Fetch-User: ?1
            Upgrade-Insecure-Requests: 1
            User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.52
            sec-ch-ua: "Chromium";v="106", "Microsoft Edge";v="106", "Not;A=Brand";v="99"
            sec-ch-ua-mobile: ?0
            sec-ch-ua-platform: "Windows"
            														//空白行
                                                                    		//请求体
        
      • 请求行

        • 包括三部分:
          • 请求方式(7种)
            • get
            • post
              • 创建
            • delete
            • put
              • 修改
            • head
            • options
            • trace
          • URI
            • 统一资源标识符。代表网络中某个资源的名字,通过URI是无法定位资源的
            • 什么是URL:统一资源定位符。代表网络中某个资源,同时,通过URL是可以定位到该资源的。
            • URL包括URI
              • http://localhost:8080/servlet01/index.html -------->url
              • /servlet01/index.html -------->uri
          • 协议版本号
      • 请求头

        • 请求的主机
        • 主机的端口
        • 浏览器信息
        • 平台信息
        • cookie等信息
      • 空白行

      • 请求体

        • 向服务器发送的具体数据
    3. HTTP请求协议的具体报文:POST请求

      POST /servlet01/postServlet HTTP/1.1
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
      Accept-Encoding: gzip, deflate, br
      Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
      Cache-Control: max-age=0
      Connection: keep-alive
      Content-Length: 26
      Content-Type: application/x-www-form-urlencoded
      Host: localhost:8080
      Origin: http://localhost:8080
      Referer: http://localhost:8080/servlet01/index.html
      Sec-Fetch-Dest: document
      Sec-Fetch-Mode: navigate
      Sec-Fetch-Site: same-origin
      Sec-Fetch-User: ?1
      Upgrade-Insecure-Requests: 1
      User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.52
      sec-ch-ua: "Chromium";v="106", "Microsoft Edge";v="106", "Not;A=Brand";v="99"
      sec-ch-ua-mobile: ?0
      sec-ch-ua-platform: "Windows"
      
      username=jack&password=123456                                 //请求体
      
  8. HTTP响应协议:

    1. HTTP响应协议包括四部分:

      • 状态行
      • 响应头
      • 空白行
      • 响应体
    2. HTTP响应协议的具体报文:

          HTTP/1.1 200 ok          //状态行
          Content-Type: text/html;charset=utf-8          //响应头
          Content-Length: 110
          Date: Tue, 25 Oct 2022 14:16:17 GMT
          Keep-Alive: timeout=20
          Connection: keep-alive
        
          <!DOCTYPE html>          //响应体
          <html>
          <head>
          <title>from get servlet</title>
          </head>
          <body>
          <h1>from get servlet</h1>
          </body>
          </html>
      
      • 状态行
        • 三部分组成
          • 第一部分:协议版本号(HTTP/1.1)
          • 第二部分:状态码
            • 200表示请求响应成功,正常结束
            • 3开头的关于重定向
            • 404表示访问的资源不存在,原因要么是你路径写错了,要么是路径写对了,但是服务器中对应的资源没有启动成功,总之是前端错误。
            • 405表示前端发送的请求方式与后端请求处理方式不一致时发生:
              • 例如:前端是POST,后端处理方式是GET
            • 500表示服务器端的程序出现了异常,一般会认为是服务器端的错误导致的。
            • 以4开始的,一般是浏览器端错误导致
            • 以5开始的,一般是服务器的错误导致
          • 第三那部分:状态的描述信息
            • ok表示成功结束
            • not found表示资源找不到
      • 响应头:
        • 响应的内容类型
        • 响应内容长度
        • 响应的时间
      • 空白行
        • 用来分隔响应头和响应体
      • 响应体:
        • 响应的正文,是一个长的字符串,这个字符串被浏览器渲染,解释并执行,最终展示出效果。
    3. 怎么看协议内容:打开浏览器,按F12

    4. 只有两种情况可以发送POST请求:使用form表单,并且form标签中的method属性值为:post,或者做文件上传,用post

    5. 其他所有情况都是用get

      1. 在浏览器地址栏上直接输入URL,敲回车,属于get请求。
      2. 在浏览器上直接点超链接时,属于get请求
      3. 使用form表单,method的属性不写或者值为get属于get请求
    6. get请求和post请求有什么区别?

      • get请求发送数据的时候,数据会挂在URI的后面,并且在URI后面添加一个“?”,“?”后面十数据,这样会导致数据回显到浏览器的地址栏上(get请求在请求行上发送数据)
      • post请求数据在请求体,不会回显到浏览器地址栏上
      • get请求只能发送普通的字符串,并且发送的字符串长度有限制,不同浏览器限制不同。
      • get请求无法发送大数据量
      • post请求可以发送任何类型的数据,并且可以发送大数据量,理论上没有长度限制
      • get请求适合从服务器端获取数据
      • post请求适合向服务器端传送数据
      • get请求是安全的,因为get请求只是为了从服务器上获取数据。
      • **post请求是危险的,因为post请求是为了向服务器提交数据,如果这些数据通过后门的方式进入到服务器当中,服务器是很危险的。**另外post请求是提交数据,所以一般情况下拦截请求的时候,一般是拦截(监听)post请求。
      • get请求支持缓存
        • 任何一个get请求最终的响应结果都会被浏览器缓存起来,在浏览器缓存当中,一个get请求路径的路径对应一个资源每当我们去找资源,如果缓存里有,就直接在浏览器上打开,如果没有,就去服务器上请求
        • 如果我们向每次get请求都是到服务器取资源,可以让每次请求路径不一样,例如在请求路径后面加一个时间戳
      • post请求不支持缓存
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP超文本传输协议 的相关文章

  • SharePoint 2010 Web 服务上的 Java JBoss 401 错误

    我的代码在 Eclipse IDE 中测试时运行成功 我正在使用生成的 Copy wsdl 通过 Web 服务连接到 MS SharePoint 2010 当我在 JBoss 服务器上部署代码 运行 Adob e LifeCycle 时 我
  • Google API - 重定向 URI 不匹配错误

    我正在我的网络应用程序上实现 google 登录 我通过参考this尝试过link https developers google com web signin server side flow 我的 google 登录按钮如下 div s
  • Netbeans 雷达插件配置

    我使用的是 Netbeans 8 0 1 在提交到 SVN 之前 我需要从 IDE 运行并检查 SonarQube 分析 我已经安装了 Netbeans Radar 插件 用于启动本地分析并检查结果 这个插件有一个名为 Get Issues
  • Maven 部署:deploy-file 发布所有文件而不是一个

    我正在使用 Maven 构建我的 Java 应用程序Maven 组装插件 https maven apache org plugins maven assembly plugin 创建一个可执行的 jar 因此 目标文件夹包含多个 jar
  • Java TCP Echo 服务器 - 广播

    我有一个简单的回显服务器 我希望当连接的用户向服务器键入任何内容时 所有其他客户端和该客户端都会收到消息 MOD 它现在不会发送给所有客户端 但它应该发送 而且我只是不知道我的代码出了什么问题 所以现在它只会将消息 MOD 发送给发送消息的
  • 控制启动时的竞争条件

    我有一些代码想要执行一些一次性初始化 但这段代码没有明确的生命周期 因此在初始化完成之前 我的逻辑可能会被多个线程调用 所以 我想基本上确保我的逻辑代码 等待 直到初始化完成 这是我的第一次剪辑 public class MyClass p
  • 无法从 PDFA1-a 格式文档中提取图像

    我正在使用以下代码从 PDFA1 a 格式的 pdf 中提取图像 但我无法获取图像 List
  • 如何在 WebSphere Liberty Batch 中配置事务超时?

    的作用是什么javax transaction global timeout 我是否需要实施检查点 超时 中的方法检查点算法 服务器配置级别有什么东西吗 它如何与应用程序级别的设置进行交互 2016年12月2日编辑 重新设计并解释了为应用程
  • xclock 工作,X11 DISPLAY 设置但仍然 java.awt.HeadlessException:

    获取 java awt HeadlessException 似乎是一个非常常见的问题 并且 中已经讨论过 以下问题 没有 X11 DISPLAY 变量 这是什么意思 https stackoverflow com questions 662
  • 使用 JPA 标准的“不在”约束

    我正在尝试写一个NOT IN约束使用JPA Criteria 我尝试过这样的事情 builder not builder in root get property1 虽然我知道这行不通 在上面的语法中 如何添加集合 列表property1会
  • 异步不适用于控制器的抽象超类方法

    我有一个BaseRestControllerRest 控制器扩展的类 它有一个我想异步运行的方法 public abstract class BaseRestController Async someThreadPoolTaskExecut
  • CompletableFuture SupplyAsync

    我刚刚开始探索 Java 8 的一些并发特性 让我有点困惑的一件事是这两个静态方法 CompletableFuture
  • Apache Camel - 路由中的事务

    我有一个关于 Apache Camel 的一般性问题 我无法找到聚合器是否已进行交易 如果是交易 交易是如何实现的 聚合的速度有多快 将消息发送到聚合器可以在事务中运行 您需要一个带有聚合器的持久存储来让传出消息充当事务 请参阅有关持久性的
  • GSSAPI 中的 javax.naming.AuthenticationException

    我正在尝试使用 JAVA GSSAPI 执行 NTLM 绑定 我收到此错误 javax naming AuthenticationException GSSAPI 根异常是 javax security sasl SaslException
  • 何时对字符串文字使用 intern()

    我看到很多这样的遗留代码 class A public static final String CONSTANT value intern 我看不出使用 intern 的任何原因 因为在 Javadoc 中可以读到 所有文字字符串和字符串值
  • 不支持使用 JDK 版本“11.0.1”进行构建。请安装 JDK 版本 `1.8.0`

    我已经下载了 Visual Studio for Mac 并尝试开始学习 Xamarin iOS 和 Android 问题是当我尝试运行 android 项目时出现以下错误 Building with JDK Version 11 0 1
  • 枚举

    我试图拥有一组扩展通用接口的枚举 例如 interface Fooable void someCommonMethod enum E1 implements Fooable some enumuerations and a definiti
  • 如何使用现代.fxml和controller.java在javafx 2.x中制作自动完成组合框[重复]

    这个问题在这里已经有答案了 如何使用现代 fxml 和controller java 在 javafx 2 x 中制作一个类似的自动完成组合框 就像制作这个一样 http blog ngopal com np 2011 07 04 auto
  • 确保 MAVEN_HOME 设置正确

    这里是 Java 和 Maven 菜鸟 使用 OSX 10 8 并使用 HomeBrew 安装 Maven 1 如果我说which mvn我会得到这个 usr local bin mvn 2 如果我说echo MAVEN HOME我不会得到
  • 在android中测量不规则多边形的面积

    我正在开发一个应用程序 在其中我在地图上绘制多边形 并且我使用的地图不是谷歌 它的Mapsforge开源离线地图库 我可以通过将地理点转换为像素点来轻松在地图上绘制多边形 但在这里我想发现是不规则的多边形 为此我做了很多尝试 但它让我失败了

随机推荐

  • 基于51单片机的智能窗帘设计

    具体实现功能 系统由STC89C51 1602液晶 步进电机 光敏电阻 按键模块 DS1302时钟模块 ADC0832模块 电源构成 1 LCD1602显示日期和时间 当前控制模式及光照强度 2 可通过按键切换 手动模式 定时模式 光控模式
  • Anaconda镜像源整理与使用

    本文复制于 Anaconda镜像源整理与使用 天道酬勤 花开半夏 只为方便查找与防止原文被删除 请前往原文查看 Anaconda镜像源整理与使用 常用镜像源Conda源Pypi源 镜像源使用指令解决CondaHTTPError HTTP 0
  • 微信机器人api

    登录模块 登录微控平台 member login 获取微信二维码 user login 执行微信登录 getIPadLoginInfo 获取联系人列表 群 好友 getAllContact 二次登录 退出微信号 需要再次登录 调用此接口即可
  • 解决报错:Websocket connection to‘ws://127.0.0.1:5000/socket.io/?EIO=4&transport=websocket’failed:Error

    报错全文为 Websocket connection to ws 127 0 0 1 5000 socket io EIO 4 transport websocket failed Error during Websocket handsh
  • STM32 CubeMX 生成RT-Thread工程时RT-Thread源码不能Go To Definition跳转

    STM32 CubeMX 生成RT Thread工程时RT Thread源码不能Go To Definition跳转 MDK报错如下 Browse information of one or more files is not availa
  • 如何使用PVRTexTool提升移动端图形效果

    导语 本文作者Ben Anuworakarn 是PowerVR 开发技术团队的技术作者 具有计算科学工程知识背景 文中 他针对移动端游戏画面的优化 介绍了图像纹理处理 Mipmapping以及渗色等相关技术 同时 通过充分利用PVRTexT
  • the propfind response did not include the requested properties

    从仓库检出代码客户端提示如下错误 the propfind response did not include the requested properties 这意味着 客户端的协议版本高于服务器的版本 server的协议没有client要
  • Spring注解之实体类常用注解

    import org hibernate annotations AccessType import org hibernate annotations import javax persistence import javax persi
  • 【CSRF攻击分析】

    目录 一 什么是CSRF漏洞 二 CSRF漏洞的原理和利用过程 三 CSRF漏洞的检测方法 四 攻击利用姿势 五 防护手段 一 什么是CSRF漏洞 CSRF即跨站点请求伪造 Cross Site Request Forgery 跟XSS攻击
  • 内测体验:GitHub Copilot智能代码补全自动写代码插件

    异想之旅 本人原创博客完全手敲 绝对非搬运 全网不可能有重复 本人无团队 仅为技术爱好者进行分享 所有内容不牵扯广告 本人所有文章仅在CSDN 掘金和个人博客 一定是异想之旅域名 发布 除此之外全部是盗文 概述 一大早起床 收到了GitHu
  • 工业数字智能化常用系统简介

    文章目录 QMS 1 IPQC 过程检 2 OQC 出货检 3 SPC 统计工序控制 4 Andon 安灯 5 其他 MDM MES QMS 质量管理体系 是Quality Management System 的简称 通常包括制定质量方针
  • Centos配置OpenVPN+OpenLDAP认证

    Centos配置OpenVPN OpenLDAP认证 一 安装openvpn auth ldap插件 二 配置ldap conf文件 三 配置openvpn中的server conf文件 四 配置客户端client ovpn文件 五 开启路
  • 计算机提示msvcp110.dll文件丢失下载安装修复教程

    电脑打开一个浏览器后在顶部网址栏目输入 dll修复程序 site 按下键盘的回车键打开前往 下载完成的修复工具需要对其进行压缩 解压好了以后打开工具 打开修复工具后 可以看到右边修复与检测的项目 点击一下开始检测电脑丢失的dll系统文件 检
  • 回来喂马啊

    继续回来喂马了 1 这么多天没更新的原因 断更也有一段时间了 近期实在是业务过于繁忙 上线了项目之后又开启了新的项目 确实很难顾得上 毕竟一下班回家就累的只想躺平哈哈哈哈 还有一个原因是新项目和后续的项目转用了SpringBoot Myba
  • ios中的锁

    代码测试可参考 只有实际写过才能更好的理解 在平时开发中我们经常会使用多线程 多线程为我们带来了很大便利 也提高了程序的执行效率 但同时也带来数据风险 当至少有两个线程同时访问同一个变量 而且至少其中有一个是写操作时 就发生了Data ra
  • java中栈的使用

    栈是什么 栈的定义 栈是我们经常使用的一种线性数据结构 它是只能通过一端操作的线性表 我们可以操作的一端称之为栈顶 另一端则称之为栈底 特点 栈通常和队列作比较 队列的特点是先进先出 栈的特点则是先进后出 举一个例子 比如说我们生活中洗碗
  • hdu 6181 Two Paths

    Problem acm hdu edu cn showproblem php pid 6181 Reference Dijkstra应用之次短路 2017 Multi University Training Contest 10 1011
  • 基于微信小程序的在线小说阅读系统,附数据库、教程

    1 功能简介 Java基于微信小程序的在线小说阅读系统 微信小程序的在线小说阅读系统 系统的整体功能需求分为两部分 第一部分主要是后台的功能 后台功能主要有小说信息管理 注册用户管理 系统系统等功能 微信小程序主要分为首页 分类和我的三部分
  • ArcSDE 日志文件表(一)

    今天跟大家介绍一下ArcSDE日志文件表 一直都想好好研究一下这块 因为基本上不太受大家重视 感兴趣的用户不是很多 但是一旦出现多用户并发查询或者版本操作的时候 这个东西就显得非常重要了 而且根据不同的用户场景设定不同的日志类型 对相关效率
  • HTTP超文本传输协议

    HTTP协议 超文本传输协议 注意 我们以后编写Servlet类时 不会直接继承GenericServlet类 因为我们是B S结构系统 这种系统是基于HTTP超文本传输协议的 他有一个专门的Servlet类 我们编程的时候要继承HttpS