第1章 驾驭Java Web开发环境——开启Java Web开发之门 4
第1篇 技能学习篇 4
1.1 本章学习任务 4
1.1.1 本章知识体系 4
1.1.2 实例开发任务 4
1.2 初窥Java Web应用 5
1.2.1 理解C/S结构 5
1.2.2 理解B/S结构 5
1.2.3 B/S与C/S的区别 6
1.2.4 了解JavaWeb应用的成功案例 7
1.3 Java Web开发的基石——开发工具包JDK 8
1.3.1 下载JDK 8
1.3.2 JDK的安装 10
1.3.3 配置和测试JDK 12
1.4 Java Web应用的Web服务器——Tomcat 14
1.4.1 Web应用服务工作原理 14
1.4.2 Web应用服务器汇总 15
1.4.3 获取Tomcat 15
1.4.4 熟悉Tomcat的五脏六腑 17
1.5 Java Web开发利器之Eclipse 19
1.5.1 获取Eclipse 19
1.5.2 运行Eclipse 21
1.5.3 打造中文版Eclipse 22
1.6 做好项目开发的准备工作 25
1.6.1 集成Eclipse与Tomcat 25
1.6.2 完善Web项目开发所需配置 27
1.7 实战检验 28
1.7.1 创建第一个Java Web项目 29
1.7.2 将图片输出到JSP页面之中 31
1.8 疑难解惑 31
1.8.1 Tomcat端口被占用导致不能启动 31
1.8.2 Eclipse没有创建JSP项 32
1.9 精彩回顾 33
第2章 Java Web开发必修课——JSP语法 36
2.1 本章学习任务 36
2.1.1 本章知识体系 36
2.1.2 实例开发任务 36
2.2 什么是Jsp 37
2.2.1 JSP简介 37
2.2.2 理解JSP运行原理 38
2.3 使用JsP指令标识 39
2.3.1 页面指令page的使用 39
2.3.2 文件包含指令include的使用 41
2.3.3 引用标签库指令taglib的使用 43
2.4 使用JSP脚本 44
2.4.1 在JSP中应用代码片段 44
2.4.2 使用JSP表达式 45
2.4.3 声明标识的使用 46
2.5 注释的魅力 47
2.5.1 基本的HTML注释 47
2.5.2 JSP隐藏注释 48
2.5.3 代码片段中的注释 48
2.6 常用的JsP动作标识 49
2.6.1 使用包含动作标识〈jsp:include〉 49
2.6.2 使用请求转发的动作标识〈jsp:forward〉 52
2.6.3 子动作标识〈jsp:param〉的使用 53
2.7 实战检验 54
2.7.1 输出九九乘法表 54
2.7.2 JSP中实现随机抽奖 55
2.8 疑难解惑 56
2.8.1 在JSP页面中编写中文之后不能保存 56
2.8.2 访问JSP页面出现乱码 56
2.8.3 在JSP页面中使用Include指令后,JSP不能编译 56
2.9 精彩回顾 57
第3章 前人栽树后人乘凉——JSP内置对象 60
3.1 本章学习任务 60
3.1.1 本章知识体系 60
3.1.2 实例开发任务 60
3.2 简化开发——JSP内置对象概述 61
3.2.1 为什么需要JSP内置对象 61
3.2.2 内置对象及其使用场合 61
3.3 out输出对象的应用 62
3.3.1 向客户端输出数据 62
3.3.2 管理相应缓冲区 63
3.4 request请求对象的应用 64
3.4.1 获取请求参数 64
3.4.2 解决中文乱码 66
3.4.3 获取客户端数据 66
3.5 response回应对象的应用 68
3.5. 1 HTTP头信息的操作 68
3.5.2 设置MIME类型 68
3.5.3 页面重定向操作 69
3.6 session会话对象的应用 70
3.6.1 session的生命周期 70
3.6.2 会话的创建与获取 70
3.6.3 移除session中的数据 71
3.6.4 设置session的有效时间 71
3.7 application应用对象应用 72
3.7.1 application的生命周期 72
3.7.2 application中数据的操作 72
3.7.3 Web应用初始化参数的配置 73
3.7.4 application对象应用示例 74
3.8 其他内置对象的应用 75
3.8.1 应答与请求的page对象 75
3.8.2 页面上下文的pageContext对象 75
3.8.3 获取web.xml配置信息的config对象 76
3.8.4 获取异常信息的exception对象 76
3.9 实战检验 76
3.9.1 将网页保存为Word文档 76
3.9.2 学生管理系统中用户登录模块 77
3.10 疑难解惑 79
3.10.1 表单提交中文数据乱码 79
3.10.2 如何在超链接中传递多个参数 79
3.10.3 重定向后出现404错误 79
3.11 精彩回顾 79
第4章 体验面向对象——JavaBean技术 82
4.1 本章学习任务 82
4.1.1 本章知识体系 82
4.1.2 实例开发任务 82
4.2 JavaBean简介 83
4.2.1 JavaBean产生的背景 83
4.2.2 使用JavaBean的意义 84
4.2.3 了解JavaBean的规范 84
4.2.4 Eclipse对JavaBean方法的支持 85
4.3 JavaBean与JSP的完美结合 86
4.3.1 更加对象化的JSP开发 86
4.3.2 〈jsp:useBean〉标识的应用 89
4.3.3 〈jsp:getProperty〉标识的应用 90
4.3.4 〈jsp:setProperty〉标识的应用 92
4.3.5 开发体验之JavaBean实现档案录入 93
4.4 实战检验 95
4.4.1 利用JavaBean实现电子时钟 95
4.4.2 通过JSP、JavaBean实现调查问卷 97
4.5 疑难解惑 100
4.5.1 不能获取JavaBean的属性信息 100
4.5.2 不能为JavaBean属性赋值 100
4.5.3 〈jsp:setProperty〉获取不到表单中的所有信息 100
4.6 精彩回顾 101
第5章 Web应用的缔造者——Servlet技术 104
5.1 本章学习任务 104
5.1.1 本章知识体系 104
5.1.2 实例开发任务 104
5.2 与时俱进——了解Servlet技术 105
5.2.1 初步认识Servlet 105
5.2.2 Servlet与JSP的区别 105
5.3 为我所用——Servlet技术开发 106
5.3.1 Servlet在Java EE中的结构体系 106
5.3.2 Servlet核心API 106
5.3.3 创建第一个Servlet对象 108
5.3.4 Servlet配置解析 109
5.3.5 使用Servlet处理业务逻辑 110
5.3.6 掌握Servelet处理流程 111
5.3.7 Eclipse快速创建Servlet 112
5.4 一夫当关——配置并应用Servlet过滤器 114
5.4.1 过滤器的基本原理 115
5.4.2 过滤器的核心API 116
5.4.3 过滤器的创建与配置 116
5.4.4 Java Web中字符乱码分析 118
5.4.5 实现字符编码过滤器 118
5.5 实战检验 122
5.5.1 通过Servlet实现录入用户信息 122
5.5.2 应用过滤器实现网页计数器 126
5.6 疑难解惑 128
5.6.1 访问Servlet出现404错误 128
5.6.2 修改Servlet无效 129
5.6.3 创建过滤器并没有实现过滤效果 129
5.7 精彩回顾 129
第6章 打造无脚本的JSP页面——EL与JSTL标签库 129
6.1 本章学习任务 132
6.1.1 本章学习任务 132
6.1.2 实例开发任务 132
6.2 EL与JSTL简介 133
6.2.1 什么是EL 133
6.2.2 什么是JSTL 133
6.3 EL表达式的应用 134
6.3.1 EL的基本语法 134
6.3.2 EL的运算符 134
6.3.3 EL的隐含对象 136
6.4 JSTL核心标签库的应用 138
6.4.1 数据访问标签 138
6.4.2 流程控制标签 140
6.4.3 循环标签 142
6.5 JSTL格式标签库的应用 144
6.5.1 使用格式化数字 144
6.5.2 使用格式化时间 145
6.6 实战检验 146
6.6.1 根据星期显示不同的提示信息 146
6.6.2 读取数组中的数据 147
6.7 疑难解惑 147
6.7.1 JSTL的优点 147
6.7.2 JSTL和EL的关系 148
6.8 精彩回顾 148
第7章 动态网站之灵魂——数据库应用开发 150
7.1 本章学习任务 150
7.1.1 本章知识体系 150
7.1.2 实例开发任务 150
7.2 MySQL数据库的安装与使用 151
7.2.1 安装并配置MySQL 151
7.2.2 安装MySQL GUI Tool 156
7.2.3 连接MySQL Administrator 157
7.2.4 创建数据库 158
7.2.5 创建数据表 159
7.2.6 编辑数据表中的数据 160
7.3 JDBC技术 160
7.3.1 JDBC技术原理 160
7.3.2 JDBC连接数据库的过程 161
7.3.3 JDBC连接MySQL数据库 162
7.4 JDBC核心API 162
7.4.1 代表数据库连接的Connection接口 163
7.4.2 驱动程序管理器DriverManager类 163
7.4.3 执行SQL语句的Statement接口 164
7.4.4 预编译执行SQL语句的PreparedStatement接口 164
7.4.5 结果集ResultSet接口 165
7.5 JDBC操作数据库 166
7.5.1 向数据库中插入数据 166
7.5.2 从数据库中查询所需数据 168
7.5.3 修改数据库中的数据 170
7.5.4 删除无用的数据 171
7.5.5 批处理数据操作 172
7.5.6 应用存储过程进行数据操作 173
7.6 实战检验 175
7.6.1 JDBC连接SQL Server 2005数据库 175
7.6.2 网站用户注册 176
7.7 疑难解惑 178
7.7.1 PreparedStatement与Statement 178
7.7.2 预编译的理解 178
7.8 精彩回顾 179
第8章 浅尝辄止——初识Struts 2
8.1 本章学习任务 182
8.1.1 本章知识体系 182
8.1.2 实例开发任务 182
8.2 Struts 2概述 183
8.2.1 理解MVC原理 183
8.2.2 Struts 2框架的产生 184
8.2.3 Struts 2的结构体系 184
8.3 Struts 2入门 185
8.3.1 Struts 2的获取与放置 185
8.3.2 第一个Struts 2程序 185
8.4 Action对象 188
8.4.1 认识Action对象 188
8.4.2 请求参数的注入原理 189
8.4.3 Action的基本流程 190
8.4.4 什么是动态Action 190
8.4.5 动态Action的应用 191
8.5 Struts 2的配置文件 194
8.5.1 Struts 2的配置文件类型 194
8.5.2 Struts 2的包配置 194
8.5.3 名称空间配置 195
8.5.4 Action相关配置 195
8.5.5 通配符实现简化配置 197
8.5.6 返回结果的配置 197
8.6 Struts 2的开发模式 198
8.6.1 实现与ServletAPI的交互 198
8.6.2 域模型DomainModel 199
8.6.3 驱动模型ModelDriven 200
8.7 实战检验 201
8.7.1 Struts 2处理表单数据 201
8.7.2 使用Map类型的request、session、application 204
8.8 疑难解惑 206
8.8.1 StrutsPrepareAndExecuteFilter过滤器 206
8.8.2 struts.xml文件配置出错 206
8.9 精彩回顾 206
第9章 庖丁解牛——揭密Struts 2高级技术 208
9.1 本章学习任务 208
9.1.1 本章知识体系 208
9.1.2 实例开发任务 208
9.2 OGNL表达式语言 209
9.2.1 认识OGNL 209
9.2.2 Struts 2框架中的OGNL 209
9.2.3 操作普通的属性与方法 211
9.2.4 访问静态方法与属性 214
9.2.5 访问数组 214
9.2.6 访问List、Set、Map集合 215
9.2.7 投影与选择 215
9.3 Struts 2的标签库 216
9.3.1 数据标签的应用 216
9.3.2 控制标签的应用 219
9.3.3 表单标签的应用 221
9.4 拦截器的使用 223
9.4.1 了解拦截器 223
9.4.2 拦截器API 225
9.4.3 使用拦截器 226
9.5 数据验证机制 227
9.5.1 手动验证的实现 227
9.5.2 验证文件的命名规则 228
9.5.3 验证文件的编写风格 228
9.6 实战检验 229
9.6.1 Struts 2标签下的用户注册 229
9.6.2 使用验证框架对数据校验 232
9.7 疑难解惑 234
9.7.1 不能通过OGNL访问类的静态方法 234
9.7.2 不能通过OGNL访问类的request中的变量 234
9.7.3 数据验证无效 234
9.8 精彩回顾 234
第10章 邂逅数据库持久化利器——Hibernate技术入门 234
10.1 本章学习任务 238
10.1.1 本章知识体系 238
10.1.2 实例开发任务 238
10.2 初识Hibernate 239
10.2.1 理解ORM原理 239
10.2.2 Hibernate简介 240
10.3 Hibernate入门 241
10.3.1 获取Hibernate 241
10.3.2 Hibernate配置文件 241
10.3.3 了解并编写持久化类 242
10.3.4 Hibernate映射 243
10.3.5 Hibernate主键策略 244
10.4 Hibernate数据持久化 245
10.4.1 Hibernate实例状态 245
10.4.2 Hibernate初始化类 246
10.4.3 保存数据 247
10.4.4 查询数据 249
10.4.5 删除数据 250
10.4.6 修改数据 251
10.4.7 关于延迟加载 252
10.5 使用Hibernate的缓存 252
10.5.1 一级缓存的使用 253
10.5.2 配置并使用二级缓存 254
10.6 实战检验 255
10.6.1 修改员工信息 255
10.6.2 根据学号查询学生信息 258
10.7 疑难解惑 259
10.7.1 持久化操作无法提交到数据库 259
10.7.2 配置事务的重要性 259
10.7.3 session的持久化状态转换 259
10.8 精彩回顾 259
第11章 探密数据库持久化利器——Hibernate高级应用 259
11.1 本章学习任务 262
11.1.1 本章知识体系 262
11.1.2 实例开发任务 262
11.2 实体关联关系映射 263
11.2.1 数据模型与领域模型 264
11.2.2 理解并配置多对一单向关联 264
11.2.3 理解并配置多对一双向关联 266
11.2.4 理解并配置一对一主键关联 267
11.2.5 理解并配置一对一外键关联 269
11.2.6 理解并配置多对多关联关系 270
11.2.7 了解级联操作 272
11.3 实体继承关系映射 273
11.3.1 类继承树映射成一张表 273
11.3.2 每个子类映射成一张表 275
11.3.3 每个具体类映射成为一张表 276
11.4 Hibernate查询语言 277
11.4.1 了解HQL语言 277
11.4.2 实体对象查询 278
11.4.3 条件查询 279
11.4.4 HQL参数绑定机制 280
11.4.5 排序查询 280
11.4.6 聚合函数的应用 280
11.4.7 分组方法 281
11.4.8 联合查询 281
11.4.9 子查询 282
11.5 实战检验 283
11.5.1 双向多对一的信息添加与查询 283
11.5.2 员工信息的模糊查询 285
11.6 疑难解惑 287
11.6.1 为什么需要配置实体的关联关系 287
11.6.2 Hibernate是否能使用SQL语句进行查询 287
11.6.3 Hibernate与DML语言的区别 287
11.7 精彩回顾 287
第12章 简化企业开发瑰宝之一——Soring核心之IoC 287
12.1 本章学习任务 290
12.1.1 本章知识体系 290
12.1.2 实例开发任务 290
12.2 Spring概述 291
12.2.1 初识Spring 291
12.2.2 Spring的获取 292
12.2.3 简单配置Spring 293
12.2.4 使用BeanFactory管理Bean 294
12.2.5 ApllicationContext的应用 294
12.3 依赖注入 295
12.3.1 什么是控制反转与依赖注入 295
12.3.2 Bean的配置 296
12.3.3 Setter注入 297
12.3.4 构造器注入 298
12.3.5 引用其他的Bean 299
12.3.6 匿名内部JavaBean的创建 301
12.4 自动装配 301
12.4.1 按Bean名称装配 301
12.4.2 按Bean类型装配 302
12.4.3 自动装配的其他方式 303
12.5 Bean的作用域 304
12.5.1 了解Spring中的Bean 304
12.5.2 Singleton的作用域 304
12.5.3 Prototype的作用域 305
12.6 对Bean的特殊处理 306
12.6.1 初始化与销毁 306
12.6.2 自定义属性编辑器 307
12.7 实战检验 309
12.7.1 用户登录验证 309
12.7.2 登录页面国际化 310
12.8 疑难解惑 312
12.8.1 控制反转的缺点 312
12.8.2 是否有其他方式实现Setter注入和构造器注入 312
12.8.3 销毁prototype作用域的bean是否必要 312
12.9 精彩回顾 312
第13章 简化企业开发瑰宝之二——Spring核心之AOP 312
13.1 本章学习任务 316
13.1.1 本章知识体系 316
13.1.2 本章实例开发任务 316
13.2 AOP概述 317
13.2.1 了解AOP 317
13.2.2 AOP的简单实现 319
13.3 Spring的切入点 320
13.3.1 静态切入点与动态切入点 320
13.3.2 深入静态切入点 321
13.3.3 深入切入点底层 322
13.3.4 Spring中其他切入点 322
13.4 Aspect对AOP的支持 323
13.4.1 了解Aspect 323
13.4.2 Spring中的Aspect 323
13.4.3 DefaultPointcutAdvisor切入点配置器 324
13.4.4 NameMatchMethodPointcutAdvisor切入点配置器 325
13.5 Spring持久化 325
13.5.1 DAO模式介绍 325
13.5.2 Spring的DAO理念 326
13.5.3 事务应用的管理 328
13.5.4 应用JdbcTemplate操作数据库 331
13.5.5 与Hibernate整合 332
13.6 实战检验 334
13.6.1 SpringAOP实现的用户注册 334
13.6.2 Spring与Hibernate整合批量添加数据 336
13.7 疑难解惑 338
13.7.1 AOP与OOP的区别 338
13.7.2 AOP的优点 338
13.7.3 在Spring中不直接使用JDBC的原因 338
13.8 精彩回顾 339
第14章 程序员的伴侣——程序调试与发布 342
14.1 本章学习任务 342
14.1.1 本章知识体系 342
14.1.2 本章学习任务 342
14.2 查看错误提示信息 342
14.2.1 查看JSP页面输出的错误 342
14.2.2 查看错误日志 343
14.3 常见错误的分析与解决 343
14.3.1 指令标识的语法错误 343
14.3.2 动作标识的语法错误 345
14.3.3 脚本标识中的错误 346
14.3.4 空指针错误 349
14.4 发布网站到个人服务器 351
14.4.1 发布网站的前提条件 351
14.4.2 发布配置 351
第2篇 范例演练篇 356
第15章 学以致用——基础知识相关 356
15.1 带记录账号功能的用户登录 356
15.1.1 范例功能演示 356
15.1.2 开发思路指引 356
15.1.3 专家难点解析 357
15.1.4 设计过程详解 357
15.1.5 范例开发手记 358
15.1.6 进阶与提高 358
15.2 防止重复提交的问卷调查 359
15.2.1 范例功能演示 359
15.2.2 开发思路指引 359
15.2.3 专家难点解析 360
15.2.4 设计过程详解 360
15.2.5 范例开发手记 361
15.2.6 进阶与提高 361
15.3 在网页中加入验证码 361
15.3.1 范例功能演示 361
15.3.2 开发思路指引 362
15.3.3 专家难点解析 363
15.3.4 设计过程详解 363
15.3.5 范例开发手记 366
15.3.6 进阶与提高 366
15.4 过滤敏感字符的留言本 368
15.4.1 范例功能演示 368
15.4.2 开发思路指引 369
15.4.3 专家难点解析 369
15.4.4 设计过程详解 369
15.4.5 范例开发手记 372
15.4.6 进阶与提高 372
15.5 自动生成静态HTML页面 373
15.5.1 范例功能演示 373
15.5.2 开发思路指引 374
15.5.3 专家难点解析 374
15.5.4 设计过程详解 375
15.5.5 范例开发手记 377
15.5.6 进阶与提高 377
第16章 幕后英雄的用武之地——数据库相关 380
16.1 将密码加密并保存到数据库 380
16.1.1 范例功能演示 380
16.1.2 开发思路指引 380
16.1.3 专家难点解析 381
16.1.4 设计过程详解 381
16.1.5 范例开发手记 384
16.1.6 进阶与提高 384
16.2 功能完善的数据分页 384
16.2.1 范例功能演示 384
16.2.2 开发思路指引 385
16.2.3 专家难点解析 386
16.2.4 设计过程详解 386
16.2.5 范例开发手记 389
16.2.6 进阶与提高 390
16.3 在查询结果中搜索 391
16.3.1 范例功能演示 391
16.3.2 开发思路指引 391
16.3.3 专家难点解析 392
16.3.4 设计过程详解 392
16.3.5 范例开发手记 395
16.3.6 进阶与提高 395
16.4 通用数据库备份 395
16.4.1 范例功能演示 395
16.4.2 开发思路指引 396
16.4.3 专家难点解析 397
16.4.4 设计过程详解 397
16.4.5 范例开发手记 399
16.4.6 进阶与提高 399
16.5 通用数据库恢复 400
16.5.1 范例功能演示 400
16.5.2 开发思路指引 401
16.5.3 专家难点解析 401
16.5.4 设计过程详解 401
16.5.5 范例开发手记 404
16.5.6 进阶与提高 404
第17章 Web开发的制胜法宝——图像与文件相关 404
17.1 批量上传文件 406
17.1.1 范例功能演示 406
17.1.2 开发思路指引 406
17.1.3 专家难点解析 407
17.1.4 设计过程详解 407
17.1.5 范例开发手记 408
17.1.6 进阶与提高 408
17.2 上传图片到数据库并显示 408
17.2.1 范例功能演示 409
17.2.2 开发思路指引 409
17.2.3 专家难点解析 410
17.2.4 设计过程详解 410
17.2.5 范例开发手记 411
17.2.6 进阶与提高 411
17.3 生成图片缩略图 413
17.3.1 范例功能演示 413
17.3.2 开发思路指引 413
17.3.3 专家难点解析 414
17.3.4 设计过程详解 414
17.3.5 范例开发手记 416
17.3.6 进阶与提高 416
17.4 具有防盗链功能的文件下载 416
17.4.1 范例功能演示 416
17.4.2 开发思路指引 417
17.4.3 专家难点解析 418
17.4.4 设计过程详解 418
17.4.5 范例开发手记 419
17.4.6 进阶与提高 420
17.5 文件的压缩与解压 420
17.5.1 范例功能演示 420
17.5.2 开发思路指引 420
17.5.3 专家难点解析 421
17.5.4 设计过程详解 422
17.5.5 范例开发手记 423
17.5.6 进阶与提高 423
第18章 数据分析大师——图表与报表相关 426
18.1 JFreeChart柱状图表分析房价 426
18.1.1 范例功能演示 426
18.1.2 开发思路指引 427
18.1.3 专家难点解析 427
18.1.4 设计过程详解 427
18.1.5 范例开发手记 428
18.1.6 进阶与提高 429
18.2 JFreeChart饼图分析IT行业 430
18.2.1 范例功能演示 430
18.2.2 开发思路指引 431
18.2.3 专家难点解析 432
18.2.4 设计过程详解 432
18.2.5 范例开发手记 433
18.2.6 进阶与提高 433
18.3 JFreeChart组合图分析学生零用钱收支情况 433
18.3.1 范例功能演示 433
18.3.2 开发思路指引 434
18.3.3 专家难点解析 435
18.3.4 设计过程详解 435
18.3.5 范例开发手记 436
18.3.6 进阶与提高 436
18.4 JasperReports生成订单表格报表 437
18.4.1 范例功能演示 437
18.4.2 开发思路指引 438
18.4.3 专家难点解析 438
18.4.4 设计过程详解 438
18.4.5 范例开发手记 440
18.4.6 进阶与提高 440
18.5 JasperReports图表报表分析Ajax框架下载量 440
18.5.1 范例功能演示 440
18.5.2 开发思路指引 441
18.5.3 专家难点解析 441
18.5.4 设计过程详解 441
18.5.5 范例开发手记 443
18.5.6 进阶与提高 443
第19章 体验完美视觉盛宴——Ajax相关 446
19.1 实时显示最新商品及报价 446
19.1.1 范例功能演示 446
19.1.2 开发思路指引 446
19.1.3 专家难点解析 447
19.1.4 设计过程详解 449
19.1.5 范例开发手记 452
19.1.6 进阶与提高 454
19.2 限时竞拍 454
19.2.1 范例功能演示 454
19.2.2 开发思路指引 455
19.2.3 专家难点解析 455
19.2.4 设计过程详解 457
19.2.5 范例开发手记 466
19.2.6 进阶与提高 467
19.3 多级联动下拉列表 467
19.3.1 范例功能演示 467
19.3.2 开发思路指引 468
19.3.3 专家难点解析 469
19.3.4 设计过程详解 470
19.3.5 范例开发手记 476
19.3.6 进阶与提高 476
19.4 仿Google Suggest自动完成 477
19.4.1 范例功能演示 477
19.4.2 开发思路指引 477
19.4.3 专家难点解析 478
19.4.4 设计过程详解 479
19.4.5 范例开发手记 483
19.4.6 进阶与提高 483
19.5 实时弹出气泡提示窗口 484
19.5.1 范例功能演示 484
19.5.2 开发思路指引 484
19.5.3 专家难点解析 485
19.5.4 设计过程详解 485
19.5.5 范例开发手记 490
19.5.6 进阶与提高 491
第20 章通讯录开发模板——讯友联系人管理模块 491
第3篇 项目实战篇 496
20.1 模块概述 496
20.1.1 开发背景 496
20.1.2 系统功能结构 496
20.1.3 系统流程 497
20.2 技术攻关 498
20.2.1 使用Hibernate持久化Java对象 498
20.2.2 Ajax异步提交 498
20.3 数据库设计 500
20.3.1 设计E-R图 500
20.3.2 数据库表设计 501
20.4 公共模块设计 501
20.4.1 Hibernate配置文件的编写 502
20.4.2 创建获取数据源的公共类 503
20.5 主页面设计 504
20.6 用户管理模块设计 505
20.6.1 用户实体类 505
20.6.2 用户注册的实现 506
22.6.3 用户登录的实现 510
20.7 讯友联系人管理模块设计 510
20.7.1 讯友类别实体类 510
20.7.2 讯友信息实体类 511
20.7.3 添加讯友类别信息 511
20.7.4 添加讯友信息 512
20.7.5 修改讯友信息 515
20.7.6 删除讯友信息 516
20.7.7 查询讯友信息 517
20.8 疑难解惑 518
20.8.1 Ajax请求的中文乱码问题 518
20.8.2 去掉弹出窗口的地址栏和状态栏 519
第21章 打造自己的视频网站——播客 522
21.1 模块概述 522
21.1.1 开发背景 522
21.1.2 系统功能结构 523
21.1.3 系统流程 524
21.2 技术攻关 526
21.2.1 连接池介绍 526
21.2.2 连接池的工作原理 526
21.2.3 使用JNDI连接数据库 528
21.3 数据库设计 529
21.3.1 设计E-R图 529
21.3.2 数据库表设计 530
21.4 公共模块设计 531
21.4.1 配置Tomcat连接池 531
21.4.2 分页的实现 533
21.5 主页面设计 536
21.5.1 前台主页设计 536
21.5.2 后台主页设计 537
21.6 前台视频浏览模块设计 538
21.6.1 定义视频信息实体类 538
21.6.2 按类别查询视频信息 539
21.6.3 视频搜索功能 541
21.6.4 视频播放功能 542
21.7 前台留言模块设计 544
21.7.1 定义留言信息的实体类 544
21.7.2 视频留言查询功能 544
21.7.3 视频留言功能 546
21.8 后台视频管理模块 547
21.8.1 视频上传功能 547
21.8.2 视频删除功能 551
21.9 疑难解惑 553
21.9.1 解析实现视频播放功能的难点 553
21.9.2 解析实现视频上传功能的难点 553
第22章 自我展示的空间——博客 556
22.1 模块概述 556
22.1.1 开发背景 556
22.1.2 系统功能结构 557
22.1.3 系统流程 558
22.2 技术攻关 559
22.2.1 Struts 2与Hibernate 3整合流程 559
22.2.2 应用JavaSrcipt对复选框进行操作 560
22.3 数据库设计 561
22.3.1 设计E-R图 561
22.3.2 数据库表设计 562
22.4 公共模块设计 564
22.4.1 Hibernate配置文件编写 564
22.4.2 数据持久化类 565
22.5 主页面设计 568
22.5.1 首页操作实现类 569
22.5.2 首页显示的实现 569
22.6 用户管理模块设计 571
22.6.1 用户实体类 571
22.6.2 用户的实现类 571
22.6.3 用户注册的实现 572
22.6.4 根据域名访问博客 575
22.6.5 推荐博客操作 576
22.7 文章模块设计 577
22.7.1 文章实体类 577
22.7.2 文章的实现类 578
22.7.3 文章类型操作 578
22.7.4 文章添加操作 580
22.7.5 文章查询操作 581
22.7.6 文章详细查询操作 583
22.7.7 推荐文章操作 583
22.8 疑难解惑 585
22.8.1 关于Struts 2的中文乱码问题 585
22.8.2 关于重写模板的问题 585
第23章 技术交流的平台——明日知道 588
23.1 模块概述 588
23.1.1 开发背景 588
23.1.2 系统功能结构 588
23.1.3 系统流程 589
23.2 技术攻关 589
23.2.1 Struts 2与Spring 2以及Hibernate 3整合流程 589
23.2.2 jQuery常用操作 590
23.3 数据库设计 591
23.3.1 设计E-R图 591
23.3.2 数据库表设计 593
23.4 公共模块设计 594
23.4.1 Spring+Hibernate组合下实现持久层 594
23.4.2 Struts 2标签实现分页 595
23.5 主页面设计 597
23.5.1 首页设计 597
23.5.2 论坛页设计 598
23.6 文章维护模块设计 600
23.6.1 添加文章 600
23.6.2 浏览文章 602
23.6.3 文章回复 603
23.6.4 修改文章 603
23.6.5 删除文章 604
23.7 文章搜索模块设计 605
23.7.1 搜索我的文章 605
23.7.2 根据关键字搜索文章 606
23.7.3 热门搜索 608
23.7.4 搜索文章作者的所有文章 609
23.7.5 搜索回复作者的所有文章 610
23.8 疑难解惑 610
23.8.1 实现文章回复的异步提交难点 610
23.8.2 系统当前位置动态设置的难点 612
第4篇 商业系统篇 618
第24章 基于SSH2的天下淘商城 618
24.1 天下淘商城概述 618
24.1.1 开发背景 618
24.1.2 需求分析 618
24.1.3 可行性分析 618
24.1.4 功能结构图 619
24.1.5 系统流程图 620
24.1.6 系统预览 621
24.2 系统整体设计 622
24.2.1 逻辑分层设计 622
24.2.2 系统文件夹组织结构 623
24.2.3 页面结构设计 624
24.2.4 开发环境 625
24.3 数据库设计 625
24.3.1 数据库概念设计 625
24.3.2 创建数据库及数据表 627
24.4 项目环境搭建 629
24.4.1 配置Struts 2 629
24.4.2 配置Hibernate 632
24.4.3 配置Spring 633
24.4.4 配置web.xml 633
24.5 公共模块的设计 634
24.5.1 Hibernate的session初始化类 635
24.5.2 泛型工具类 636
24.5.3 数据持久化类 637
24.5.4 分页操作 638
24.5.5 字符串工具类 642
24.6 实体映射 643
24.6.1 实体对象总体设计 643
24.6.2 会员信息 643
24.6.3 订单信息 644
24.6.4 订单条目信息 645
24.6.5 商品信息 646
24.6.6 商品类别信息 646
24.7 登录注册模块设计 647
24.7.1 模块概述 647
24.7.2 注册模块的实现 648
24.7.3 登录模块的实现 650
24.7.4 单元测试 652
24.8 前台商品信息查询模块设计 654
24.8.1 模块概述 654
24.8.2 商品类别分级查询的实现 654
24.8.3 商品搜索的实现 656
24.8.4 前台商品其他查询的实现 658
24.8.5 单元测试 660
24.9 购物车模块设计 662
24.9.1 模块概述 662
24.9.2 购物车基本功能的实现 663
24.9.3 订单相关功能的实现 666
24.9.4 单元测试 669
24.10 后台商品管理模块设计 670
24.10.1 模块概述 670
24.10.2 商品管理功能的实现 670
24.10.3 商品类别管理功能的实现 675
24.10.4 单元测试 678
24.11 后台订单管理模块的设计 678
24.11.1 模块概述 678
24.11.2 后台订单查询的实现 679
24.11.3 后台订单状态管理的实现 681
24.11.4 单元测试 683
24.12 系统发布 684
24.12.1 配置Tomcat服务器 684
24.12.2 配置DNS服务器 685
24.13 开发总结 691