第1章 servlet概论 1
1.1 什么是servlet 1
1.2 为什么要使用servlet 2
1.3 编写servlet需要些什么 2
1.4 运行servlet要做些什么 3
1.5 小结 4
第2章 Java Web服务器 5
2.1 JavaServer体系结构 5
2.1.1 服务框架 5
2.1.2 服务器框架 6
2.1.3 servlet框架 6
2.2 系统管理 7
2.2.1 Web服务管理 8
2.3 内部servlet 22
2.3.1 管理servlet 22
2.3.2 CGI Servlet 22
2.3.3 文件servlet 22
2.3.4 图像映射servlet 23
2.3.5 调用者servlet 23
2.3.6 Server-Side Include Servlet 23
2.4 访问Java Web服务器 23
2.5 小结 24
第3章 第一个servlet 25
3.1 基本流程 25
3.2 在开始之前 26
3.3.1 编写servlet 27
3.3 servlet的实例: Properties 27
3.3.2 配置服务器 29
3.3.3 编写调用servlet的HTML 31
3.3.4 看看它做得怎么样 31
3.3.5 处理问题 31
3.3.6 servlet的重新加载 33
3.4 小结 33
第4章 servlet链 34
4.1 什么是servlet链 34
4.2 servlet链接的实例:表过滤器(Table Filter) 34
4.3.1 servlet别名 38
4.3 触发一个servlet链 38
4.3.2 Mime类型 42
4.3.3 HTTP请求 44
4.4 小结 47
第5章 Server-Side Includes 48
5.1 什么是Server-Side Includes 48
5.2 servlet标记的语法 49
5.3 Server-Side Includes的实例: Echo Servlet标记 49
5.4 Server-Side Includes的实例:标准的页头和页脚 52
5.5 小结 56
第6章 会话管理 57
6.1 会话跟踪 57
6.1.1 管理会话数据 59
6.1.3 浏览会话 60
6.1.2 会话的生存期 60
6.2 Cookies 65
6.3 URL Rewriting 67
6.4 不使用浏览器的会话跟踪 70
6.5 会话事件 74
6.6 小结 77
第7章 安全性 78
7.1 HTTP认证 78
7.2 用户认证 80
7.3 HTML表单认证 85
7.4 APPLET认证 88
7.6 小结 98
7.5 安全套接字协议层(SSL) 98
第8章 HTML表单 99
8.1 HTML表单还是Java Applet 99
8.2 表单基础 99
8.2.1 表单标识符 100
8.2.2 INPUT标识符 102
8.2.3 select标识符 113
8.2.4 textarea标识符 115
8.2.5 把它们都用上: 一个调查表单 115
8.3 servlet程序EchoSurvey 119
8.4 小结 122
9.1 JDBC概述 123
第9章 在servlet中使用JDBC 123
9.1.1 互操作性: JDBC的关键 124
9.1.2 JDBC-ODBC桥 124
9.1.3 JDBC驱动程序的类型 126
9.1.4 基本的JDBC流程 129
9.1.5 JDBC的一个例子: SimpleQuery 131
9.2 JDBC Servlet: EmployeeList 135
9.2.1 限制 140
9.3 连接池 144
9.3.1 编写ConnectionPool对象 144
9.4.2 版本2.1的共享资源 156
9.4.1 使用图像的例子: ImageServer 159
9.4 使用图像 159
9.4.2 在EmployeeList中加入图像 163
9.5 小结 163
第10章 applet与servlet的通信 165
10.1 HTTP 165
10.2 什么是隧道技术 165
10.3 基本流程 166
10.4 Java1.0.2的隧道技术 166
10.4.1 编发参数和返回值 166
10.4.2 基本的隧道客户端类 171
10.4.3 Lite 隧道客户 174
10.4.4 基本的隧道servlet类 175
10.4.5 Lite 隧道服务器 178
10.4.6 隧道技术的实例: RemoteMathLite 179
10.5 有Java 1.1中的新特性: 序列化 189
10.5.1 使用ObjectOutputStream和ObjectInputStream 190
10.5.2 序列化隧道客户类 195
10.5.3 序列化隧道服务器类 196
10.5.4 隧道技术的例子: RemoteIndy 197
10.6 小结 207
第11章 编写servlet程序的自动化applet程序 208
11.1 编写客户程序总是大同小异 208
11.2 编写服务器应用程序总是大同小异 209
11.3 让Java为你编写客户端和服务器 212
11.3.1 使用Reflection API: ShowClass 212
11.3.2 编写ServletGen 218
11.3.3 隧道实例再访: RemoteMathLite 232
11.3.4 隧道实例再访: RemoteIndy 237
11.4 小结 242
第12章 简化发布处理: 自动JAR文件创建 243
12.1 找到类文件从属关系 243
12.1.1 进一步考察类文件结构 244
12.1.2 一个找从属关系的算法 249
12.2 打开和读取一个类文件 250
12.3 读取常量池中的表项数 252
12.3.1 处理常量池 253
12.3.2 找到所有的类名字 255
12.4 合而为一: CreateArchive应用程序 256
12.5 发布一个Applet 258
12.6 一些缺陷 260
12.7 小结 261
第13章 制作第三方的JDBC驱动程序 262
13.1 JDBC驱动程序类型 262
13.2 挑战: 轻量级的JDBC驱动程序 262
13.3 JDBC的难点 263
13.4 编写SQLServlet 264
13.4.1 JDBC API的实现 265
13.5 SQLServlet例子: SimpleQueryApplet 295
13.5.1 编写Applet 295
13.5.2 配置服务器 300
13.5.3 创建发布存档 301
13.5.5 看看运行情况 302
13.5.4 编写加载这个Applet的HTML 302
13.6 小结 304
第14章 用servlet发送电子邮件 305
14.1 可能的方案 305
14.2 使用SmtpClient发送电子邮件 305
14.3 JavaMail API 309
14.3.1 登录到存储 310
15.2.2 用JavaMail阅读邮件 312
15.2.3 用JavaMail发送邮件 319
15.2.4 忽略了什么 321
14.4 小结 322
15.2 义不容辞的 Hello World 323
15.1 JNI概述 323
第15章 使用servlet和本地代码 323
15.2.1 设计接口 324
15.2.2 创建Java类 324
15.2.3 生成头文件 326
15.2.4 实用本地方法 327
15.2.5 编译本地代码和创建共享库 327
15.2.6 运动Java应用程序 328
15.3 在C中调用Java方法 328
15.3.1 调用Java方法 329
15.3.2 形成方法声明 331
15.3.3 看看它的执行 331
15.4 列出ODBC数据源 331
15.5 小结 341
第16章 使用servlet和RMI 342
16.1 挑战: 访问其他Java服务器 342
16.2 RMI概述 342
16.3 RMI的例子: CustomerInfo 343
16.3.1 定义远程接口 343
16.3.2 编写服务器实现 344
16.3.3 生成代码存根(Stub)和框架(Skeleton) 347
16.3.4 编写使用远程对象的客户程序 347
16.3.5 启动服务器 349
16.3.6 编写执行这个servlet的HTML 350
16.3.7 看看它做得怎么样 350
16.6 小结 352
16.4 将一个servlet变成一个RMI 352
16.5 使用RMI更为简单 352
附录A THE SERVLET API 353
A.1 javax.servlet.http.Cookie 353
A.2 javax.servlet.GenericServlet 356
A.3 javax.servlet.http.HttpServlet 359
A.4 javax.servlet.http.HttpServletRequest 362
A.5 javax.servlet.http.HttpServletResponse 365
A.6 javax.servlet.http.HttpSession 369
A.7 javax.servlet.http.HttpSessionBindingEvent 372
A.8 javax.servlet.http.HttpSeasionBindingListener 373
A.9 javax.servlet.http.HttpSessionContext 373
A.10 javax.servlet.http.HttUtils 374
A.11 javax.servlet.RequestDispatcher 375
A.12 javax.servlet.Servlet 376
A.13 javax.servlet.ServletConfig 378
A.14 javax.servlet.ServletContext 378
A.15 javax.servlet.ServletException 382
A.16 javax.servlet.ServletInputStream 383
A.17 javax.servlet.ServletOutputStream 384
A.18 javax.servlet.ServletRequest 385
A.19 javax.servlet.ServletResponse 388
A.20 javax.servlet.SingleThreadModel 389
A.21 javax.servlet.UnavailableException 389
附录B Internet上的servlet资源 391