Web 容器、HTTP 服务器 、Servlet 容器区别与联系

简介: Web 容器、HTTP 服务器 、Servlet 容器区别与联系

  首先浏览器发起 HTTP 请求,像早期的时候只会请求一些静态资源,这时候需要一个服务器来处理 HTTP 请求,并且将相应的静态资源返回。

  这个服务器叫 HTTP 服务器。

  简单点说就是解析请求,然后得知需要服务器上面哪个文件夹下哪个名字的静态文件,找到返回即可。

image.png

 而随着互联网的发展,交互越发得重要,单纯的静态文件满足不了需求。


 业务变得复杂,需要我们编写代码来处理诸多业务。


 需要根据 HTTP 请求调用不同的业务逻辑来响应,但是我们的业务代码不能跟 HTTP 服务器耦合起来。


 总不能在 HTTP 服务器的具体实现里面来做判断到底需要调用哪个业务类吧?


 这就把非业务和业务强相关了。


 所以需要做一层抽象,将 HTTP 的解析和具体的业务隔离。

image.png

 本质上的需求就是根据 HTTP 请求找到对应的业务实现类然后执行逻辑再返回。


 而业务千千万,所以需要规定一个接口,所以业务类都实现这个接口这样才好对接。


 这就是接口的含义,就像 USB。


 这个接口就是 Servlet,当然这是最狭义的解释。


 Servlet 其实是 Server Applet,全称 Java Servlet,指的是用Java 编写的服务端程序。


 其实指代的是实现 Servlet 接口的那些业务类。


 这就是 Servlet 的由来。


 而 Servlet 容器其实就是管理和加载这些 Servlet 类的,拿到 HTTP 请求之后找到对应的 Servlet 类这就是 Servlet 容器要做的事情。


 看到这是不是觉得还能再抽一层?因为这好像也和具体的业务实现没关系?


 是的,还能抽一层。


 没必要把 Servlet 容器做的事情和具体的业务耦合起来,业务反正照着 Servlet 接口实现就行,这样 Servlet 容器就可以加载它和管理它。

image.png

 把请求和哪个 Servlet 对应关系也抽象出来,就是 web.xml 了,咱们在配置里面告诉 Servlet 容器对应关系即可。


 图中的业务实现其实对应的就是我们平常的 war 包,这就是业务和 Servlet 容器的解耦。


 想必你也听过 Servlet 规范,其实 Servlet 接口和 Servlet 容器这一整套包括目录命名啊啥的合起来就叫 Servlet 规范。


 所有相关的中间件按照 Servlet 规范实现,我们也按 Servlet 规范来实现业务代码,这样我们就能在不同场景选择不同的 Web 中间件。


 反正规范的目的就是为了对接方便,减少对接成本。


 至此 HTTP 服务器、Servlet 、Servlet 容器想必都清晰了。image.png

 而 Web 容器其实就是 HTTP 服务器 + Servlet 容器,因为单单 Servlet 容器没有解析 HTTP 请求、通信等相关功能。


 所以把 Tomcat、Jetty 等实现包含了 HTTP 服务器和 Servlet 容器的功能,称之为 Web 容器。


 从我们的分析一层一层的剥离,一层一层的抽象,相信你对 Web 有了更进一步的认识,我再画个 Tomcat 的分析图,应该就很清晰了。


 从上面的一步步分析可以看出:其实架构的设计就是一系列相关的抽象。


 先是抽象出 HTTP 服务,用来通信和解析协议。


 再因为业务的复杂,为了不和 HTTP 服务耦合又抽象了一层 Servlet。


 由 Servlet 加载和管理 Servlet ,来控制请求转发到指定的 Servlet 实现类。


 然后我们安心的开发业务即可。


 因为抽象所以灵活易扩展,比如现在是 HTTP1.1 服务,可以换成 HTTP 2。


 现在用 Tomcat 来作为 Servlet 容器,也可以换成 Jetty。


 现在用原生的实现 Servlet 来做业务,也可以换成 SpringMVC。


 随意变更,因为都抽象出来了,就很好替换,只要遵循约定的接口实现即可。


 参考文章地址:https://www.cnblogs.com/yescode/p/14099868.html

相关文章
|
5月前
|
弹性计算 运维 安全
阿里云轻量应用服务器与云服务器ECS啥区别?新手帮助教程
阿里云轻量应用服务器适合个人开发者搭建博客、测试环境等低流量场景,操作简单、成本低;ECS适用于企业级高负载业务,功能强大、灵活可扩展。二者在性能、网络、镜像及运维管理上差异显著,用户应根据实际需求选择。
428 10
|
5月前
|
弹性计算 运维 安全
区别及选择指南:阿里云轻量应用服务器与ECS云服务器有什么区别?
阿里云轻量应用服务器适合个人开发者、学生搭建博客、测试环境,易用且性价比高;ECS功能更强大,适合企业级应用如大数据、高流量网站。根据需求选择:轻量入门首选,ECS专业之选。
365 2
|
5月前
|
弹性计算 运维 安全
阿里云轻量应用服务器38元1年和云服务器99元1年怎么选?二者性能区别及选择参考
在阿里云当下的活动中,38元/年的轻量应用服务器与99元/年的云服务器ECS成为众多新用户的关注焦点。但是有部分用户并不是很清楚二者之间的区别,因此就不知道应该如何选择。接下来,笔者将为您详细剖析ECS云服务器与轻量应用服务器的差异,以供您参考和选择。
556 4
阿里云轻量应用服务器38元1年和云服务器99元1年怎么选?二者性能区别及选择参考
|
6月前
|
存储 弹性计算 应用服务中间件
阿里云轻量应用服务器与云服务器ECS有何区别?轻量应用服务器性能、优势与收费价格参考
2025年,阿里云轻量应用服务器2核2G3M带宽搭配40GB ESSD云盘的配置,每天10点和15点开启的抢购价只要38元1年,新用户非抢购专属优惠价也只要68元1年。对于一些初次接触阿里云轻量应用服务器的用户来说,可能不是很清楚它与云服务器ECS有什么不同?选择轻量应用服务器有哪些优势,本文为大家介绍轻量应用服务器的性能、适用场景、优势、收费标准以及与云服务器ECS之间的区别,以供参考。
|
6月前
|
弹性计算 运维 安全
轻量级应用服务器和云服务器区别——阿里云轻量和ECS区别对比
阿里云轻量应用服务器与ECS云服务器对比:轻量适合个人开发者、学生搭建博客、测试环境,门槛低、操作简便、成本低;ECS适用于企业级高并发场景,功能全面、弹性强。二者在使用场景、性能、网络、镜像及运维管理等方面差异显著,用户应根据实际需求选择。
620 4
|
6月前
|
数据采集 弹性计算 供应链
阿里云服务器包年包月、按量付费和抢占式实例有什么区别?如何选择?
阿里云服务器提供包年包月、按量付费和抢占式实例三种付费模式。包年包月预付费,长期使用更划算,适合稳定业务;按量付费按小时计费,灵活但成本较高,适合短期或波动场景;抢占式实例价格优惠最高达90%,但可能被释放,适合无状态应用。根据需求选择可兼顾成本与稳定性。
|
5月前
|
弹性计算 安全 数据安全/隐私保护
阿里云服务器ECS企业安全组和普通安全组有什么区别?安全组全解析
阿里云ECS安全组分普通与企业级两种,均免费。普通安全组支持经典网络和VPC,最多6000个私网IP,组内默认互通,规则灵活,适合中小规模应用;企业级安全组仅支持VPC,最高支持65536个私网IP,安全性更高,入出方向默认全拒,组内隔离不可改,适用于大规模、高安全需求场景。两者在容量、规则、控制策略及适用环境上差异显著。
238 0