从零手写Tomcat-Tomcat源码分析

一、整体设计思路

1、tomcat也是一个java程序,也有一个端口号
2、tomcat端口号接收用户请求(此处有多线程处理)
3、根据用户请求的URL映射到具体的项目servlet(项目的servlet在web.xml中有配置)
4、执行servlet的service方法然后转发到具体的doGet或者doPost方法
5、返回浏览器响应

设计图

在这里插入图片描述

二、源码设计

1、加载某个目录下的所有的web.xml。

在这里插入图片描述

2、使用xml解析工具得到web.xml中配置的servlet,并使用类加载器加载进JVM

在这里插入图片描述

3、接受请求,每个请求是一个线程

在这里插入图片描述

4、根据请求的URL获取对应的servlet, 然后执行servlet的Service方法

在这里插入图片描述
Servlet的service方法会根据请求method来判断是执行doGet方法还是doPost方法
在这里插入图片描述

5、创建Request和Reponse

Request

在这里插入图片描述

response

在这里插入图片描述
注意:因为Servlet的service方法需要根据请求的Request的method方法的返回值来判断是执行doGet还是doPost。故需要设置Request的method方法的返回值。
在这里插入图片描述

原文链接: http://www.bxoon.com/archives/%E4%BB%8E%E9%9B%B6%E6%89%8B%E5%86%99tomcat-tomcat%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90

相关推荐
<p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">我们很多时候都想知道Web容器Tomcat是如何工作的?它是如何处理我们传入http请求的?又是如何响应的?</p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"> </p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">Tomcat作为Web服务器深受市场欢迎,有必要对其进行深入的研究。在工作中,我们经常会把写好的代码打包放在Tomcat里并启动,然后在浏览器里就能愉快的调用我们写的代码来实现相应的功能了,那么Tomcat是如何工作的?</p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"> </p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;">通过手写Tomcat服务器,让学员了解服务器的底层代码,方便学员后期的深入学习,而不是停留在表面API的调用层面。</p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"> </p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><strong style="margin: 0px; padding: 0px;">课程讲义截图:</strong></p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"> </p> <p style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 16px; background-color: #ffffff;"><strong style="margin: 0px; padding: 0px;"><img src="https://img-bss.csdnimg.cn/202104160434449629.gif" alt="" /></strong></p>
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:马嘣嘣 返回首页