第一篇 JSP基础知识 2
第1章 JSP技术概述 2
1.1 Web开发技术 2
1.1.1 Web开发技术的历史 2
1.1.2 主流Web开发技术对比 3
1.1.3 JSP技术的发展趋势 7
1.2 JSP技术原理 8
1.3 如何成为一名优秀的JSP开发人员 10
1.3.1 基本技能 11
1.3.2 高级技术 12
1.4 小结 14
第2章 配置开发环境 16
2.1 Tomcat的安装与配置 16
2.1.1 Tomcat的安装 16
2.1.2 Tomcat的配置与管理 18
2.2 WebLogicServer的安装与配置 22
2.2.1 安装BEAWebLogicServer 22
2.2.2 配置开发域及服务器 25
2.2.3 WebLogicServer的启动与停止 31
2.3 MySQL数据库的安装与使用 32
2.3.1 MySQL简介 32
2.3.2 MySQL的安装与管理 33
2.3.3 MySQL的常用操作 34
2.3.4 MySQL的JDBC开发 36
2.4 小结 37
第二篇 JSP核心技术 40
第3章 Servlet技术 40
3.1 Servlet介绍 40
3.1.1 什么是Servlet 40
3.1.2 Servlet的技术特点 40
3.1.3 Servlet的生命周期 41
3.1.4 开发一个简单的Servlet 42
3.2 Servlet编程接口 44
3.2.1 Servlet类接口的分类 44
3.2.2 与Servlet实现相关 44
3.2.3 与Servlet配置相关 45
3.2.4 与Servlet异常相关 46
3.2.5 与请求和响应相关 46
3.2.6 会话跟踪 47
3.2.7 与Servlet上下文相关 48
3.2.8 Servlet协作相关 49
3.2.9 过滤 49
3.3 使用HttpServlet处理客户端请求 50
3.4 获得Servlet的初始化参数 53
3.5 Servlet的配置 55
3.5.1 实例介绍 55
3.5.2 Servlet的名字、类和初始化参数 58
3.5.3 启动装入优先级 58
3.5.4 Servlet的映射 59
3.6 Servlet之间的共享信息 59
3.7 小结 60
第4章 JSP基本语法 61
4.1 JSP的构成 61
4.1.1 一个典型的JSP文件 61
4.1.2 分析JSP文件中的元素 62
4.2 指令元素 65
4.2.1 页面指令 66
4.2.2 include指令 67
4.2.3 taglib指令 68
4.2.4 表达式语言 69
4.3 脚本元素 69
4.3.1 声明(Declaration) 69
4.3.2 表达式(Expression) 70
4.3.3 Scriptlet 70
4.4 动作元素 72
4.4.1 <jsp:param> 73
4.4.2 <jsp:include> 73
4.4.3 <jsp:forward> 75
4.4.4 <jsp:useBean> 77
4.4.5 <jsp:setProperty> 77
4.4.6 <jsp:getProperty> 79
4.4.7 <jsp:plugin> 79
4.4.8 <jsp:fallback> 83
4.5 小结 84
第5章 JSP内建对象 85
5.1 内建对象介绍 85
5.2 输入输出控制对象 86
5.2.1 out对象 86
5.2.2 request对象 88
5.2.3 response对象 90
5.3 作用域对象 91
5.3.1 作用域对象简介 91
5.3.2 page对象 93
5.3.3 pageContext对象 93
5.3.4 session对象 95
5.3.5 application对象 97
5.4 流转控制对象 99
5.5 异常处理对象 99
5.6 初始化参数对象 101
5.7 小结 102
第6章 使用JavaBean 103
6.1 JavaBean简介 103
6.1.1 JavaBean的组成 103
6.1.2 JavaBean的属性 104
6.2 在JSP中使用JavaBean 107
6.2.1 使用<useBean>动作 107
6.2.2 使用<setProperty>和<getProperty>动作 111
6.3 小结 116
第7章 保持客户端状态 117
7.1 使用会话保持客户端状态 117
7.1.1 会话的实现原理 117
7.1.2 HttpSession接口 119
7.1.3 会话与浏览器的关系 120
7.2 使用session对象 120
7.2.1 什么是session对象 120
7.2.2 如何使用URL重写 122
7.2.3 会话使用实例 123
7.3 会话管理 129
7.4 小结 130
第8章 Servlet的高级开发 131
8.1 Servlet过滤器 131
8.1.1 Servlet过滤器的基本原理 131
8.1.2 Servlet过滤器开发实例 132
8.2 Servlet事件监听 135
8.2.1 对Servlet上下文进行监听 135
8.2.2 监听Http会话 137
8.2.3 对请求监听 140
8.3 JSP与Servlet的结合使用 142
8.3.1 模式一 142
8.3.2 模式二 143
8.4 小结 150
第三篇 常用组件 152
第9章 文件的上传和下载组件 152
9.1 jspSmartUpload组件 152
9.1.1 jspSmartUpload组件的安装与配置 152
9.1.2 jspSmartUpload组件的主要对象 153
9.1.3 jspSmartUpload组件实例分析 158
9.2 FileUpload组件 165
9.2.1 实例1(组件的基本用法) 166
9.2.2 实例2(上传文件至服务器) 168
9.2.3 实例3(对上传文件进行限制) 169
9.3 小结 170
第10章 JFreeChart组件 171
10.1 JFreeChart组件介绍 171
10.2 使用JFreeChart绘制图表 173
10.2.1 在JSP中绘制图表 174
10.2.2 在Servlet中绘制图表 181
10.3 小结 182
第11章 日志组件 183
11.1 Log4j的配置与使用 183
11.1.1 Log4j简介 183
11.1.2 Loggers 184
11.1.3 Appenders 185
11.1.4 Layouts 186
11.1.5 Logger组件的继承性 187
11.1.6 使用Log4j 187
11.2 使用Apache通用日志组件 189
11.2.1 Apache通用日志包简介 190
11.2.2 CommonsLogging使用实例 192
11.3 小结 193
第四篇 标签与表达式 196
第12章 自定义标签的开发 196
12.1 自定义标签库的体系结构 196
12.1.1 什么是自定义标签库 196
12.1.2 使用自定义标签的好处 199
12.2 自定义标签开发实例 199
12.2.1 自定义标签——Date 199
12.2.2 定义有属性的标签——info 202
12.2.3 定义带标签体的标签——loop 205
12.2.4 嵌套的标签mapDefine、mapEntry 208
12.3 JSP2.0的新特性——简单标签处理程序 211
12.3.1 简单标签库简介 211
12.3.2 简单标签处理程序的生命周期 212
12.3.3 简单标签实例 212
12.3.4 标签文件 214
12.4 小结 215
第13章 JSTL 216
13.1 JSTL简介 216
13.2 核心标签库 218
13.2.1 表达式操作标签库 218
13.2.2 流程控制标签 225
13.3 XML标签库 237
13.3.1 XPath简介 237
13.3.2 XML的核心动作标签 239
13.3.3 XML的流程控制动作 245
13.4 小结 248
第14章 表达式语言 249
14.1 表达式语言简介 249
14.2 表达式语言变量 250
14.3 自动转变类型 252
14.4 表达式语言中的隐含对象 253
14.4.1 属性(Attribute)与范围(Scope) 254
14.4.2 与输入有关的隐含对象 255
14.4.3 其他隐含对象 257
14.5 表达式语言的算术运算符 259
14.6 EL关系运算符 262
14.7 其他运算符 266
14.7.1 Empty运算符 266
14.7.2 条件运算符与括号运算符 267
14.8 小结 267
第五篇 开发框架 270
第15章 Struts框架 270
15.1 Struts框架的基本原理 270
15.2 Struts开发实例 280
15.2.1 Struts初级实例 280
15.2.2 Struts中级实例 291
15.2.3 Struts高级实例 302
15.3 小结 315
第16章 Spring框架 316
16.1 Spring框架简介 316
16.1.1 Spring的特性 316
16.1.2 Spring模块 317
16.2 SpringMVC框架的基本原理 319
16.3 SpringMVC框架开发实例 320
16.3.1 SpringMVC实例——springappl 320
16.3.2 SpringMVC综合实例——SpringApp 324
16.3 小结 329
第六篇 开发实践 332
第17章 数据库应用开发 332
17.1 JDBC编程接口 332
17.1.1 JDBC简介 332
17.1.2 JDBC的工作方式 333
17.1.3 JDBC驱动程序 333
17.1.4 JDBC的主要对象 335
17.1.5 JDBC开发的基本步骤 338
17.1.6 执行SQL语句 339
17.1.7 处理结果集 341
17.1.8 关闭连接 341
17.2 使用数据库连接池 342
17.2.1 连接池的工作原理 342
17.2.2 配置连接池 343
17.2.3 使用数据源获得连接 350
17.2.4 使用连接池的Web应用实例 351
17.3 数据分页显示 354
17.4 小结 362
第18章 Web安全性 363
18.1 为Web资源设置安全约束 363
18.1.1 定义<security-constraint>元素 364
18.1.2 在web.xml中定义<security-role>元素 364
18.1.3 在web.xml中定义<login-config>元素 365
18.2 Tomcat下的安全域 366
18.3 WebLogicServer下的安全域 368
18.4 JSP应用安全性漏洞及对策 370
18.4.1 跨站脚本(cross-sitescripting) 370
18.4.2 HTML注射 372
18.4.3 SQL注射 373
18.4.4 使用JavaBean带来的问题 374
18.5 小结 375
第19章 Web系统测试 376
19.1 Web系统测试的基本理论 376
19.1.1 功能测试 376
19.1.2 性能测试 377
19.1.3 单元测试 378
19.1.4 其他测试 379
19.1.5 常用的测试工具 379
19.2 使用JUnit进行单元测试 381
19.3 使用JMeter测试性能 384
19.3.1 JMeter的特性 384
19.3.2 JMeter的安装与配置 385
19.3.3 建立测试计划(TestPlan) 386
19.3.4 开始执行测试计划 389
19.3.5 数据库性能测试 389
19.3.6 JNEstore的性能测试 390
19.4 小结 394
第20章 JSP性能优化 395
20.1 JSP性能优化 395
20.1.1 使用jspInit()方法 395
20.1.2 优化输出操作 397
20.1.3 控制session对象 398
20.1.4 在useBean动作中使用合适的范围 399
20.1.5 采用forward()方法重定向 399
20.1.6 选择正确的包含方式 400
20.2 使用缓存工具 400
20.2.1 OSCache的安装与配置 401
20.2.2 使用OSCache缓存 401
20.3 小结 404
第七篇 综合实例 406
第21章 需求分析及技术方案 406
21.1 业务背景介绍 406
21.2 需求分析 407
21.3 架构设计 408
21.4 JNEstore的功能演示 410
21.5 小结 412
第22章 基于Struts的Web层开发 413
22.1 定义JNEstore的配置文件 413
22.2 建立应用程序初始页面 415
22.3 建立显示图书的功能模块 417
22.4 建立用户登录功能模块 421
22.5 建立新用户注册功能模块 424
22.6 建立购物车管理功能模块 428
22.7 建立订单处理功能模块 431
22.8 建立退出应用程序功能模块 433
22.9 建立图书查找功能模块 433
22.10 应用程序国际化 435
22.11 小结 436
第23章 业务层开发 437
23.1 JNEstore的持久层解决23.1方案 437
23.1.1 Java持久层常用技术对比分析 437
23.1.2 JNEstore的持久层解决方案 439
23.2 使用Hibernate实现持久化 440
23.2.1 Hibernate简介 441
23.2.2 Hibernate开发的基本技术 441
23.2.3 Hibernate开发的高级技术 472
23.2.4 实现JNEstore的持久层 475
23.3 小结 489