tomcat应用服务器有哪些,手写一个Tomcat应用服务器
mytomcat
项目简介
自己实现的简易的Tomcat
Tomca
实现说明
Tomcat,这只3脚猫,大学的时候就认识了,直到现在工作中,也常会和它打交道。这是一只神奇的猫,我们可以通过实现它来深刻了;了解它的实现原理。
考虑自己实现一个Tomcat,都有哪些关键的要点呢?
第一,提供 Socket 服务
Tomcat 的启动,必然是 Socket 服务,只不过它支持 HTTP 协议而已!
这里其实可以扩展思考下,Tomcat 既然是基于 Socket,那么是基于BIO or NIO or AIO 呢?
第二,进行请求的分发
要知道一个 Tomcat 可以为多个 Web 应用提供服务,那么很显然,Tomcat 可以把 URL 下发到不同的Web应用。
第三,需要把请求和响应封装成`request / response
我们在 Web 应用这一层,可从来没有封装过 request/response 的,我们都是直接使用的,这就是因为 Tomcat 替我们做好了这一步。
代码实现
工程目录结构:
工程目录结构.png
必要设置
工程设置
工程设置.png
启动设置
工程设置.png
测试
浏览器输入localhost:8080/girl并回车
测试1.png
浏览器输入localhost:8080/world并回车
测试2.png
控制台显示内容:
MyTomcat is Starting...
MyRequest{url='/girl', method='GET'}
MyRequest{url='/world', method='GET'}
TODO
使用解析web.xml的配置文件的方式替换硬编码。
使用NIO替换BIO。
参考资料:
tomcat应用服务器有哪些,手写一个Tomcat应用服务器相关推荐
- 大佬说:怎么手写一个Tomcat然后给这个Tomcat 部署项目并且成功处理请求 ? 我TM当时就吓尿了!
文章目录 前言 一.怎么部署项目? 二.分析以及思路 1.Tomcat的配置文件 2 web项目文件夹信息 2.初始化项目配置 定义映射类 加载配置文件 加载 server.xml 解析项目内容 解析 ...
- 手写一个基于NIO的迷你版Tomcat
笔者也建立的自己的公众号啦,平时会分享一些编程知识,欢迎各位大佬支持~ 扫码或微信搜索北风IT之路关注 本文公众号地址:手写一个基于NIO的迷你版Tomcat 在很久之前看到了一篇文章写一个迷你版的T ...
- Tomcat(二):手写嵌入式tomcat
一.什么是嵌入式tomcat 嵌入式tomcat:非传统的部署方式,将tomcat嵌入到主程序中进行运行. 二.嵌入式tomcat的优点 灵活部署.任意指定位置.通过复杂的条件判断 三.Maven集成 ...
- 【Tomcat】第十篇:手写嵌入式Tomcat插件(超简单)
1.两种类型tomcat 传统tomcat:需要jar部署,通过BootStrap启动 嵌入式tomcat:maven引入Tomcat类,自定义启动插件(Connector,Engin,Host,Co ...
- 手写一个山寨版的springmvc框架
文章目录 一,环境准备 二,项目结构搭建 三,简易版的前端控制器 DnDispatcherServlet 四,测试springmvc的性能 五,结束语 首先贴出来一张从网上copy下来的 spring ...
- 用Java手写一个微型下载资源网站
文章目录 手写一个微型下载资源网站[Java实现用户注册.登陆.下载功能] 一.技术栈 二.流程分析图 注册 登陆 下载 三.案例实现效果 首页 注册 登陆 下载网主页 壁纸下载 书籍下载 影视下载 ...
- 【干货】JDK动态代理的实现原理以及如何手写一个JDK动态代理
动态代理 代理模式是设计模式中非常重要的一种类型,而设计模式又是编程中非常重要的知识点,特别是在业务系统的重构中,更是有举足轻重的地位.代理模式从类型上来说,可以分为静态代理和动态代理两种类型. 在解 ...
- vue @click 赋值_vue 手写一个时间选择器
vue 手写一个时间选择器 最近研究了 DatePicker 的实现原理后做了一个 vue 的 DatePicker 组件,今天带大家一步一步实现 DatePicker 的 vue 组件. 原理 Da ...
- 肝一波 ~ 手写一个简易版的Mybatis,带你深入领略它的魅力!
零.准备工作 <dependencies><dependency><groupId>mysql</groupId><artifactId>m ...
最新文章
- java 多线程共享数据_Java多线程学习:多个线程间共享数据
- 我的世界java版记分板_我的世界计分板教程 计分板指令详解
- 记忆化搜索,FatMouse and Cheese
- 免费的数据库建模工具
- xml模块 增删改查
- 【Elasticsearch】es 插入数据 性能优化 以及 影响插入的因素
- JetBrains 2017/2018全系列产品激活工具
- 那些非常好用的电脑软件
- 策划运营分会场:巴别时代 CEO--放开偏执,拥抱变革
- oracle pq distribute,详解Oracle hints PQ_DISTRIBUTE
- kernel日志时间转换python脚本(MTK)
- 认知系列4: 《认知突围》笔记
- 学栈和队列时的人生感悟
- 好课堂Scratch编程10 趣学篇(六)听题!格里芬的挑战
- 一些前端入门者可能需要的网站
- 养生996的崛起:马云为什么给他最痛恨的兔子军团站台?
- 我的neovim配置
- 手机SIM卡PIN码的重要性
- 监护仪原理介绍之ECG(心电)
- CDMA移动终端卡——UIM(转)