JavaWeb之HTTP协议(一)

✍javaEE进阶之旅

=============================================================================

| 🔥javaEE进阶之旅 | 地址 |

| — | — |

| 🔥JavaWeb之HTTP协议(一) | https://blog.csdn.net/Augenstern_QXL/article/details/119580669 |

| 🔥JavaWeb之Servlet技术(二) | https://blog.csdn.net/Augenstern_QXL/article/details/119581366 |

| 🔥JavaWeb之JSP技术(三) | https://blog.csdn.net/Augenstern_QXL/article/details/119581658 |

| 🔥JavaWeb之Cookie和Session技术(四) | https://blog.csdn.net/Augenstern_QXL/article/details/119713398 |

| 🔥JavaWeb之Filter和Listener技术(五) | https://blog.csdn.net/Augenstern_QXL/article/details/119725322 |

1、Http协议

==========================================================================

在这里插入图片描述

  • HTTP协议,是一个客户端请求和响应的标准协议,这个协议详细规定了浏览器和万维网服务器之间互相通信的规则,用户输入地址端口号之后就可以从服务器上取得所需要的网页信息

  • 通信规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给客户端的内容格式。

  • 客户端发送给服务器的格式叫“请求协议”;服务器发送给客户端的格式叫“响应协议”

1.1、浏览器中的书写格式


服务器端资源需要通过浏览器进行,此时由浏览器将我们给出的请求解析为满足HTTP协议的格式并发出。我们发出的请求格式需要按照浏览器规定的格式来书写,在浏览器中书写格式如下:

在这里插入图片描述

  • 当浏览器获取到信息以后,按照特定格式解析并发送即可

  • 接收到服务器端给出的响应时,也按照HTTP协议进行解析获取到各个数据,最后按照特定格式展示给用户

1.2、HTTP协议的特点


  1. 支持客户/服务器模式

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

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

  4. 无连接:无连接是表示每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间

  • HTTP1.1 版本后支持可持续连接。通过这种连接,就有可能在建立一个TCP连接后,发送请求并得到回应,然后发送更多的请求并得到更多的回应

  • 通过把建立和释放TCP连接的开销分摊到多个请求上,则对于每个请求而言,由于TCP而造成的相对开销被大大地降低了。而且,还可以发送流水线请求,也就是说在发送请求 1 之后的回应到来之前就可以发送请求 2 。也可以认为,一次连接发送多个请求,由客户机确认是否关闭连接,而服务器会认为这些请求分别来自不同的客户端

  1. 无状态:HTTP协议是无状态协议
  • 无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时,它的应答就较快。

1.3、HTTP请求


  • HTTP请求由三部分组成,分别是:请求行、请求头、请求体

  • 请求行:HTTP协议的第一行(请求行由以下三部分组成)

  • 请求方式 GET/POST

  • 请求路径 URL

  • 请求协议版本 HTTP/1.1

  • 请求头:协议中的键值对

  • 请求体:传递给服务器的数据(GET请求是没有请求体的,因为GET请求会将它请求的数据直接跟在地址栏后面)

在浏览器中F12 -> Network -> 刷新网页即可显示查看请求消息和响应消息。

在这里插入图片描述

1.3.1、GET请求(没有请求体)

在这里插入图片描述

1.3.2、Post请求

在这里插入图片描述

1.3.3、请求的格式

请求的格式如下:

请求行

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后总结

搞定算法,面试字节再不怕,有需要文章中分享的这些二叉树、链表、字符串、栈和队列等等各大面试高频知识点及解析

最后再分享一份终极手撕架构的大礼包(学习笔记):分布式+微服务+开源框架+性能优化

image

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
源框架+性能优化**

[外链图片转存中…(img-v8gYa6gP-1713400920537)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个使用HTTP协议实现大媒体在线播放的JavaWeb代码示例: ```java import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MediaServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String fileName = request.getParameter("file"); String filePath = "/path/to/media/" + fileName; FileInputStream fileInputStream = new FileInputStream(filePath); BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream); OutputStream outputStream = response.getOutputStream(); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream); response.setContentType("video/mp4"); response.setHeader("Content-Disposition", "inline; filename=" + fileName); byte[] buffer = new byte[8192]; int length; while ((length = bufferedInputStream.read(buffer)) > 0) { bufferedOutputStream.write(buffer, 0, length); } bufferedOutputStream.flush(); bufferedOutputStream.close(); bufferedInputStream.close(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } ``` 在上面的示例中,我们创建了一个名为 `MediaServlet` 的 servlet,用于处理客户端请求并提供视频文件的流式传输。当客户端请求该 servlet 时,servlet 会读取请求参数中指定的视频文件,并将其作为 HTTP 响应的一部分传输回客户端。在响应头中设置了 `Content-Type` 和 `Content-Disposition`,以便告知客户端响应的文件类型和文件名。 请注意,上述代码示例中的 `/path/to/media/` 应该被替换为实际存储视频文件的路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值