第1章 Tomcat介绍 1
1.1 简介 1
1.1.1 Tomcat历史 1
1.1.2 Tomcat许可 2
1.2 安装和启动 3
1.2.1 Tomcat下载与安装 3
1.2.2 Tomcat启动 4
1.2.3 IDE启动 5
1.2.4 嵌入式启动 10
1.2.5 Debug启动 11
1.3 Tomcat目录结构 12
1.4 Tomcat 8.5之后的新特性 12
1.5 小结 13
第2章 Tomcat总体架构 14
2.1 总体设计 14
2.1.1 Server 14
2.1.2 Connector和Container 15
2.1.3 Container设计 17
2.1.4 Lifecycle 20
2.1.5 Pipeline和Valve 23
2.1.6 Connector设计 24
2.1.7 Executor 26
2.1.8 Bootstrap和Catalina 28
2.2 Tomcat启动 30
2.3 请求处理 31
2.4 类加载器 33
2.4.1 J2SE标准类加载器 33
2.4.2 Tomcat加载器 34
2.4.3 Web应用类加载器 36
2.5 小结 37
第3章 Catalina 38
3.1 什么是Catalina 38
3.2 Digester 39
3.2.1 对象栈 40
3.2.2 匹配模式 41
3.2.3 处理规则 41
3.2.4 示例程序 42
3.3 创建Server 44
3.3.1 Server的解析 45
3.3.2 Engine的解析 48
3.3.3 Host的解析 49
3.3.4 Context的解析 50
3.4 Web应用加载 53
3.4.1 StandardHost 54
3.4.2 HostConfig 56
3.4.3 StandardContext 60
3.4.4 ContextConfig 64
3.4.5 StandardWrapper 69
3.4.6 Context命名规则 69
3.5 Web请求处理 71
3.5.1 总体过程 71
3.5.2 请求映射 72
3.5.3 Catalina请求处理 80
3.6 DefaultServlet和JspServlet 81
3.6.1 DefaultServlet 82
3.6.2 JspServlet 84
3.7 小结 85
第4章 Coyote 86
4.1 什么是Coyote 86
4.2 Web请求处理 88
4.2.1 主要概念 88
4.2.2 请求处理 90
4.2.3 协议升级 92
4.3 HTTP 94
4.3.1 基础知识 94
4.3.2 配置方式 95
4.4 AJP 97
4.4.1 基础知识 97
4.4.2 Web服务器组件 103
4.4.3 配置方式 106
4.5 HTTP/2.0 106
4.5.1 基础知识 106
4.5.2 配置方式 110
4.6 I/O 111
4.6.1 BIO 112
4.6.2 NIO 115
4.6.3 NIO2 121
4.6.4 APR 130
4.7 小结 134
第5章 Jasper 136
5.1 Jasper简介 136
5.2 JSP编译方式 137
5.2.1 运行时编译 137
5.2.2 预编译 141
5.3 JSP编译原理 144
5.4 小结 151
第6章 Tomcat配置管理 152
6.1 JVM配置 152
6.1.1 JVM配置选项 152
6.1.2 系统属性 153
6.2 服务器配置 158
6.2.1 catalina.properties 158
6.2.2 server.xml 159
6.2.3 context.xml 172
6.3 Web应用配置 172
6.3.1 ServletContext初始化参数 173
6.3.2 会话配置 174
6.3.3 Servlet声明及映射 175
6.3.4 应用生命周期监听器 177
6.3.5 Filter定义及映射 177
6.3.6 MIME类型映射 178
6.3.7 欢迎文件列表 178
6.3.8 错误页面 179
6.3.9 本地化及编码映射 179
6.3.10 安全配置 179
6.3.11 JNDI配置 180
6.3.12 其他 183
6.4 Web应用过滤器 185
6.4.1 CorsFilter 186
6.4.2 CsrfPreventionFilter 188
6.4.3 ExpiresFilter 188
6.4.4 FailedRequestFilter 190
6.4.5 RemoteAddrFilter 191
6.4.6 RemoteHostFilter 191
6.4.7 RemoteIpFilter 192
6.4.8 RequestDumperFilter 195
6.4.9 SetCharacterEncodingFilter 195
6.4.10 WebdavFixFilter 196
6.5 Tomcat管理 196
6.5.1 host-manager 196
6.5.2 manager 197
6.5.3 管理命令行 199
6.5.4 Ant任务 200
6.5.5 JMX 201
6.6 小结 201
第7章 Web服务器集成 202
7.1 Web服务器与应用服务器的区别 202
7.2 集成应用场景 205
7.3 与Apache HTTP Server集成 206
7.3.1 Windows环境安装 206
7.3.2 Linux环境安装 207
7.3.3 mod_jk 209
7.3.4 mod_proxy_ajp 229
7.4 与Ngnix集成 235
7.4.1 Ngnix简介 235
7.4.2 Windows环境安装 237
7.4.3 Linux环境安装 237
7.4.4 Tomcat集成 241
7.5 与IIS集成 243
7.6 小结 243
第8章 Tomcat集群 244
8.1 Tomcat集群介绍 244
8.1.1 Tomcat集群基础 246
8.1.2 Apache Tribes 247
8.1.3 Tomcat集群组件实现 253
8.2 集群配置 254
8.3 会话同步 255
8.3.1 DeltaManager 256
8.3.2 BackupManager 257
8.3.3 替代方案 257
8.4 集群部署 258
8.4.1 实现原理 258
8.4.2 配置方式 259
8.5 小结 259
第9章 Tomcat安全 260
9.1 配置安全 260
9.1.1 安装部署问题 260
9.1.2 server.xml配置 261
9.2 应用安全 263
9.2.1 Realm 264
9.2.2 HttpServletRequest 265
9.2.3 Authenticator 266
9.3 传输安全(SSL) 267
9.4 Java安全策略 273
9.4.1 简介 273
9.4.2 catalina.policy 275
9.5 小结 279
第10章 Tomcat性能调优 280
10.1 Tomcat性能测试及诊断 281
10.1.1 常见测试方式 281
10.1.2 性能测试工具 282
10.1.3 数据采集及分析 290
10.2 Tomcat性能优化 303
10.2.1 JVM优化 304
10.2.2 Tomcat配置 308
10.3 应用性能优化建议 311
10.4 小结 312
第11章 Tomcat附加功能 313
11.1 Tomcat的嵌入式启动 313
11.1.1 为什么需要嵌入式启动 313
11.1.2 嵌入式启动Tomcat 314
11.1.3 嵌入式启动服务器 316
11.2 Tomcat中的JNDI 317
11.2.1 什么是JNDI 317
11.2.2 Tomcat中的JNDI 318
11.3 Comet和WebSocket 320
11.3.1 什么是Comet 321
11.3.2 Tomcat的Comet实现 322
11.3.3 什么是WebSocket 326
11.3.4 Tomcat的WebSocket实现 328
11.4 小结 335
附录 server.xml配置 336
结束语 370