https://github.com/HappyTomas/another-tutorial-about-java-web/blob/master/00-08.md

00-02、理解HTTP中给出了一个简单的服务器代码,Tomcat的设计思路也是类似的。

Tomcat是一个servlet容器。

http://www.kaifajie.cn/tomcat6/7454.html中的内容值得参考:

先不去关技术细节,对一个servlet容器,我觉得它首先要做以下事情: 1:实现Servlet api规范。这是最基础的一个实现,servlet api大部分都是接口规范。如request、response、session、cookie。为了我们应用端能正常使用,容器必须有一套完整实现。
2:启动Socket监听端口,等待http请求。
3:获取http请求,分发请求给不同的协议处理器,如http和https在处理上是不一样的。
4:封装请求,构造HttpServletRequest。把socket获取的用户请求字节流转换成java对象httprequest。构造httpResponse。
5:调用(若未创建,则先加载)servlet,调用init初始化,执行servlet.service()方法。
6:为httpResponse添加header等头部信息。
7:socket回写流,返回满足http协议格式的数据给浏览器。
8:实现JSP语法分析器,JSP标记解释器。JSP servlet实现和渲染引擎。
9:JNDI、JMX等服务实现。容器一般额外提供命名空间服务管理。
10:线程池管理,创建线程池,并为每个请求分配线程。

Tomcat有自己的类加载机制。可以参考:
Java类加载原理解析
深入探讨 Java 类加载器
Tomcat类加载器体系结构

有一本书是讲Tomcat如何运行的:《How Tomcat Works》

最新文章

  1. 利用select实现IO多路复用TCP服务端
  2. HDU 2227 Find the nondecreasing subsequences (DP+树状数组+离散化)
  3. C++函数重载和函数模板
  4. 【RQNOJ356】myt的格斗
  5. Windows7下安装MongoDB(转)
  6. springMVC与struts2的区别
  7. HUD-4602 Partition 排列
  8. JavaScript忍者秘籍——原型
  9. SetConsoleScreenBufferSize 函数--设置控制台屏幕缓冲区大小
  10. Struts2实现文件上传(三)
  11. Windows PowerShell 入門(2)-基本操作編 2
  12. 面试:C++实现访问者模式
  13. Log4j 日志操作包配置详解
  14. [No0000C4]TortoiseSVN配置外部对比工具
  15. Python - 1. Built-in Atomic Data Types
  16. dict的items()方法于iteritems()方法的不同
  17. 修改别人写的Hibernate数据库操作代码
  18. 【HBase】zookeeper在HBase中的应用
  19. vue2.0函数(箭头函数)的this作用域
  20. Eclipse CDT 配置C /C ++ 标准库 (UBUNTU 12 )

热门文章

  1. bootstrap学习(全局CSS样式)(二)
  2. 将WPF版的弹幕播放器给优化了一下
  3. tcpdump的使用
  4. GNU C内联汇编(AT&T语法)
  5. 你可能从未听过的 Linux 发行版
  6. Ubuntu下轻松安装virtualbox
  7. 关停后Bitfinex放贷初探
  8. Android4.4系统源码百度网盘下载
  9. Android Killer
  10. poj3592 Instantaneous Transference tarjan缩点+建图