深入拆解 Tomcat & Jetty
李号双
eBay 技术主管
38439 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 45 讲
开篇词 (1讲)
深入拆解 Tomcat & Jetty
15
15
1.0x
00:00/00:00
登录|注册

01 | Web容器学习路径

你好,我是李号双。在开篇词里我提到要成长为一名高级程序员或者架构师,我们需要提高自己知识的广度和深度。你可以先突破深度,再以点带面拓展广度,因此我建议通过深入学习一些优秀的开源系统来达到突破深度的目的。
我会跟你一起在这个专栏里深入学习 Web 容器 Tomcat 和 Jetty,而作为专栏更新的第 1 篇文章,我想和你谈谈什么是 Web 容器,以及怎么学习 Web 容器。根据我的经验,在学习一门技术之前,想一想这两个问题,往往可以达到事半功倍的效果。

Web 容器是什么?

让我们先来简单回顾一下 Web 技术的发展历史,可以帮助你理解 Web 容器的由来。
早期的 Web 应用主要用于浏览新闻等静态页面,HTTP 服务器(比如 Apache、Nginx)向浏览器返回静态 HTML,浏览器负责解析 HTML,将结果呈现给用户。
随着互联网的发展,我们已经不满足于仅仅浏览静态页面,还希望通过一些交互操作,来获取动态结果,因此也就需要一些扩展机制能够让 HTTP 服务器调用服务端程序。
于是 Sun 公司推出了 Servlet 技术。你可以把 Servlet 简单理解为运行在服务端的 Java 小程序,但是 Servlet 没有 main 方法,不能独立运行,因此必须把它部署到 Servlet 容器中,由容器来实例化并调用 Servlet。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入拆解 Tomcat & Jetty 》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(69)

  • 最新
  • 精选
  • 蔡伶
    打卡 先说下听完老师课程的感受:经典不会随着时间而消逝。java和servlet规范已经发布20多年、操作系统和网络协议以及html更是经过了几十年的洗礼,现在依然是业内最核心的技术基础,毫不动摇。 课程的理解:当前web技术涉及的知识包括这样几层, 第一层:核心规范相当于宪法,主要包括servlet规范、网络协议等; 第二层:主流技术支撑相当于各类法律,包括java语言、各类中间件等; 第三层:基于各行业的业务应用和框架,相当于行政法规地方法规。 规范是基础,具体实现可以用java也可以用python等等,行业应用和框架更是可以百花齐放。 那我们的学习一定是从具体技术入手,从规范和体系结构统筹安排,最后再落实到实现。是一个自底向上再由上向下的一个过程,也是一个由薄到厚再由厚到薄的过程。

    作者回复: 说的很好👍

    64
  • 今夜秋风和
    应用程序的上下文,这个概念总是感觉理解不透彻

    作者回复: 简单可以这里理解: 我们把Spring的IOC容器理解为一个工厂,这个工厂负责创建组装你的Bean。 但是我们怎么向IOC容器中放入Bean呢?可能通过配置文件或者注解或者其他方式,于是容器除了做创建、组装Bean的工作,还需要去做解析配置文件或者注解的工作,于是把容器换个说法,叫应用上下文。

    3
    43
  • G
    你说的所有spring. 都应该说springMVC

    作者回复: 嗯嗯,SpringMVC是Spring的子集,我就说成Spring了~

    32
  • 贤蛋蛋
    请问为什么说http是超文本传输协议,文本两字的含义是什么?http2.0所说的二进制帧,为什么说是二进制,和1.1格式上的本质区别是什么?再往下一层到TCP能否都看成二进制帧?

    作者回复: 文本可以理解为只有文字信息的文档,超文本是带有超链接的文档,可以链接到另一个文档,或一张图... HTTP1.1是文本协议,HTTP2.0是二进制协议。 文本协议的协议数据是由ACSII字符组成的,比如文章里的HTTP请求的例子:请求行、请求头和请求体,我们一眼就看出什么意思。这是因为协议里的每个Byte都是用ACSII字符来解释的。 二进制协议的的每个Byte完全由协议本身来定义,比如一个Byte有8个Bit,这8个Bit可能有不同的意思(比如代表长度或者其他标志位),不一定代表一个ACSII字符。 TCP是二进制协议。

    2
    29
  • 凌霄
    遇到过一个偶发的tomcat8问题,请求到tomcat后,nio长连接,到了20秒后超时后才自动断开连接,返回结果内容正常,抓包发现和正常的比少了最后的回车换行。

    作者回复: 你的应用程序设置的响应长度Content-Length与实际响应数据长度不符,可能长了那么一丢丢,这样Tomcat一直在等你的数据呢。

    22
  • 飞向云端
    什么叫内嵌方式运行servlet容器,老师有时间普及一下。

    作者回复: 就是你的程序比如SpringBoot直接调用Web容器的提供的API去创建一个Web容器(HTTP服务器和Servlet容器),同时你的程序注册一个Servlet到Servlet容器中,比如SpringMVC的DispatcherServlet,这样请求到达时,Servlet容器负责调用你的Servlet。

    11
  • yy_java
    请问老师,操作系统基础 除了您推荐的那本书以外还有其他薄点的书籍推荐吗?

    作者回复: 😑,我理解这本书是有点厚,但还是建议读经典的比较好,你不需要一口气读完,专栏讲到了某个点再去看看相关的部分~

    6
  • 拒绝
    还停留在使用容器的阶段,并不清楚其原理,例如:一个请求到一个响应返回,其涉及到的设计模式,以及为什么这样做,这样做的好处是什么;我能在容器的基础上做一些自定义的扩展吗?希望在专栏收获到这些。

    作者回复: 对的,这个专栏会学习Tomcat&Jetty为什么设计成这样,设计者是怎么考虑问题的; Tomcat和Jetty做为中间件,可扩展性非常强,你可以通过它们定制自己的Web容器!

    2
    6
  • Monday
    操作系统还是我的痛,但也不是一两天就能补充得了的。只好边学本专栏边学操作系统了。希望不要因为操作系统的缘故拖了学习本专栏的后腿😃😃

    作者回复: 不会的,咱们这边都有具体应用场景,根据实际运用场景开学理解起来会容易些

    4
  • 刘三通
    Spring应用本身就是一个Servlet容器

    作者回复: Spring是Bean容器,不是Servlet容器,它不负责加载和实例化Servlet。

    3
收起评论
显示
设置
留言
69
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部