从零手写实现 apache Tomcat-01-入门介绍
创作缘由平常使用 tomcat 等 web 服务器不可谓不多,但是不停一知半解。
于是想着自己实现一个简单版本,学习一下 tomcat 的精髓。
怎么实现一个 tomcat 呢?
Tomcat就像是一个用Java语言搭起来的大舞台,专门用来演出那些用Java编写的网页剧。想要玩得转Tomcat,你最好对Java语言有所了解。
搭建Tomcat的过程,就像是搭积木。起首,你得用Java写一个启动类,这个类就是整个服务器的大脑。然后,用Java的ServerSocket这个工具来监听网络上的敲门声,也就是连接请求。一旦有人来敲门,服务器就得看看人家想要啥,然后根据需求给出回应。
接下来,我们要让服务器学会处置惩罚网页请求。这就必要一个叫做Servlet的小家伙,它是一个接口,你必要写一个类来实现这个接口。这个类得有几个特定的动作,比如准备(init())、服务(service())和收工(destroy())。在服务动作里,Servlet得判断人家是用什么方式来请求的,比如是GET还是POST,然后做出相应的反应。
服务器还得能处置惩罚那些不必要服务器现场制作的静态文件,比如图片、网页模板或者CSS样式表。这些文件就像是现成的道具,直接从硬盘里拿出来给人家就行。
当然,对于那些必要服务器现场制作的动态网页,比如JSP,服务器就得根据请求的信息,现场编个网页,然后发回去。
此外,服务器还得能处置惩罚基本的网页请求,比如GET和POST,而且能读懂人家的请求信息,知道人家想访问哪个页面,还带了什么额外的信息。
控制服务器的开关也很紧张。你得写个方法来控制服务器的启动和停止。启动时,要准备好要用的东西,比如确定用哪个端标语,设置好线程池。关闭时,要确保资源都收拾干净,网络连接也都断开。
末了,你可以通过编写几个简单的Servlet和一些静态文件,然后在浏览器里测试你的服务器。确保服务器能够正确处置惩罚各种请求,而且返回正确的结果。
虽然这只是Tomcat的入门阶段,但要打造一个完备的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();启动日志:
- register servlet, url=/my, servlet=com.github.houbb.minicat.support.servlet.MyMiniCatHttpServlet
- start listen on port 8080
- 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~~~ 鼓励一下作者
系列文章
点击 {阅读原文},获得更好的阅读体验
手写实现系列
从零手写实现 apache Tomcat-01-入门介绍
从零手写实现 apache Tomcat-02-web.xml 入门详细介绍
从零手写实现 tomcat-03-基本的 socket 实现
从零手写实现 tomcat-04-请求和相应的抽象
从零手写实现 tomcat-05-servlet 处置惩罚支持
从零手写实现 tomcat-06-servlet bio/thread/nio/netty 池化处置惩罚
从零手写实现 tomcat-07-war 如何解析处置惩罚三方的 war 包?
从零手写实现 tomcat-08-tomcat 如何与 springboot 集成?
从零手写实现 tomcat-09-servlet 处置惩罚类
从零手写实现 tomcat-10-static resource 静态资源文件
从零手写实现 tomcat-11-filter 过滤器
从零手写实现 tomcat-12-listener 监听器
tomcat11 系列文章
如果你对 tomcat 不是很熟,可以阅读下面的系列。
目前的最新版本, tomcat11:
web server apache tomcat11-01-官方文档入门介绍
web server apache tomcat11-02-setup 启动
web server apache tomcat11-03-deploy 如何部署
web server apache tomcat11-04-manager 如何管理?
web server apache tomcat11-06-Host Manager App -- Text Interface
web server apache tomcat11-07-Realm Configuration
web server apache tomcat11-08-JNDI Resources
web server apache tomcat11-09-JNDI Datasource
web server apache tomcat11-10-Class Loader
web server apache tomcat11-11-Jasper 2 JSP Engine
web server apache tomcat11-12-SSL/TLS Configuration
web server apache tomcat11-13-SSI
web server apache tomcat11-14-CGI
web server apache tomcat11-15-proxy
web server apache tomcat11-16-mbean
web server apache tomcat11-17-default-servlet
web server apache tomcat11-18-clusting 集群
web server apache tomcat11-19-load balance 负载均衡
web server apache tomcat11-20-connectors 连接器
web server apache tomcat11-21-monitor and management 监控与管理
web server apache tomcat11-22-logging 日志
web server apache tomcat11-23-APR
web server apache tomcat11-24-Virtual Hosting and Tomcat
web server apache tomcat11-25-Advanced IO and Tomcat
web server apache tomcat11-26-maven jars
web server apache tomcat11-27-Security Considerations
web server apache tomcat11-28-Windows Service
web server apache tomcat11-29-Windows Authentication
web server apache tomcat11-30-The Tomcat JDBC Connection Pool
web server apache tomcat11-31-websocket
web server apache tomcat11-32-rewrite
web server apache tomcat11-33-CDI
web server apache tomcat11-34-Ahead of Time compilation support
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]