在[00-02、理解HTTP](https://github.com/someus/another-tutorial-about-java-web/blob/master/00-02.md)中给出了一个简单的服务器代码,Tomcat的设计思路也是类似的。
Tomcat是一个servlet容器。
[http://www.kaifajie.cn/tomcat6/7454.html](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类加载原理解析](http://www.blogjava.net/zhuxing/archive/2008/08/08/220841.html)
[深入探讨 Java 类加载器](http://www.ibm.com/developerworks/cn/java/j-lo-classloader/index.html)
[Tomcat类加载器体系结构](http://www.cnblogs.com/ivan-zheng/articles/1789682.html)
有一本书是讲Tomcat如何运行的:[《How Tomcat Works》](http://book.douban.com/subject/1943128/)。
- JSP & Servlet
- 00-00、序
- 00-01、相关软件的安装
- 00-02、理解HTTP
- 00-03、从JSP开始
- 00-04、理解Servlet
- 00-05、过滤器与监听器
- 00-06、使用velocity模板引擎
- 00-07、使用数据库连接池
- 00-08、Tomcat的运行机制
- Spring MVC
- 01-00、Spring与依赖注入
- 01-01、Spring与面向切面编程
- 01-02、使用Spring MVC构建Hello World
- 01-03、JdbcTemplate
- 01-04、基于注解的URL映射
- 01-05、JSON
- 01-06、校验器
- 01-07、国际化
- 01-08、拦截器
- 01-09、文件上传
- 01-10、转换器与格式化
- Book
- Online Tutorial
- Q & A
- Learn More
- Supplement