从零手写实现 apache Tomcat-01-入门介绍

简介: 创建简易Tomcat涉及理解其作为Java服务器的角色,建立HTTP服务器,实现Servlet接口处理动态和静态内容,以及启动和关闭服务器。项目mini-cat是一个简化版Tomcat实现,支持Servlet、静态网页和基础功能。可通过maven添加依赖并运行测试类快速体验。开源项目位于[GitHub](https://github.com/houbb/minicat)。

怎么实现一个 tomcat 呢?

想要自己搞个简化版的Tomcat,可以这么一步步来:

  1. 搞懂Tomcat是啥

    • Tomcat就是用Java写的一个开源服务器,能跑Java写的网页程序。
    • 它用的是Java语言,所以得有点Java基础。
  2. 搭建个基础的HTTP服务器

    • 用Java写个类,作为服务器的启动点。
    • 用Java的ServerSocket来监听网上的连接请求。
    • 一旦有人连上,就读他们的请求,分析他们想要啥。
    • 根据他们要的,给回相应的回答。
  3. 实现Servlet的功能

    • 写个类来处理网页请求,这个类得实现Servlet接口。
    • 实现接口得写几个特定的方法,比如初始化(init())、服务(service())和销毁(destroy())。
    • service()方法里,看是哪种请求(比如GET或POST),然后调用对应的处理方法。
  4. 搞定静态文件

    • 对于图片、网页、样式表这些静态文件,直接从硬盘上读出来,然后发给请求的人就行。
    • 收到请求后,看看人家是要静态文件还是动态网页。
  5. 处理动态网页

    • 对于需要服务器实时生成的网页,比如JSP,就得在服务器上现做。
    • 有人请求这种网页,就根据请求的信息,现场编个网页,然后发回去。
  6. 处理基本的请求

    • 能处理基本的网页请求,比如GET和POST。
    • 能读懂请求的信息,知道人家要访问哪个网页,还带了什么参数。
  7. 启动和关闭服务器

    • 写个方法来控制服务器的开和关。
    • 开服务器的时候,得准备好要用的东西,比如端口号、线程池。
    • 关服务器的时候,得把资源清理干净,把网络连接关了。
  8. 测试你的服务器

    • 写几个简单的Servlet和静态文件,然后在浏览器里试试你的服务器。
    • 确保服务器能正确处理各种请求,返回正确的结果。

要做出完整的Tomcat,还有很多东西要考虑,比如多线程、连接池、会话管理、安全问题等等。

咱们可以一步步来,先搞定核心功能。

从零手写例子

项目简介

 /\_/\  
( o.o ) 
 > ^ <

mini-cat 是简易版本的 tomcat 实现。别称【嗅虎】(心有猛虎,轻嗅蔷薇。)

开源地址:https://github.com/houbb/minicat

特性

  • 简单的启动实现/netty 支持

  • servlet 支持

  • 静态网页支持

  • filter/listener 支持

  • wars 支持

快速开始

maven 依赖

<dependency>
    <groupId>com.github.houbb</groupId>
    <artifactId>minicat</artifactId>
    <version>0.7.0</version>
</dependency>

启动测试

运行测试类 MiniCatBootstrapMain#main

MiniCatBootstrap bootstrap = new MiniCatBootstrap();
bootstrap.start();

启动日志:

[INFO] [2024-04-03 11:09:15.178] [main] [c.g.h.m.s.s.WebXmlServletManager.register] - [MiniCat] register servlet, url=/my, servlet=com.github.houbb.minicat.support.servlet.MyMiniCatHttpServlet
[INFO] [2024-04-03 11:09:15.180] [Thread-0] [c.g.h.m.b.MiniCatBootstrap.startSync] - [MiniCat] start listen on port 8080
[INFO] [2024-04-03 11:09:15.180] [Thread-0] [c.g.h.m.b.MiniCatBootstrap.startSync] - [MiniCat] visit url http://127.0.0.1:8080

页面访问:http://127.0.0.1:8080

响应:

http://127.0.0.1:8080

测试

servlet: http://127.0.0.1:8080/my

html: http://127.0.0.1:8080/index.html

开源地址

开源地址:https://github.com/houbb/minicat

开源不易,欢迎 fork+star~~~ 鼓励一下作者

相关文章
|
1月前
|
Java 应用服务中间件 Apache
简介Nginx,Tomcat和 Apache
简介Nginx,Tomcat和 Apache
简介Nginx,Tomcat和 Apache
|
7天前
|
Java 应用服务中间件 Apache
Apache HTTP配置反向代理入门
Apache HTTP配置反向代理入门
13 0
Apache HTTP配置反向代理入门
|
1月前
|
XML 安全 Java
从零手写实现 apache Tomcat-02-web.xml 入门详细介绍
`web.xml`是Java Web应用的核心配置文件,描述应用工作方式。它包含Servlet、Filter和Listener的定义。例如,示例展示了如何配置名为`my`的Servlet处理`/my`请求,`LoggingFilter`拦截所有请求,以及`MyServletContextAttrListener`监听应用事件。`web.xml`是服务器理解应用结构与行为的指南。迷你版Tomcat实现——mini-cat(开源:https://github.com/houbb/minicat)。
|
1月前
|
负载均衡 Ubuntu 应用服务中间件
Apache(mod_proxy)+Tomcat负载均衡配置
Apache(mod_proxy)+Tomcat负载均衡配置
|
1月前
|
存储 Linux 数据库
ZooKeeper【搭建 01】apache-zookeeper-3.6.2 单机版安装+配置+添加到service服务+开机启动配置+验证+chkconfig配置(一篇入门zookeeper)
【4月更文挑战第8天】ZooKeeper【搭建 01】apache-zookeeper-3.6.2 单机版安装+配置+添加到service服务+开机启动配置+验证+chkconfig配置(一篇入门zookeeper)
53 0
|
1月前
|
分布式计算 资源调度 Hadoop
Apache Hadoop入门指南:搭建分布式大数据处理平台
【4月更文挑战第6天】本文介绍了Apache Hadoop在大数据处理中的关键作用,并引导初学者了解Hadoop的基本概念、核心组件(HDFS、YARN、MapReduce)及如何搭建分布式环境。通过配置Hadoop、格式化HDFS、启动服务和验证环境,学习者可掌握基本操作。此外,文章还提及了开发MapReduce程序、学习Hadoop生态系统和性能调优的重要性,旨在为读者提供Hadoop入门指导,助其踏入大数据处理的旅程。
439 0
|
1月前
|
监控 测试技术 Linux
性能工具之 Apache Bench 入门使用
ab 全称为:apache bench,ab 为小型压力工具,对于在 Linux 中简单压测 HTTP 接口轻巧灵活。
32 1
|
1月前
|
SQL 分布式计算 HIVE
Apache Hudi入门指南(含代码示例)
Apache Hudi入门指南(含代码示例)
116 0
|
1月前
|
存储 Java 应用服务中间件
玩转Apache Tomcat
玩转Apache Tomcat
31 0
|
1月前
|
SQL 关系型数据库 Apache
Apache Doris 整合 FLINK CDC 、Paimon 构建实时湖仓一体的联邦查询入门
Apache Doris 整合 FLINK CDC 、Paimon 构建实时湖仓一体的联邦查询入门
773 1

推荐镜像

更多