tomcat

TOMCAT是基于Java Servlet、JSP技术 , 可运行在多种操作系统上的Web服务器 , 也是最流行的Java应用服务器之一 。TOMCAT具有轻量级、易扩展、稳定性高、配置简单等特点 , 被广泛应用于Java Web开发和企业级应用开发中 。
摘要: Tomcat作为Web服务器深受市场欢迎 , 有必要对其进行深入的研究 。那么Tomcat是如何工作的?
Tomcat作为Web服务器深受市场欢迎 , 有必要对其进行深入的研究 。在工作中 , 我们经常会把写好的代码打包放在Tomcat里并启动 , 然后在浏览器里就能愉快的调用我们写的代码来实现相应的功能了 , 那么Tomcat是如何工作的?
一、Tomcat工作原理我们启动Tomcat时双击的startup.bat文件的主要作用是找到catalina.bat , 并且把参数传递给它 , 而catalina.bat中有这样一段话:

tomcat

文章插图
Bootstrap.class是整个Tomcat 的入口 , 我们在Tomcat源码里找到这个类 , 其中就有我们经常使用的main *** :
这个类有两个作用 :1.初始化一个守护进程变量、加载类和相应参数 。2.解析命令 , 并执行 。
源码不过多赘述 , 我们在这里只需要把握整体架构 , 有兴趣的同学可以自己研究下源码 。Tomcat的server.xml配置文件中可以对应构架图中位置 , 多层的表示可以配置多个:
即一个由 Server->Service->Engine->Host->Context 组成的结构 , 从里层向外层分别是:
  • Server:服务器Tomcat的顶级元素 , 它包含了所有东西 。
  • Service:一组 Engine(引擎) 的 ***  , 包括线程池 Executor 和连接器 Connector 的定义 。
  • Engine(引擎):一个 Engine代表一个完整的 Servlet 引擎 , 它接收来自Connector的请求 , 并决定传给哪个Host来处理 。
  • Container(容器):Host、Context、Engine和Wraper都继承自Container接口 , 它们都是容器 。
  • Connector(连接器):将Service和Container连接起来 , 注册到一个Service , 把来自客户端的请求转发到Container 。
  • Host:即虚拟主机 , 所谓的”一个虚拟主机”可简单理解为”一个网站” 。
  • Context(上下文 ): 即 Web 应用程序 , 一个 Context 即对于一个 Web 应用程序 。Context容器直接管理Servlet的运行 , Servlet会被其给包装成一个StandardWrapper类去运行 。Wrapper负责管理一个Servlet的装载、初始化、执行以及资源回收 , 它是最底层容器 。
比如现在有以下网址 , 根据“/”切割的链接就会定位到具体的处理逻辑上 , 且每个容器都有过滤功能 。
二、梳理自己的Tomcat实现思路本文实现效果比较简单 , 仅供新手参考 , 大神勿喷 。当浏览器访问对应地址时:
实现以上效果整体思路如下:
1.ServerSocket占用8080端口 , 用while(true)循环等待用户发请求 。
2.拿到浏览器的请求 , 解析并返回URL地址 , 用I/O输入流读取本地磁盘上相应文件 。
3.读取文件 , 不存在构建响应报文头、HTML正文内容 , 存在则写到浏览器端 。
三、实现自己的Tomcat工程文件结构和pom.xml文件:
1.HttpServer核心处理类 , 用于接受用户请求 , 传递HTTP请求头信息 , 关闭容器:
2.创建Request类 , 获取HTTP的请求头所有信息并截取URL地址返回:
3.创建Response类 , 响应请求读取文件并写回到浏览器

推荐阅读