第1篇 步入Java Web开发的殿堂第1章 Tomcat的安装与配置 2
1.1 Tomcat简介 2
1.1.1 Servlet简述 2
1.1.2 Tomcat与Servlet之间的关系 3
1.1.3 Tomcat层次结构 5
1.1.4 Java Web应用处理 7
1.1.5 Tomcat发展 7
1.2 Tomcat的安装 8
1.2.1 安装准备 8
1.2.2 JDK安装及设置 9
1.2.3 Tomcat安装及设置 12
1.2.4 测试Tomcat 12
1.3 Tomcat的配置 16
1.3.1 Tomcat目录结构 16
1.3.2 Tomcat常用配置文件 17
1.3.3 Tomcat管理程序 17
1.3.4 Tomcat的控制配置 18
1.3.5 Tomcat的管理配置 18
1.4 第一个Web应用 21
1.4.1 需求分析 21
1.4.2 软件架构 22
1.4.3 文件清单 22
1.4.4 文件详述 22
1.4.5 发布聊天室 26
1.5 小结 26
第2章 JSP开发技术 27
2.1 JSP简介 27
2.2 JSP基本语法 30
2.2.1 基本语法 30
2.2.2 对象与范围 46
2.2.3 JSP中文显示问题 49
2.3 程序实例 51
2.4 小结 59
第3章 JavaBean技术 60
3.1 JavaBean简介 60
3.2 JavaBean特性 60
3.2.1 JavaBean的构造方法 60
3.2.2 属性 61
3.3 JSP中使用JavaBean 62
3.3.1 导入JavaBean类 62
3.3.2 声明JavaBean对象 63
3.3.3 访问JavaBean属性 63
3.4 JavaBean在JSP页面中的有效范围 64
3.4.1 page 64
3.4.2 request 65
3.4.3 session 67
3.4.4 application 68
3.5 JSP的Web开发模式 69
3.5.1 JSP+JavaBean模式 69
3.5.2 JSP+JavaBean+Servlet模式 69
3.6 JSP与JavaBean应用实例 70
3.7 小结 74
第4章 Servlet技术 75
4.1 Servlet简介 75
4.1.1 Servlet概述 75
4.1.2 Servlet类 75
4.1.3 Setvlet功能 76
4.1.4 Java Servlet API 76
4.2 Servlet生命周期 78
4.2.1 加载和实例化Servlet 78
4.2.2 初始化 78
4.2.3 请求处理 79
4.2.4 终止Servlet 79
4.2.5 卸载Servlet 79
4.3 HttpServlet和ServletContext 79
4.3.1 HttpServlet类 79
4.3.2 ServletContext 81
4.4 Cookie的应用 84
4.4.1 Cookie概述 84
4.4.2 使用Cookie 85
4.4.3 Cookie创建的语法 85
4.4.4 读取Cookie的语法 86
4.4.5 命名约定 86
4.4.6 使用到期时间 86
4.5 Servlet过滤器和监听器 86
4.5.1 Servlet过滤器特点 87
4.5.2 Servlet过滤器接口 87
4.5.3 Servlet事件监听器 87
4.5.4 Servlet上下文监听器实例 88
4.6 Servlet JSP/Servlet中的汉字编码问题 90
4.6.1 GB2312-80、GBK、GBl8030-2000汉字字符集及Encoding 91
4.6.2 JSP/Servlet Web编程时的Encoding问题 92
4.7 小结 93
第2篇 苦练基本功 96
第5章 Tomcat高级配置 96
5.1 Tomcat Admin简介 96
5.2 安装配置Tomcat Admin 96
5.3 部署管理Web应用程序 98
5.4 应用程序管理器的其他管理功能 99
5.4.1 概述 99
5.4.2 部署一个Web应用 100
5.5 配置Realm组件 101
5.5.1 概述 101
5.5.2 属性 101
5.6 Tomcat组件配置 104
5.6.1 概述 104
5.6.2 各种Tomcat组件之间的关系 105
5.6.3 Tomcat基本元素介绍 105
5.7 Tomcat的其他配置功能 106
5.7.1 配置虚拟主机 106
5.7.2 配置基础验证 107
5.7.3 配置单点登录 108
5.7.4 配置用户定制目录 109
5.7.5 在Tomcat中使用CGI脚本 109
5.7.6 改变Tomcat中的JSP编译器 110
5.7.7 限制特定主机访问 111
5.8 小结 111
第6章 Session会话管理 112
6.1 Session简介 112
6.1.1 Session的概念 112
6.1.2 Cookie与Session 112
6.2 Session跟踪方法 113
6.2.1 Session tracking定义 113
6.2.2 实现Session tracking 113
6.3 会话的持久化 117
6.3.1 概述 117
6.3.2 实现 118
6.4 伪会话管理机制 119
6.4.1 概述 119
6.4.2 实现伪会话管理机制 120
6.4.3 应用实例 124
6.5 小结 126
第7章 Java管理扩展JMX 127
7.1 JMX简介 127
7.2 使用Java管理扩展JMX体系结构 128
7.2.1 设备层 128
7.2.2 代理层 131
7.2.3 分布服务层 134
7.2.4 附加管理协议API 135
7.3 4种类型的MBeans 135
7.3.1 标准MBean 136
7.3.2 丢失MBean 136
7.3.3 代理和缺乏管理 137
7.3.4 简单代理 138
7.4 利用MC4J远程监测Tomcat集群 139
7.4.1 集群元素 140
7.4.2 JMX客户端 141
7.4.3 为JMX设置系统属性 141
7.4.4 Tomcat集群的配置 142
7.4.5 以编程的方式连接JMX代理 143
7.4.6 Web应用示例安装 144
7.4.7 测量层 146
7.5 程序实例 147
7.6 小结 150
第8章 服务器端嵌入SSI 151
8.1 SSI简介 151
8.2 SSI指令及其基本格式 152
8.2.1 #echo命令 152
8.2.2 #include示范 154
8.2.3 #flastmod命令 155
8.2.4 #fsize命令 155
8.2.5 #exec命令 155
8.2.6 #set命令 156
8.2.7 #if命令 156
8.2.8 #config命令 157
8.3 SSI的Servlet参数设置 158
8.4 设置SSI初始化参数 159
8.5 SSI Servlet支持的变量 159
8.6 在Web服务器上配置SSI功能 160
8.6.1 简介 160
8.6.2 启动SSI 161
8.7 程序实例 162
8.8 小结 163
第9章 Tomcat安全管理 164
9.1 Tomcat安装安全 164
9.1.1 Admin和Manager 164
9.1.2 isp-examples和servlet-examples 164
9.1.3 更改停止命令 165
9.2 用其他账号运行Tomcat 165
9.2.1 创建新的账号 165
9.2.2 用新的账号运行Tomcat 165
9.3 文件系统安全 166
9.4 Tomcat安全域 168
9.4.1 安全域简介 168
9.4.2 Memory域 169
9.4.3 JDBC域 171
9.4.4 DataSource域 173
9.4.5 JNDIRealm 175
9.4.6 JAASRealm 178
9.4.7 Web应用程序安全 179
9.5 在Tomcat中配置使用SSL 184
9.5.1 SSL简介 184
9.5.2 在Tomcat中使用SSL 187
9.6 Tomcat阀简介 189
9.7 使用Tomcat阀 190
9.7.1 客户访问日志阀 190
9.7.2 远程地址过滤器 193
9.7.3 远程主机过滤器 193
9.7.4 客户请求记录器 194
9.7.5 单点登录阀 194
9.8 小结 195
第10章 Log4J日志管理与程序调试 196
10.1 Log4J简介 196
10.1.1 Log4J概念 196
10.1.2 Log4J关键类和接口介绍 196
10.2 配置Log4J 200
10.2.1 使用Java Properties配置 200
10.2.2 使用xml文件配置 205
10.2.3 Log4J在程序中配置 207
10.2.4 Log4J配置实现过程 208
10.3 Log4J的基本使用方法 209
10.3.1 在代码中使用Log4J 209
10.3.2 Web程序中使用Log4J 210
10.4 应用实例 210
10.4.1 配置Java Properties实例 210
10.4.2 配置Log4J.xml实例 212
10.4.3 在代码中使用Log4J实例 215
10.4.4 在Web中使用Log4J实例 216
10.5 小结 218
第11章 Ant应用 219
11.1 Ant入门 219
11.1.1 Ant简介 219
11.1.2 Ant安装与配置 219
11.1.3 Ant命令语法 221
11.2 编写build.xml文件 222
11.2.1 project元素 222
11.2.2 target元素 223
11.2.3 task元素 223
11.2.4 property元素 224
11.2.5 常用AntTask 224
11.2.6 build.xml示例 225
11.3 小结 226
第12章 Struts框架基础 227
12.1 Struts框架概述 227
12.1.1 MVC模式简介 227
12.1.2 Struts简介 228
12.1.3 Struts安装 229
12.1.4 Struts工作流程 230
12.2 Struts配置 231
12.2.1 配置ActionServlet 231
12.2.2 配置ActionForm 232
12.2.3 配置Action 232
12.3 Struts组件及工作原理 234
12.4 Struts标签库 234
12.4.1 非UI标签 235
12.4.2 UI标签 235
12.4.3 迭代标签 237
12.4.4 通用标签 237
12.5 Struts实例 238
12.6 小结 246
第3篇 突出重围 项目实战 248
第13章 电子商务购物车 248
13.1 系统需求分析 248
13.1.1 需求概述 248
13.1.2 系统功能描述 248
13.2 系统总体架构 250
13.3 数据库设计 251
13.3.1 数据表结构 251
13.3.2 建立和配置数据库 252
13.3.3 测试数据 254
13.4 系统业务实现 254
13.4.1 数据表的封装 254
13.4.2 购物车模块实现 262
13.5 小结 291
第14章 某学院网站信息发布系统 292
14.1 系统需求分析 292
14.1.1 需求概述 292
14.1.2 系统功能描述 294
14.2 系统总体架构 297
14.3 数据库设计 298
14.3.1 业务实体设计 298
14.3.2 数据模型设计 299
14.4 系统详细设计 301
14.4.1 界面设计 301
14.4.2 逻辑主线 302
14.4.3 系统中的视图设计 304
14.4.4 系统中的包设计 306
14.4.5 数据库的访问连接设计 307
14.4.6 业务层设计 309
14.5 小结 326
第15章 基于Struts+Hibernate+Spring的消息发布系统 327
15.1 系统架构 327
15.1.1 系统架构分析 327
15.1.2 采用架构的优势 328
15.2 Hibernate持久层 329
15.2.1 编写PO类 329
15.2.2 编写PO的映射配置文件 336
15.2.3 连接数据库 338
15.3 DAO组件层 341
15.3.1 DAO组件的结构 341
15.3.2 编写DAO接口 343
15.3.3 用Spring容器代替DAO工厂 349
15.4 业务逻辑层 350
15.4.1 业务逻辑组件的结构 350
15.4.2 业务逻辑组件的接口 351
15.4.3 业务逻辑组件的实现类 352
15.4.4 业务逻辑组件的配置 354
15.5 Web层设计 358
15.5.1 Action的实现 358
15.5.2 Spring容器管理Action 360
15.5.3 数据校验的选择 360
15.5.4 访问权限的控制 363
15.5.5 解决中文编码问题 364
15.5.6 JSP页面输出 366
15.6 系统最后的思考 368
15.6.1 传统EJB架构的实现 368
15.6.2 EJB架构与轻量级架构的对比 371
15.7 小结 373
第4篇 高级开发技术 376
第16章 Hibernate应用 376
16.1 Hibernate技术简介 376
16.1.1 传统JDBC的数据库操作 379
16.1.2 Hibernate的数据库操作 380
16.2 Hibernate及插件的介绍与安装 383
16.3 Hibernate配置 384
16.3.1 可编程的配置方式 384
16.3.2 XML配置文件方式 386
16.4 Hibernate的基本映射 387
16.4.1 映射文件结构 387
16.4.2 主键生成器 388
16.4.3 映射集合属性 388
16.4.4 映射引用属性 395
16.5 Hibernate的关系映射 405
16.5.1 单向N-1的关系映射 405
16.5.2 单向1-1的关系映射 408
16.5.3 单向1-N的关系映射 410
16.5.4 单向N-N的关系映射 413
16.5.5 双向1-N的关系映射 414
16.5.6 双向N-N关联 418
16.5.7 双向1-1关联 421
16.6 Hibernate查询体系 426
16.6.1 HQL查询 426
16.6.2 条件查询 436
16.6.3 SQL查询 438
16.6.4 数据过滤 442
16.7 事件框架 445
16.7.1 拦截器 446
16.7.2 事件系统 450
16.8 第一个Hibernate程序 453
16.8.1 配置Hibernate环境 454
16.8.2 编写持久化类 454
16.8.3 编写映射文件 455
16.8.4 Hibernate的配置 457
16.8.5 编写应用文件 458
16.8.6 Ant编译 459
16.9 小结 460
第17章 Spring应用 461
17.1 Spring简介 461
17.2 Spring的安装 462
17.3 Spring的两种设计模式 462
17.4 Spring对单态与工厂模式的实现 463
17.5 Spring的依赖注入 464
17.6 bean和BeanFactory 464
17.6.1 Spring容器 465
17.6.2 bean的基本定义 466
17.6.3 定义bean的行为方式 467
17.6.4 深入理解bean 468
17.7 依赖关系配置 469
17.7.1 配置依赖 469
17.7.2 注入属性值 475
17.7.3 注入field值 478
17.7.4 注入方法返回值 479
17.7.5 强制初始化bean 482
17.7.6 自动装配 483
17.7.7 依赖检查 486
17.8 bean的生命周期 487
17.8.1 了解bean的生命周期 488
17.8.2 定制bean的生命周期行为 488
17.8.3 协调不同步的bean 492
17.9 bean的继承 494
17.9.1 使用abstract属性 495
17.9.2 定义子bean 496
17.9.3 Spiing bean的继承与Java中继承的区别 498
17.10 bean后处理器 498
17.11 容器后处理器 501
17.11.1 属性占位符配置 502
17.11.2 另一种属性占位符 503
17.12 与容器交互 505
17.12.1 工厂bean简介与配置 505
17.12.2 FactoryBean接口 506
17.12.3 实现BeanFactory接口获取BeanFactory 509
17.12.4 使用BeanNameAware回顾本身 510
17.13 ApplicationContext介绍 511
17.13.1 国际化支持 512
17.13.2 事件处理 513
17.13.3 Web应用中自动加载ApplicationContext 516
17.14 加载多个XML配置文件 517
17.14.1 ApplicationContext加载多个配置文件 517
17.14.2 Web应用启动时加载多个配置文件 518
17.14.3 在XML配置文件中导入其他配置文件 518
17.15 小结 518
第18章 Struts+Spring+Hibernate整合 520
18.1 SSH框架 520
18.1.1 表现层 521
18.1.2 持久层 521
18.1.3 业务层 522
18.1.4 领域模型层 522
18.1.5 SSH框架整合的意义 523
18.2 Spring整合Struts 523
18.2.1 使用Spring的ActionSupport 523
18.2.2 覆盖RequestProcessor 524
18.2.3 将动作管理委托给Spring 525
18.2.4 拦截Struts 526
18.3 Spring整合Hibernate 526
18.3.1 配置数据源 527
18.3.2 配置SessionFactory 528
18.3.3 配置事务 529
18.4 小结 531