tomcat设计思想学习
文章平均质量分 88
本专栏参考how tomcat works一书整理而来,由于手敲源码工作量比较大,后续文章改为读书笔记整理了,感兴趣的小伙伴,可以去阅读原书,配合源码使用。(tomcat源码版本为4)
Binary Oracle
一名热爱开源和技术的Coder , 开源框架spring committer , golang开源网络库netpoll committer; (脱产备战25考研中,停更一年)
展开
-
Tomcat 处理文件上传
而x-www-form-urlencoded只可以传输基础的文本数据,不过你要是强行把文件当做文本,用这个类型传也没人能拦你,但作为文本传输时后端必然用字符串方式解析,byte->str时的编码开销完全没必要,而且可能会导致编码错误……因为报文小啊,普通的请求报文不会太大的,常见的也就几K到几十K,而且对于纯文本报文来说,读取操作一定也是及时的且一次性全部读取的,而multipart这种形式的报文不同,它是文本+文件混合的方式,而且还可能是多文件。.........转载 2022-08-02 16:52:33 · 2249 阅读 · 4 评论 -
从零开始手写Tomcat的教程14节----服务器组件(Server)和服务组件(Service)
从零开始手写Tomcat的教程14节----服务器组件Server和服务组件Service 服务器组件StandardServer类initialize方法start方法stop方法await方法Service接口StandardService类Connector和Container与生命周期有关的方法应用程序Stopper类小结服务器组件public interface Server { // --------------------------------------------原创 2022-03-23 09:39:50 · 282 阅读 · 0 评论 -
Tomcat卷二---请求流程源码分析
Tomcat卷二Tomcat 请求处理流程请求流程请求流程源码解析源码研究1.Acceptor.run()2.Poller.run()2.1 Poller.processKey()2.2 AbstractEndpoint.processSocket()3. NioEndpoint.SocketProcessor.doRun()4. AbstractProtocol.ConnectionHandler.process5.AbstractProcessorLight.process()6.Http11Proce原创 2022-02-04 21:48:29 · 702 阅读 · 0 评论 -
从零开始手写Tomcat的教程6节----生命周期
从零开始手写Tomcat的教程6节----生命周期Lifecycle接口LifecycleEvent类LifecycleListener接口LifecycleSupport类应用程序SimpleContext类SimpleContextLifecycleListener类SimpleLoader类SimplePipeline类SimpleWrapper类总结Lifecycle生命周期接口是所有容器都必须实现的一个接口,通过该接口,可以以一种统一的形式来管理所有容器的生命周期过程,并且还可以通过监听器实原创 2022-03-13 17:28:26 · 863 阅读 · 0 评论 -
Tomcat卷三---Jasper引擎
Tomcat卷三---Jasper引擎Jasper 简介JSP 编译方式运行时编译编译过程编译结果预编译JSP源码流程JSP编译原理代码分析编译流程Jasper 简介对于基于JSP 的web应用来说,我们可以直接在JSP页面中编写 Java代码,添加第三方的 标签库,以及使用EL表达式。但是无论经过何种形式的处理,最终输出到客户端的都是 标准的HTML页面(包含js ,css…),并不包含任何的java相关的语法。 也就是说, 我 们可以把jsp看做是一种运行在服务端的脚本。 那么服务器是如何将 JS原创 2022-02-25 15:17:23 · 1630 阅读 · 0 评论 -
从零开始手写Tomcat的教程11节----StandardWrapper
从零开始手写Tomcat的教程11节----StandardWrapper方法调用序列SingleThreadModel类StandardWrapper类分配servlet实例载入servlet实例ServerConfig对象1.getServletContext()方法2.getServletName()方法3. getInitParameter()方法4.getInitParameterNames()方法servlet容器的父子关系StandardWrapperFacadestandardWrapper原创 2022-03-18 21:23:17 · 439 阅读 · 0 评论 -
从零开始手写Tomcat的教程7节---日志记录器
从零开始手写Tomcat的教程7节---日志记录器Logger接口Tomcat的日志记录器LoggerBase类SystemOutLogger类SystemErrLogger类FileLogger类小结应用程序 日志记录器需要和某个servlet容器相关联 Logger是tomcat日志记录器都必须实现的接口Logger接口Tomcat的日志记录器Tomcat5 中实现了生命周期接口值得我们关注,因为这意味着可以通过关联的容器来启动和停止Logger组件LoggerBa原创 2022-03-13 22:54:36 · 1490 阅读 · 0 评论 -
从零开始手写Tomcat的教程9节---Session管理
从零开始手写Tomcat的教程9节---Session管理Session管理Session对象Session接口StandardSession对象StandardSessionFacade类ManagerManager接口ManagerBase类StandardManager类PersistentManagerBase类PersistentManager类DistributedManaeger类存储器storeBase类FileStore类JDBCStore类应用程序SimpleWrapperValve类原创 2022-03-15 21:14:03 · 633 阅读 · 0 评论 -
从零开始手写Tomcat的教程5节---servlet容器
从零开始手写Tomcat的教程5节---servlet容器前言Container接口管道任务Pipeline类Valve接口ValveContext接口Contianed接口Wrapper接口Context接口Wrapper应用程序SimpleLoader类SimplePipeline类SimpleWrapperValve类ClientPLoggerValve类HeaderLoggerValve类BootStrap1类运行应用程序总结Context应用程序思路整理SimpleContextValve类Sim原创 2022-03-12 22:13:19 · 1110 阅读 · 0 评论 -
从零开始手写Tomcat的教程8节----加载器
从零开始手写Tomcat的教程8节----加载器Java的类加载器解答一: servlet只能访问指定目录下的类,类加载器如何实现这种隔离访问机制的呢?解决二: 类加载器如何实现在项目不重启的情况下,对某个发生变化的类进行热更新呢?Loader接口WebAppLoader类创建类加载器设置仓库设置类路径设置访问权限开启新线程执行类的重新载入WebappClassLoader类类缓存载入类应用程序总结我首先提出几个问题,大家先思考一下,如果都可以想出来,说明对类加载器的掌握程度还算不错: serv原创 2022-03-14 22:03:22 · 858 阅读 · 1 评论 -
从零开始手写Tomcat的教程1-3节
从零开始手写Tomcat的教程手写Tomcat介绍第一节 : 一个简单的Web服务器注意点第二节: 一个简单的servlet容器手写Tomcat介绍本项目主要是手写精简版的tomcat,力争做到不遗不漏本项目gitee仓库链接如下:https://gitee.com/DaHuYuXiXi/easy-tomcat.git本篇文章是梳理每一小节的基本脉络,具体每小节的代码实现,自行参考gitee仓库里面的提交记录第一节 : 一个简单的Web服务器本节主要重点在于建立基本的socket通信服务,原创 2022-03-06 20:58:35 · 760 阅读 · 0 评论 -
Tomcat卷四----Tomcat 服务器配置
Tomcat卷四----Tomcat 服务器配置Tomcat服务器配置server.xmlServerServiceExecutorConnectorEngineHostContexttomcat-users.xmlTomcat服务器配置Tomcat 服务器的配置主要集中于 tomcat/conf 下的 catalina.policy、 catalina.properties、context.xml、server.xml、tomcat-users.xml、web.xml 文件。server.xml原创 2022-02-25 19:46:42 · 957 阅读 · 0 评论 -
Tomcat卷五---Web 应用配置,管理配置和JVM配置
Tomcat卷五---Web 应用配置,管理配置和JVM配置Web 应用配置ServletContext 初始化参数会话配置Servlet配置Listener配置Filter配置欢迎页面配置错误页面配置Tomcat 管理配置host-managermanagerJVM 配置JVM内存模型图JVM配置选项Web 应用配置web.xml 是web应用的描述文件, 它支持的元素及属性来自于Servlet 规范定义 。在 Tomcat 中, Web 应用的描述信息包括 tomcat/conf/web.xml原创 2022-02-25 20:44:08 · 307 阅读 · 0 评论 -
Tomcat卷一 ----架构和初始化源码分析
Tomcat卷一本系列主要在于梳理tomcat的整体架构和源码剖析,只挑重点流程进行分析原创 2022-02-04 17:22:39 · 718 阅读 · 0 评论 -
从零开始手写Tomcat的教程10节---安全性
从零开始手写Tomcat的教程10节---安全性领域GenericPrincipal类LoginConfig类Authenticator接口安装验证器阀应用程序SimpleContextConfig类SimpleRealm类SimpleUserDataBaseRealm类Bootstarp1类BootStrap2类总结对tomcat中管道和阀门机制不懂的小伙伴,参考本篇文章领域目前可知结构,如图所示,下面继续分析GenericPrincipal类LoginConfig类原创 2022-03-17 19:50:17 · 336 阅读 · 0 评论 -
从零开始手写Tomcat的教程4节---Tomcat默认连接器
从零开始手写Tomcat的教程4节原创 2022-03-12 11:10:06 · 1306 阅读 · 0 评论 -
从零开始手写Tomcat的教程12节----StandardContext
从零开始手写Tomcat的教程12节----StandardContextStandardContext的配置StandardContext类的构造函数启动StandardContext类的实例invoke方法StandardContextMapper类对重载的支持backgroundProcess()方法小结StandardContext的配置StandardContext类的构造函数 /** * Create a new StandardContext compon原创 2022-03-21 13:31:34 · 719 阅读 · 8 评论 -
从零开始手写Tomcat的教程13节---Host和Engine
从零开始手写Tomcat的教程13节---Host和EngineHost接口StandardHost实现类StandardHostValve类StandardHostWrapper类为什么必须要有一个Host容器应用程序小结Engine接口StandardEngine类StandardEngineValve类应用程序小结Host接口public interface Host extends Container { // --------------------------------原创 2022-03-22 22:34:15 · 359 阅读 · 0 评论