于是Sun公司发布Servlet,相当于运行在服务端的Java小程序,但Servlet无main方法,无法独立运行,因此必须把它部署到Servlet容器,由容器来实例化并调用Servlet。
而Tomcat和Jetty就是一个Servlet容器。为了方便使用,它们也具有HTTP服务器的功能,因此Tomcat或Jetty就是一个“HTTP服务器 + Servlet容器”,也叫Web容器:
-
HTTP 服务器负责处理 HTTP 请求(接收请求、返回请求结果)
-
Servlet 容器负责把 HTTP 请求分派给对应的 servlet 程序处理,并把结果返回给 HTTP 服务器
其他应用服务器比如JBoss和WebLogic,它们不仅仅有Servlet容器的功能,也包含EJB容器,是完整的Java EE应用服务器。从这个角度看,Tomcat和Jetty算是一个轻量级应用服务器。
微服务时代的我们更喜欢稳定、轻量级的应用服务器,最流行的就是SpringBoot应用程序用内嵌方式运行Servlet容器。
什么叫内嵌方式运行servlet容器呢?
你的程序比如SpringBoot直接调用Web容器的提供的API去创建一个Web容器(HTTP服务器和Servlet容器),同时你的程序注册一个Servlet到Servlet容器中,比如SpringMVC的DispatcherServlet,这样请求到达时,Servlet容器负责调用你的Servlet。
轻量级,是因为在微服务下,把一个大而全的单体应用,拆分成一个个功能单一的微服务,在这个过程中,服务数量大大增加,但为减少资源消耗,并且降低部署成本,我们希望运行服务的Web容器也是轻量级,Web容器本身应消耗较少的内存和CPU资源,并且由应用本身启动一个嵌入式的Web容器,而不是通过Web容器来部署和启动应用,这样可以降低应用部署的复杂度。
因此轻量级的Tomcat和Jetty就是一个很好的选择,并且Tomcat它本身也是Spring Boot默认的嵌入式Servlet容器。最新版本Tomcat和Jetty都支持Servlet 4.0规范。
====================================================================
像Java这种高级语言,其实都是对操作系统API的封装,上层应用包括Web容器都是通过操作系统来工作的,因此掌握相关的操作系统原理是我们深刻理解Web容器的基础。
对于Web容器来说,操作系统方面你应该掌握它的工作原理,比如
-
什么是进程
-
什么是内核
-
什么是内核空间和用户空间
-
进程间通信的方式
-
进程和线程的区别
-
线程同步的方式
-
什么是虚拟内存
-
内存分配的过程
-
什么是I/O、什么是I/O模型、阻塞与非阻塞的区别、同步与异步的区别
-
网络通信的原理
-
OSI七层网络模型以及TCP/IP、UDP和HTTP协议。
推荐阅读名著《UNIX环境高级编程》。
推荐的经典书籍有
-
《Java核心技术》
-
《Java编程思想》
-
《Java并发编程实战》
-
《深入理解Java虚拟机 第三版》
最后
针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。
上述的面试题答案都整理成文档笔记。 也还整理了一些面试资料&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图)
[外链图片转存中…(img-HTD5b5BY-1720127127265)]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。