JSP网站开发详解的目录
第1篇 基础篇
第1章 JSP开发基础 1
1.1 JSP的概念和作用 1
1.1.1 什么是JSP 1
1.1.2 JSP和Servlet扮演的角色 2
1.1.3 JSP和其他框架的集成 3
1.1.4 学习JSP网站编程 7
1.2 安装和配置JDK 8
1.2.1 安装JDK 8
1.2.2 配置JDK 11
1.3 安装和配置Tomcat 12
1.3.1 安装Tomcat服务器 13
1.3.2 测试安装是否成功 15
1.4 开发第1个JSP页面 16
1.4.1 创建Form提交表单 16
1.4.2 创建表单处理Servlet 16
1.4.3 创建JSP显示页面 17
1.4.4 部署第1个Web应用 18
1.5 小结 19
第2章 JSP 基本语法 20
2.1 JSP基础 20
2.1.1 JSP和Servlet的关系 20
2.1.2 典型的JSP文件 24
2.1.3 JSP文件组成结构 25
2.1.4 JSP的生命周期 27
2.2 JSP页面元素 28
2.2.1 页面指令元素 29
2.2.2 脚本元素 37
2.2.3 动作元素 38
2.3 JSP内建对象 45
2.3.1 输出对象out 46
2.3.2 请求对象request 47
2.3.3 响应对象response 50
2.3.4 会话对象session 52
2.3.5 页面上下文对象pageContext 55
2.3.6 全局对象application 56
2.3.7 Servlet初始化参数对象config 57
2.3.8 页面对象page 58
2.4 使用JSP实现简单登录实例 59
2.4.1创建登录HTML表单 59
2.4.2 使用Request获得数据 60
2.4.3 处理表单数据 61
2.4.4 使用Session保存用户对话 62
2.5 小结 63
第3章 Servlet 基础 64
3.1 Servlet概念 64
3.1.1 什么是Servlet 64
3.1.2 Servlet技术的特点 65
3.1.3 Servlet的生命周期 66
3.1.4 开发并部署一个简单的Servlet 68
3.2 基本Servlet结构 69
3.2.1 init方法 70
3.2.2 service方法 72
3.2.3 doGet、doPost和doXxx方法 72
3.2.4 destroy方法 75
3.3 Servlet的基本配置 77
3.3.1 Servlet的名称及路径配置 79
3.3.2 初始化参数 80
3.3.3 启动装入优先级 80
3.3.4 Servlet映射 81
3.4 Servlet请求和响应 83
3.4.1 Request实现请求 83
3.4.2 Response处理响应 90
3.5 Servlet请求转发 96
3.5.1 使用sendRedirect转发 96
3.5.2 使用Dispatch转发 98
3.5.3 Redirect和Request Dispatch的区别 104
3.6 使用Servlet改进登录实例 104
3.6.1 在Servlet中获得数据 105
3.6.2 使用Servlet将用户转向到指定页面 107
3.6.3 在Servlet中使用Session 108
3.7 小结 109
第4章 JSP和Servlet的集成 110
4.1 JSP和Servlet结合的两种模式 110
4.1.1 模式一 110
4.1.2 模式二 113
4.1.3 两种模式的比较 117
4.1.4 MVC模式 117
4.1.5 JSP和Servlet实现的MVC模式 119
4.2 使用MVC编程改进登录实例 120
4.2.1 JSP实现表现层 120
4.2.2 JavaBean模型层 121
4.2.3 Servlet控制层Control 123
4.3 小结 124
第5章 JDBC数据库访问技术 125
5.1 JDBC和驱动程序 125
5.1.1 为什么需要JDBC 126
5.1.2 数据库驱动程序 126
5.1.3 使用JDBC访问数据库的过程 127
5.2 JDBC处理数据库方法 129
5.2.1 加载并注册数据库驱动 129
5.2.2 建立到数据库的连接 130
5.2.3 访问数据库 131
5.2.4 Statement和PreparedStatement 133
5.2.5 ResultSet结果集 140
5.2.6 事务处理 142
5.3 连接不同的数据库 145
5.3.1 连接MySQL数据库 145
5.3.2 连接MSSQL数据库 146
5.3.3 连接Oracle数据库 147
5.4 存取二进制文件 147
5.4.1 二进制文件的存取过程 147
5.4.2 在数据库中存取图片 148
5.5 使用JDBC操作数据库示例 151
5.5.1 在JSP页面中查询数据 151
5.5.2 分页 155
5.5.3 增、删及改数据 161
5.6 使用JDBC改进用户登录模块 167
5.6.1 在JSP中访问数据库 167
5.6.2 在Servlet中访问数据库 169
5.6.3 在JavaBean中访问数据库 170
5.7 小结 172
第6章 JSP常用技巧 173
6.1 会话跟踪技巧 173
6.1.1 使用session的会话跟踪 174
6.1.2 使用cookie跟踪会话 176
6.2 数据共享技巧 179
6.2.1 使用Java static属性 179
6.2.2 基于session会话 181
6.2.3 基于Web范围 182
6.3 错误处理技巧 185
6.3.1 JSP错误的常见类型 185
6.3.2 定向错误到友好页面 186
6.3.3 Web.xml中的配置HTTP错误 188
6.3.4 在JSP页面中处理错误 189
6.4 JSP文件上传技巧 190
6.4.1 使用JSP SmartUpload上传 190
6.4.2 SmartUpload文件上传实例 193
6.5 在JSP中使用JavaBean 196
6.5.1 使用JavaBean的原因 196
6.5.2 JavaBean的基本概念 196
6.5.3 在JSP中使用JavaBean 198
6.5.4 访问JavaBean属性 200
6.5.5 设置JavaBean属性 201
6.6 小结 202
第7章 JSP中常见问题及其处理 203
7.1 中文乱码问题 203
7.1.1 出现中文乱码的原因 204
7.1.2 JSP显示中文乱码处理 205
7.1.3 JSP页面传递中文乱码处理 206
7.1.4 Servlet接收参数中文乱码处理 208
7.1.5 URL参数中文乱码处理 209
7.1.6 数据库中文乱码处理 210
7.2 数据库处理问题 211
7.2.1 找不到数据库驱动Driver 212
7.2.2 无法连接数据库 212
7.2.3 数据库连接线程不足的问题 213
7.2.4 数据库查询性能差的问题 215
7.3 国际化问题 219
7.3.1 在JSP中实现国际化 219
7.3.2 时间格式的国际化 222
7.3.3 语言国际化 225
7.4 JSP安全问题 227
7.4.1 防范SQL注入式攻击 227
7.4.2 JSP中使用认证授权 229
7.5 小结 235
第8章 在Eclipse中开发JSP和Servlet 236
8.1 MyEclipse的下载与安装 236
8.1.1 安装Eclipse 237
8.1.2 安装Eclipse多国语言包 237
8.1.3 下载和安装MyEclipse 238
8.1.4 绑定Tomcat服务器与My-Eclipse 241
8.1.5 在Eclipse中启动Tomcat服务器 241
8.2 在Eclipse中创建Web工程 242
8.2.1 新建工程向导 242
8.2.2 Web工程目录结构 244
8.2.3 在Eclipse中添加类库 245
8.3 新建JSP页面 247
8.3.1 使用向导新建JSP页面 247
8.3.2 在Eclipse中编辑JSP页面 249
8.3.3 添加表单Form元素 251
8.4 新建Servlet 253
8.4.1 使用向导新建Servlet 253
8.4.2 查看Web.xml 256
8.4.3 编写处理代码 256
8.5 连接数据库 257
8.5.1 添加MySQL数据库驱动程序 258
8.5.2 建立数据库表 258
8.5.3 新建连接数据库类 259
8.5.4 修改Servlet处理数据库 260
8.6 在Eclipse中调试JSP和Servlet 261
8.6.1 部署Web项目 261
8.6.2 运行JSP 263
8.6.3 在Servlet中设置断点 263
8.6.4 在JSP中设置断点 263
8.6.5 跟踪监控变量 264
8.7 小结 266
第9章 表达式语言EL 267
9.1 表达式语言概述 267
9.2 语法 268
9.2.1 [ ]和.操作符 268
9.2.2 算术运算符 269
9.2.3 关系运算符 270
9.2.4 逻辑运算符 271
9.2.5 Empty运算符 272
9.2.6 条件运算符 272
9.2.7 改变运算符的优先级 272
9.3 隐含对象 273
9.4 命名变量 278
9.5 保留字 279
9.6 表达式语法实例 279
9.7 其它功能 280
9.8 小结 281
第10章 标准标签库JSTL 282
10.1 JSTL概念 282
10.1.1 JSTL概述 283
10.1.2 安装JSTL标签库 283
10.2一般用途的标签 285
10.2.1 <c:out>标签 285
10.2.2 <c:set>标签 286
10.2.3 <c:remove>标签 288
10.2.4 <c:catch>标签 288
10.3 条件标签 291
10.3.1 <c:if>标签 291
10.3.2 <c:choose>标签 292
10.3.3 <c:when>标签 293
10.3.4 <c:otherwise>标签 293
10.4 迭代标签 294
10.4.1 <c:forEach>标签 294
10.4.2 <c:forTokens>标签 297
10.5 与URL有关的标签 299
10.5.1 <c:import>标签 299
10.5.2 <c:redirect>标签 302
10.5.3 <c:url>标签 303
10.5.4 <c:param>标签 304
10.6 函数标签 305
10.6.1 <fn:startsWith>标签 305
10.6.2 <fn:endsWith>标签 305
10.6.3 <fn:indexOf>标签 306
10.6.4 <fn:replace>标签 306
10.6.5 <fn:substring>标签 306
10.6.6 <fn:split> 306
10.7 使用标签库改进用户登录实例 307
10.8 小结 309
第11章 定义标签扩展 310
11.1 JSP标签扩展 310
11.1.1 自定义标签的原因 310
11.1.2 标签类型及结构 312
11.2 自定义标签接口 313
11.2.1 Tag接口 314
11.2.2 IteratorTag接口 315
11.2.3 BodyTag接口 316
11.2.4 SimpleTag接口 317
11.3 标签开发实例 318
11.3.1 实现Tag接口 319
11.3.2 从TagSupport继承 321
11.4 标签库配置 322
11.4.1 创建标签库描述文件 322
11.4.2 在Web中使用标签 324
11.5 小结 325
第2篇 扩展篇
第12章 基于MVC的Struts框架 326
12.1 JSP集成Struts框架 326
12.1.1 Struts体系结构 326
12.1.2 Struts的MVC模式 327
12.1.3 Struts流行的原因 329
12.1.4 在Struts中集成JSP 329
12.2 Struts核心组件 330
12.2.1 控制组件Action 330
12.2.2 模型组件 331
12.2.3 视图组件ActionForm 335
12.3 Struts HTML标签库 336
12.3.1 Struts的标签体系 336
12.3.2 HTML标签库 337
12.3.3 HTML标签 338
12.3.4 Form标签 340
12.4 Struts Bean标签库 342
12.5 Struts Logic标签库 344
12.6 Struts验证Validator框架 347
12.6.1 Validator框架 347
12.6.2 安装与配置及应用Validator框架 349
12.7 小结 351
第13章 Eclipse中开发Struts登录实例 352
13.1 MyEclipse对Struts的支持 352
13.1.1 文件创建向导支持 353
13.1.2 struts-config.xml可视化编辑器 353
13.2 在Eclipse中创建Struts工程 355
13.2.1 新建Struts工程向导 355
13.2.2 Struts项目结构 356
13.2.3 Struts类的包结构 356
13.2.4 查看web.xml和struts-config.xml文件 357
13.3 利用向导创建JSP 359
13.3.1 创建JSP页面 359
13.3.2 创建ActionForm 359
13.3.3 创建Action 362
13.3.4 创建Forward 363
13.3.5 查看Struts-config.xml文件 364
13.4 在Eclipse中编辑JSP页面 365
13.4.1 Struts标签输入支持 366
13.4.2 编写struts-config.xml文件 367
13.5 Struts验证支持 367
13.5.1 添加验证支持配置 367
13.5.2 添加页面输入验证 369
13.6 在Eclipse中调试Struts 371
13.6.1 部署Struts项目 371
13.6.2 运行入口页面 372
13.6.3 在Action中设置断点 372
13.6.4 跟踪ActionForm变量 372
13.7 小结 374
第14章 使用Hibernate实现JSP持久层 375
14.1 Hibernate ORM技术 375
14.1.1 Hibernate概念和体系结构 375
14.1.2 Hibernate数据库处理API 377
14.2 Hibernate基本配置 380
14.2.1 Hibernate的下载和安装 380
14.2.2 Hibernate开发的基本步骤 381
14.2.3 Hibernate配置文件 382
14.2.4 持久化类 382
14.2.5 对象/关系映射文件 384
14.3 Hibernate基本操作 385
14.3.1 持久化对象 385
14.3.2 查询对象 385
14.3.3 更新对象 387
14.3.4 删除对象 388
14.3.5 Hibernate基本操作实现实例 388
14.4 Hibernate对象标识符 392
14.5 Hibernate查询HQL语言 393
14.5.1 HQL语言特点 394
14.5.2 HQL查询构成 394
14.5.3 子查询 396
14.6 在JSP中使用Hibernate 396
14.6.1 使用Hibernate的JSP项目结构 396
14.6.2 在JSP中使用Hibernate访问数据库 397
14.7 小结 402
第15章 使用Spring集成JSP 403
15.1 Spring概述 403
15.1.1 控制反转IoC容器 404
15.1.2 面向方面的AOP编程 405
15.1.3 Spring如何集成JSP 407
15.2 基于Spring IoC容器开发 407
15.2.1 Spring的依赖注入 407
15.2.2 Bean封装机制 409
15.2.3 Bean的基本配置 410
15.3 Spring 集成JDBC 414
15.3.1 Spring及JDBC支持 414
15.3.2 JDBCTemplate API技术 415
15.3.3 JDBCTemplate与Template设计模式 419
15.3.4 JDBCTemplate对JDBC的改进 420
15.3.5 JDBCTemplate与数据库事务管理 422
15.3.6 在JSP中使用Spring集成JDBC 424
15.4 Spring集成Hibernate 429
15.4.1 Spring的Hibernate支持 429
15.4.2 HibernateDaoSupport支持 429
15.4.3 Hibernate SessionFactory注入 431
15.4.4 使用HibernateTemplate模板 432
15.4.5 HibernateTemplate的简捷方法 435
15.4.6 在JSP中使用Spring集成Hibernate 435
15.5 小结 440
第16章 在Eclipse中开发Hibernate和Spring 441
16.1 在Eclipse中开发Hibernate 441
16.1.1 为已有JSP项目添加Hibernate支持 442
16.1.2 Hibernate项目结构 443
16.1.3 Hibernate类包结构 444
16.1.4 hibernate.cfg.xml文件 445
16.2 创建映射文件 446
16.2.1 连接到数据库 447
16.2.2 新建Java类和映射文件 449
16.2.3 完善Java类及映射文件 450
16.3 应用DAO模式 451
16.3.1 编写业务层及其方法 451
16.3.2 编写DAO业务接口 452
16.3.3 编写DAO Hibernate实现 453
16.3.4 在JSP和Servlet中调用Hibernate 458
16.3.5 调试Hibernate应用 460
16.4 在Eclipse中开发Spring 461
16.4.1 为已有JSP项目添加Spring支持 461
16.4.2 Spring项目结构 462
16.4.3 Spring类包结构 462
16.4.4 applicationContext.xml文件 463
16.5 使用Spring ORM改进Hibernate 464
16.5.1 修改Spring配置文件 464
16.5.2 创建Hibernate sessionFactory连接 465
16.5.3 创建pojo映射 466
16.5.4 创建HibernateTemplate 467
16.6 小结 468
第3篇 实战篇
第17章 登录验证模块 469
17.1 在MySQL中建立用户信息表 469
17.1.1 确定用户字段 470
17.1.2 创建数据库和用户表 470
17.2 登录验证的建模分析 471
17.2.1 活动图 471
17.2.2 登录与注册的运行流程分析 471
17.3 创建用户数据连接缓冲池 472
17.3.1 下载与设置数据连接缓冲池类包 472
17.3.2 创建数据连接缓冲池 473
17.3.3 重载ActionServlet以应用连接缓冲池 474
17.3.4 配置web.xml应用重载的DataActionServlet 476
17.4 实现用户登录 476
17.4.1 创建登录视图组件 476
17.4.2 创建登录的控制器组件 478
17.4.3 创建模型组件 480
17.4.4 配置web.xml和struts-config.xml文件 481
17.4.5 验证用户输入数据的有效性 484
17.4.6 登录演示 485
17.5 实现新用户注册 485
17.5.1 创建注册视图组件 486
17.5.2 创建注册的控制器组件 487
17.5.3 创建模型组件 489
17.5.4 验证用户输入数据的有效性 489
17.5.5 配置web.xml和struts-config.xml文件 490
17.5.6 配置资源包属性文件 491
17.5.7 注册演示 492
17.6 小结 492
第18章 网站统计模块 493
18.1 需求分析及数据库设计 493
18.1.1 需求分析 494
18.1.2 数据库设计 494
18.2 获取统计数据 495
18.2.1 获取客户端信息 495
18.2.2 截取用户操作系统和浏览器信息 497
18.2.3 保存信息到数据库 498
18.2.4 防止重复记录 500
18.3 显示网站访问计数器 502
18.3.1 显示当前在线人数计数器 502
18.3.2 显示网站访问量计数器 503
18.3.3 使用图片样式显示计数器 504
18.4 生成统计分析结果 505
18.4.1 使用SQL命令统计分析 505
18.4.2 JFreeChart简介 507
18.4.3 生成日流量统计折线图 509
18.4.4 生成月流量统计柱状图 513
18.4.5 生成访问时段分布统计柱状图 516
18.4.6 生成浏览器类型统计饼状图 518
18.4.7 生成操作系统类型统计立体饼状图 520
18.5 小结 523
第19章 邮件收发模块 524
19.1 邮件相关协议简介 524
19.2 JavaMail简介 525
19.2.1 配置JavaMail开发环境 526
19.2.2 JavaMail邮件处理过程 526
19.2.3 JavaMail常用类 526
19.2.4 一个简单的邮件发送程序 529
19.3 发送HTML格式的邮件 531
19.3.1 撰写邮件页面 531
19.3.2 邮件发送Servlet 532
19.3.3 配置web.xml文件及运行 534
19.3.4 处理主题与正文中的乱码问题 535
19.4 发送带附件的邮件 536
19.4.1 发送本地文件形式的附件 537
19.4.2 发送远程文件形式的附件 537
19.5 实现邮件接收 538
19.5.1 接收邮件的一般过程 538
19.5.2 一个简单的邮件接收Servlet程序 539
19.6 小结 541
第20章 网页搜索模块 542
20.1 搜索引擎概述 542
20.1.1 搜索引擎分类 543
20.1.2 搜索引擎的实现原理 545
20.1.3 搜索引擎的相关技术 546
20.2 用第三方API实现站内搜索 547
20.2.1 使用Google API 547
20.2.2 使用百度API 548
20.3 基于Java的全文搜索引擎Lucene 549
20.3.1 Lucene概述 550
20.3.2 搜索应用程序与Lucene之间的关系 550
20.3.3 Lucene类包简介 551
20.3.4 建立索引 551
20.3.5 搜索索引 554
20.4 构建Lucene Web搜索程序 556
20.4.1 搜索程序的工作流程 556
20.4.2 建立搜索页面 557
20.4.3 建立搜索控制Servlet 558
20.4.4 创建索引 559
20.4.5 搜索索引 561
20.4.6 运行程序 564
20.5 小结 565
第21章 上传和下载模块 566
21.1 上传和下载简介 566
21.2 一个简单的文件下载程序 566
21.3 通过Servlet实现文件上传 568
21.3.1 建立文件上传表单 568
21.3.2 利用Servlet实现文件上传 569
21.3.3 配置web.xml并运行 570
21.4 使用FileUpload组件上传文件 571
21.4.1 FileUpload上传处理过程 571
21.4.2 一个简单的文件上传实例 573
21.4.3 配置web.xml并运行 576
21.4.4 查看上传进度 577
21.5 小结 578
第22章 新闻发布系统 579
22.1 系统分析与总体设计 579
22.1.1 需求分析 580
22.1.2 总体设计 580
22.2 数据库设计与实现 581
22.2.1 数据库需求分析 581
22.2.2 数据库逻辑设计 582
22.2.3 创建数据表 583
22.3 编写数据库处理类 585
22.4 编写JavaBean实现 587
22.4.1 处理管理员数据JavaBean 587
22.4.2 处理一级栏目数据JavaBean 588
22.4.3 处理二级栏目数据JavaBean 588
22.4.4 处理新闻数据JavaBean 589
22.5 设计后台页面与功能实现 590
22.5.1 实现管理员登录 591
22.5.2 实现一级栏目的功能 597
22.5.3 实现二级栏目的功能 604
22.5.4 实现栏目下的相关新闻功能 607
22.5.5 后台管理主页面集成 614
22.5.6 演示后台功能 619
22.6 前台页面设计与功能实现 624
22.6.1 主页面设计与功能实现 624
22.6.2 新闻显示页面设计与功能实现 626
22.7 小结 627
第23章 在线相册系统 628
23.1 系统分析与总体设计 628
23.1.1 系统功能描述 628
23.1.2 选择平台与架构 629
23.2 数据库设计与实现 629
23.2.1 数据库需求分析 629
23.3 实现DAO层 631
23.3.1 DAO组件的定义 632
23.3.2 实现DAO组件 633
23.4 实现Web层 651
23.4.1 相册管理 651
23.4.2 相册列表 655
23.4.3 上传相片 659
23.4.4 查看相片 664
23.4.5 管理相片 667
23.5 小结 667
第24章 在线购物系统 668
24.1 系统分析与总体设计 668
24.2 数据库设计与实现 669
24.2.1 数据库需求分析 669
24.2.2 数据库逻辑设计 670
24.3 设计与搭建架构 673
24.3.1 设计视图层 674
24.3.2 设计控制层 674
24.3.3 设计对象模型 676
24.3.4 设计数据访问层 678
24.4 在线购物页面 682
24.4.1 实现购书主页 682
24.4.2 实现二级分类页 685
24.4.3 实现图书详细页 686
24.5 商品查询 687
24.5.1 实现表示层 687
24.5.2 实现业务逻辑 688
24.5.3 实现数据访问层 689
24.6 管理购物车 689
24.6.1 添加商品到购物车 690
24.6.2 更新图书数量 696
24.6.3 取消购物车中的商品 699
24.7 生成订单导航页面 700
24.7.1 确认收货及定货地址 701
24.7.2 选择送货时间及运费 706
24.7.3 选择包装类型及费用 708
24.7.4 选择付款方式 709
24.7.5 选择缺货处理及余款处理方式 709
24.7.6 确认订单 711
24.7.7 成功生成订单 715
24.8 小结 717