拆解Tomcat10: (一) 如何快速的学习一门新的语言(二)

简介: 拆解Tomcat10: (一) 如何快速的学习一门新的语言

5. 尝试开始源码阅读之旅

从现在起,尝试开始阅读一门语言的基础框架源码,如何开始呢?第一步肯定是下载源码并搭建调试环境,但接下来,面对一个庞大的框架,从哪个类或者方法开始阅读呢?


建议按照“事情发展的顺序”来进行,对于一个后端应用来说,主要的功能就是相应客户端的请求。为了避免前端语言的干扰,我们以JSON请求为例,比如以POST方式提交一个JSON到后端服务,服务接收到请求并进行处理,最终将处理结果返回给客户端,基本上就是这样的处理流程。而这个流程一般以HTTP协议的请求为主。


5.1 简要回顾一下HTTP相关知识

一个请求可以分为请求地址和请求方法,请求头和请求体。如下图所示


53.png

响应头部主要包括HTTP协议的版本、状态码、响应内容的格式等,响应体一般为响应的具体内容。


所以,后端服务器就是实现了接收HTTP请求并进行处理,然后返回相应结果的功能。而后端服务一般由HTTP服务器(IIS、Apache、Tomcat等,Tomcat比较特殊,既实现了HTTP服务器的功能,又实现了servlet容器的功能。)+处理程序组成,所以与计算机网络相关的内容一般由HTTP服务器进行处理,如果不想深入学习这部分的同学可以跳过。


那么,我们只需要实现接收到HTTP服务传过来的请求数据并处理返回给HTTP服务器即可。


5.2 从哪开始阅读

客户端发出的请求就像唐僧取经一样,携带通关文牒(可能存在的Token等)经过层层磨难(多层组件的处理)到达西天取得真经(HTML、JSON、XML等)返回。


那么可以将整个故事分为两部分:


框架的构建及启动:取经路的构建过程,八十一难不是瞬间构成的。

请求的处理流程:请求是都经过了那些环节,被做了哪些验证和处理。

对框架源码的阅读也可以从这两条线出发。


6. 思考一下

从框架设计的角度,先思考一下,都会有哪些组件,组合关系如何,大概会涉及哪些设计原则和设计模式?也可以大概画个流程图。


涉及不同请求格式的处理,例如XML、JSON等,那么每种格式就可能会有对应的一个或一组处处理类,对于单独的处理类,会用到工厂模式?对于多个处理类的管理,策略模式?

庞大的框架构建工程,建造者模式?

各种状态的监听,观察者模式?

现在可以选一门目标语言开始学习了,


下一篇:如何在Idea中调试最新版本的Tomcat10源代码,以Tomcat为例,开启新的源码阅读。


目录
相关文章
|
Java 应用服务中间件
【JavaWeb学习】—如何启动Tomcat服务器(六)
【JavaWeb学习】—如何启动Tomcat服务器(六)
|
关系型数据库 MySQL 应用服务中间件
【JavaWeb学习】—如何修改Tomcat的端口号(十)
【JavaWeb学习】—如何修改Tomcat的端口号(十)
|
应用服务中间件
【JavaWeb学习】—停止Tomcat服务器的几种方式(九)
【JavaWeb学习】—停止Tomcat服务器的几种方式(九)
|
Java 应用服务中间件
【JavaWeb学习】—常见Tomcat启动失败的原因(七)
【JavaWeb学习】—常见Tomcat启动失败的原因(七)
|
Java 应用服务中间件 开发工具
小白带你学习Tomcat的基础
小白带你学习Tomcat的基础
80 0
|
2月前
|
XML Java 应用服务中间件
tomcat学习一:tomcat 目录及配置文件学习 server.xml 等
这篇文章是关于Apache Tomcat服务器的目录结构、配置文件(特别是server.xml)的详细介绍和学习指南。
94 0
tomcat学习一:tomcat 目录及配置文件学习 server.xml 等
|
2月前
|
Java 应用服务中间件 Linux
tomcat学习二:tomcat部署多个项目:不修改端口和修改端口 两种方式详解
这篇文章详细介绍了在Tomcat服务器上部署多个项目的方法,包括不修改端口和修改端口两种方式。
155 0
|
6月前
|
缓存 负载均衡 NoSQL
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
87 1
|
应用服务中间件
【JavaWeb学习】—IDEA整合Tomcat服务器(十二)
【JavaWeb学习】—IDEA整合Tomcat服务器(十二)
|
7月前
|
Java 应用服务中间件 Linux
深入学习Tomcat服务器优化实践
深入学习Tomcat服务器优化实践
88 0