在[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