第1部分 XML篇 1
第1章 XML与DTD 2
1.1 XML的产生 2
1.2 W3C介绍 2
1.3 关于XML的几个问题 3
1.4 XML与HTML的比较 4
1.4.1 XML将数据与显示分开 5
1.4.2 XML对文档的格式要求更加严格 6
1.4.3 XML有且只能有一个根元素 6
1.5 XML的编辑工具 7
1.6 XML文档 8
1.6.1 XML声明 9
1.6.2 文档类型声明 10
1.6.3 元素 11
1.6.4 注释 15
1.6.5 处理指令 15
1.6.6 空白处理 16
1.6.7 行尾处理 16
1.6.8 语言标识 16
1.7 格式良好的XML 17
1.8 DTD 18
1.8.1 在XML文档中引入DTD 18
1.8.2 DTD的结构 21
1.9 有效的XML 35
1.10 XML处理器/解析器 35
1.11 小结 36
2.1 声明名称空间 38
第2章 XML名称空间 38
2.2 名称空间在元素和属性中的运用 39
2.2.1 名称空间在元素中的运用 39
2.2.2 默认名称空间 41
2.2.3 名称空间在属性中的运用 42
2.3 名称空间和DTD 43
2.4 小结 45
第3章 对XML文档进行分析 46
3.1 DOM、SAX和JAXP 46
3.2 使用DOM解析XML文档 47
3.2.1 DOM结构模型 47
3.2.2 DOM解析器工厂 50
3.2.3 JAXP的错误类和异常类 52
3.2.4 用DOM解析XML文档实例 53
3.3 使用SAX解析XML文档 65
3.3.1 SAX的处理机制 66
3.3.2 配置SAX解析器 69
3.3.3 SAX解析器工厂 70
3.3.4 SAX的异常类 71
3.3.5 ErrorHandler接口 73
3.3.6 使用SAX解析XML文档实例 74
3.4 JDOM 83
3.4.1 下载并配置JDOM 83
3.4.2 JDOM API介绍 84
3.5 dom4j 88
3.5.1 下载并配置dom4j 88
3.5.2 dom4j API介绍 88
3.5.3 第一个实例 92
3.5.4 第二个实例 94
3.6 解析名称空间 96
3.6.1 DOM和名称空间 96
3.6.2 SAX和名称空间 97
3.6.3 JDOM和名称空间 98
3.6.4 dom4j和名称空间 98
3.7 小结 99
第4章 XSL转换 101
4.1 XSLT概述 101
4.2 Xalan处理器 105
4.3 模板规则 106
4.4 〈xsl:apply-templates〉元素 107
4.5 〈xsl:value-of〉元素 108
4.6 〈xsl:for-each〉元素 110
4.7 匹配节点的模式 111
4.8 mode属性 113
4.9 内置的模板规则 114
4.10 对空白的处理 115
4.11 XPath语言 116
4.11.1 XPath上下文 116
4.11.2 位置路径 117
4.11.3 表达式 121
4.11.4 核心函数库 123
4.12 创建结果树 126
4.12.1 创建元素和属性 127
4.12.2 创建文本 131
4.12.4 创建注释 133
4.12.3 创建处理指令 133
4.12.5 复制节点 134
4.12.6 输出格式化的数字 135
4.13 条件处理 144
4.13.1 〈xsl:if〉 144
4.13.2 〈xsl:choose〉 145
4.14 排序 146
4.15 变量和参数 150
4.15.1 变量 150
4.15.2 参数 152
4.16 命名模板 153
4.17 合并样式表 154
4.17.1 导入样式表 154
4.17.2 包含样式表 155
4.18 模板规则冲突的解决 156
4.19 〈xsl:output〉元素 157
4.19.1 指定输出文档的格式 158
4.19.2 输出XML声明 158
4.19.3 输出文档类型定义 159
4.19.4 输出CDATA段 160
4.19.5 指定文档缩进 161
4.19.6 指定媒体类型 161
4.20 XSLT中的函数 162
4.21 数字格式化 162
4.22 查询和分组 164
4.23 处理多个输入文档 172
4.24 JAXP中的XSLT API 175
4.24.1 转换器工厂 175
4.24.2 Transformer和Templates 176
4.24.3 一个例子 178
4.25 小结 179
第2部分 Servlet篇 181
第5章 Servlet与Tomcat 182
5.1 Servlet与Servlet容器 182
5.2 Servlet容器的分类 183
5.3 Servlet和其他技术的比较 183
5.4 Tomcat介绍 183
5.5 Tomcat的安装与配置 184
5.5.1 安装Tomcat 185
5.5.2 运行Tomcat 186
5.5.3 Tomcat启动分析 189
5.5.4 Tomcat的体系结构 191
5.6 Tomcat的管理程序 193
5.6.1 admin Web应用程序 193
5.6.2 manager Web应用程序 194
5.7 小结 195
第6章 Servlet技术 196
6.1 Servlet API 196
6.1.1 Servlet接口 196
6.1.2 Servlet相关接口与实现类 197
6.2 几个实例 205
6.2.1 实例一:SimpleHello 205
6.2.2 实例二:WelcomeYou 210
6.2.3 实例三:OutputInfo 216
6.2.4 实例四:LoginServlet 220
6.3 Servlet异常 223
6.3.2 UnavailableException类 224
6.4 Servlet生命周期 224
6.3.1 ServletException类 224
6.5 Servlet上下文 226
6.5.1 ServletContext接口 226
6.5.2 页面访问量统计实例 228
6.6 请求转发 231
6.6.1 RequestDispatcher接口 232
6.6.2 得到RequestDispatcher对象 232
6.6.3 请求转发的实例 233
6.6.4 sendRedirect()和forward()方法的区别 238
6.7 小结 239
7.1 配置任意目录下的Web应用程序 240
第7章 Web应用程序的部署 240
7.2 WAR文件 242
7.3 Tomcat中Servlet的另一种运行方式 244
7.4 与Servlet配置相关的元素 247
7.4.1 〈servlet〉元素及其子元素 247
7.4.2 〈servlet-mapping〉元素及其子元素 249
7.5 一个实例 250
7.6 小结 253
第8章 数据库访问 254
8.1 驱动程序的类型 254
8.1.1 JDBC-ODBC桥 254
8.1.2 部分本地API Java驱动程序 255
8.1.3 JDBC网络纯Java驱动程序 255
8.2 安装数据库 256
8.1.4 本地协议的纯Java驱动程序 256
8.3 JDBC API 260
8.3.1 加载并注册数据库驱动 261
8.3.2 建立到数据库的连接 263
8.3.3 访问数据库 264
8.3.4 事务处理 289
8.3.5 可滚动和可更新的结果集 296
8.4 JDBC数据源和连接池 299
8.5 MySQL对中文的处理 302
8.6 小结 302
第9章 会话跟踪 303
9.1 用于会话跟踪的技术 303
9.1.2 Cookies 304
9.1.1 SSL会话 304
9.1.3 URL重写 305
9.2 Java Servlet API的会话跟踪 306
9.2.1 HttpSession接口 306
9.2.2 Session的生命周期 307
9.2.3 Cookie的应用 319
9.2.4 HttpSessionBindingListener接口 328
9.2.5 在线人数统计程序 329
9.3 小结 335
第10章 Servlet的异常处理机制 337
10.1 声明式异常处理 338
10.1.1 HTTP错误代码的处理 338
10.1.2 Java异常的处理 341
10.2.1 在try-catch语句中处理异常 343
10.2 程序式异常处理 343
10.2.2 使用RequestDispatcher来处理异常 346
10.3 小结 349
第11章 开发线程安全的Servlet 350
11.1 多线程的Servlet模型 350
11.2 线程安全的Servlet 351
11.2.1 变量的线程安全 351
11.2.2 属性的线程安全 360
11.3 SingleThreadModel接口 362
11.4 小结 363
11.5 思考题 363
第3部分 JSP篇 365
12.1 JSP简介 366
12.2 JSP的运行机制 366
第12章 JSP技术 366
12.3 JSP的语法 371
12.3.1 指令元素(directive elements) 371
12.3.2 脚本元素(scripting elements) 374
12.3.3 动作元素(action elements) 376
12.3.4 注释 383
12.4 JSP的隐含对象 383
12.4.1 pageContext 384
12.4.2 out 385
12.4.3 page 385
12.4.4 exception 386
12.5 对象和范围 387
12.6 留言板程序 389
12.7 留言板管理程序 397
12.8 JSP文档 402
12.8.2 JSP文档中的元素语法 404
12.8.1 JSP文档的标识 404
12.9 小结 407
第13章 JSP与JavaBean 409
13.1 JavaBean简介 409
13.1.1 属性的命名 409
13.1.2 属性的类型 411
13.2 在JSP中使用JavaBean 412
13.2.1 〈jsp:useBean〉 412
13.2.2 〈jsp:setProperty〉 413
13.2.3 〈jsp:getProperty〉 414
13.2.4 示例 414
13.3 网上书店程序 418
13.4 小结 440
14.1 模型1 441
第14章 JSP开发的两种模型 441
14.2 模型2 445
14.3 小结 449
第15章 标签库(Tag Library) 450
15.1 标签库API 450
15.1.1 标签的形式 451
15.1.2 Tag接口 451
15.1.3 IterationTag接口 453
15.1.4 BodyTag接口 454
15.2 标签库描述符 455
15.2.1 〈taglib〉元素 456
15.2.2 〈validator〉元素 457
15.2.3 〈listener〉元素 457
15.2.4 〈tag〉元素 458
15.2.5 〈tag-file〉元素 460
15.2.6 〈function〉元素 461
15.3 传统标签的开发 462
15.3.1 实例一:〈hello〉标签 462
15.3.2 实例二:〈max〉标签 465
15.3.3 实例三:〈greet〉标签 467
15.3.4 实例四:〈switch〉标签 469
15.3.5 实例五:〈iterate〉标签 473
15.4 简单标签的开发 479
15.4.1 SimpleTag接口 479
15.4.2 实例一:〈welcome〉标签 480
15.4.3 实例二:〈max_ex〉标签 481
15.5 小结 483
16.1.1 “[]”和“.”操作符 484
16.1.2 算术操作符 484
第16章 表达式语言(EL) 484
16.1 语法 484
16.1.3 关系操作符 485
16.1.4 逻辑操作符 485
16.1.5 Empty操作符 485
16.1.6 条件操作符 485
16.1.7 圆括号 486
16.1.8 操作符的优先级 486
16.2 隐含对象 486
16.3 命名变量 487
16.4 保留的关键字 488
16.5 函数 488
16.6 小结 489
第17章 JSP标准标签库(JSTL) 490
17.1 JSTL简介 490
17.2 配置JSTL 491
17.3 Core标签库 491
17.3.1 一般用途的标签 492
17.3.2 条件标签 496
17.3.3 迭代标签 498
17.3.4 URL相关的标签 501
17.4 I18N标签库 506
17.4.1 国际化标签 506
17.4.2 格式化标签 511
17.5.1 〈sql:setDataSource〉 520
17.5 SQL标签库 520
17.5.2 〈sql:query〉 521
17.5.3 〈sql:param〉 524
17.5.4 〈sql:dateParam〉 525
17.5.5 〈sql:update〉 526
17.5.6 〈sql:transaction〉 527
17.6 XML标签库 529
17.6.1 核心操作 529
17.6.2 流程控制 532
17.6.3 转换操作 536
17.7 Functions标签库 539
17.7.1 fn:contains 539
17.7.2 fn:containsIgnoreCase 539
17.7.3 fn:startsWith 540
17.7.5 fn:indexOf 541
17.7.4 fn:endsWith 541
17.7.6 fn:replace 542
17.7.7 fn:substring 543
17.7.8 fn:substringBefore 544
17.7.9 fn:substringAfter 544
17.7.10 fn:split 545
17.7.11 fn:join 546
17.7.12 fn:toLowerCase 547
17.7.13 fn:toUpperCase 547
17.7.14 fn:trim 548
17.7.15 fn:escapeXml 548
17.7.16 fn:length 549
17.8 小结 549
18.2 一个简单的标签文件 551
18.1 标签文件的语法 551
第18章 标签文件(Tag Files) 551
18.3 标签文件的隐含对象 554
18.4 标签文件的指令 555
18.4.1 tag指令 555
18.4.2 attribute指令 556
18.4.3 variable指令 557
18.5 标签文件实例讲解 558
18.5.1 实例一:〈welcome〉标签 558
18.5.2 实例二:〈toHtml〉标签 559
18.6 〈jsp:invoke〉动作元素 561
18.7 〈jsp:doBody〉动作元素 562
18.8 小结 562
第4部分 应用篇 563
19.1.1 Logger组件 564
第19章 使用Log4j进行日志操作 564
19.1 Log4j介绍 564
19.1.2 Appender组件 566
19.1.3 Layout组件 567
19.2 使用Log4j 568
19.3 Log4j使用实例 572
19.4 NDC和MDC 585
19.5 小结 587
第20章 Filter在Web开发中的应用 588
20.1 过滤器概述 588
20.2 Filter API 589
20.2.1 Filter接口 589
20.2.2 FilterConfig接口 590
20.2.3 FilterChain接口 590
20.3 过滤器的部署 591
20.4 过滤器的开发 592
20.5 对用户进行统一验证的过滤器 594
20.6 对请求和响应数据进行替换的过滤器 600
20.7 小结 609
第21章 中文乱码问题与国际化 610
21.1 中文乱码问题产生的由来 610
21.1.1 常用字符集 610
21.1.2 对乱码产生过程的分析 612
21.2 中文乱码问题的解决方案 614
21.3 使用过滤器解决中文问题 616
21.4 让Tomcat支持中文文件名 620
21.5 国际化与本地化 621
21.5.1 Locale 621
21.5.2 资源包 623
21.5.3 编写国际化的Web应用程序 625
21.6 小结 629
第22章 使用JBuilder2005开发Web应用程序 630
22.1 JBuilder2005简介 630
22.2 集成开发环境介绍 631
22.2.1 菜单栏 631
22.2.2 主工具栏 632
22.2.3 工程工具栏和工程窗口 632
22.2.4 结构窗口 633
22.2.5 文件标签和内容窗口 634
22.2.6 文件视图标签 634
22.2.7 消息窗口 637
22.3.1 配置JDK 638
22.3 JBuilder2005的基本配置 638
22.3.2 配置Web服务器 640
22.4 文件的上传和下载 642
22.4.1 基于表单的文件上传 642
22.4.2 文件上传格式分析 643
22.4.3 commons-fileupload组件 644
22.4.4 文件上传实例 646
22.4.5 文件下载实例 656
22.5 给图片添加水印和文字 664
22.6 小结 667
第23章 开发安全的Web应用程序 668
23.1 概述 668
23.2 理解验证机制 669
23.2.1 HTTP Basic Authentication 669
23.2.3 HTTPS Client Authentication 670
23.2.2 HTTP Digest Authentication 670
23.2.4 Form Based Authentication 671
23.3 声明式安全 671
23.3.1 〈security-constraint〉元素 671
23.3.2 〈login-config〉元素 673
23.3.3 基本验证的实现 674
23.3.4 基于表单验证的实现 676
23.3.5 使用数据库保存用户名和密码 678
23.4 程序式安全 682
23.5 SQL注入攻击的防范 685
23.6 小结 687
第24章 Web应用程序开发实例 688
24.1 图像的缩放 688
24.2 如何动态生成验证码 692
24.3 如何避免表单的重复提交 696
24.3.1 在客户端避免表单的重复提交 697
24.3.2 在服务器端避免表单的重复提交 700
24.4 小结 706
第25章 使用Ant辅助Web应用程序开发 707
25.1 Ant介绍 707
25.2 安装并配置Ant 708
25.2.1 下载并安装Ant 708
25.2.2 设置Ant的运行环境 708
25.3 编写Ant的构建文件 709
25.3.1 准备工作 709
25.3.2 工程(〈project〉) 712
25.3.3 目标(〈target〉) 713
25.3.4 任务 714
25.3.5 Path-like Structures 728
25.3.6 引用(References) 729
25.4 部署到Tomcat 730
25.5 运行Ant 732
25.6 小结 732
第26章 XML和XSLT在Web开发中的应用 733
26.1 功能概述 733
26.2 程序设计 733
26.2.1 软件架构 733
26.2.2 页面设计 735
26.2.3 数据库设计 747
26.3 程序实现 749
26.3.1 org.sunxin.guestbook 749
26.3.2 org.sunxin.guestbook.beans 750
26.3.3 org.sunxin.guestbook.util 758
26.3.4 org.sunxin.guestbook.parser 762
26.3.5 org.sunxin.guestbook.controller 765
26.3.6 org.sunxin.guestbook.view 787
26.3.7 page.xsl 791
26.3.8 web.xml 797
26.3.9 context.xml 798
26.4 小结 798
附录A 快速掌握HTML 799
附录B 解析HTTP 820
附录C server.xml文件 833
附录D web.xml文件 840
索引 852