第一篇 基础篇 2
第1章 浅谈JSP 2
1.1 JSP发展背景 2
1.1.1 传统Web服务模式的不足 2
1.1.2 动态Web技术的出现 2
1.1.3 JSP的出现 3
1.2 JSP简介 3
1.2.1 访问Web网站的过程 3
1.2.2 JSP的运行原理 4
1.2.3 JSP的优点 5
1.3 JSP用到的一些技术 6
1.3.1 JavaScript 6
1.3.2 CSS 6
1.3.3 Java Applet 6
1.3.4 Ajax 7
1.3.5 jQuery 7
1.4 所需工具安装和配置 7
1.4.1 JDK的安装 7
1.4.2 配置JDK的环境变量 8
1.4.3 Tomcat的安装 9
1.5 第1个JSP例子 10
1.5.1 JSP文件的编写 10
1.5.2 部署Tomcat服务器 12
1.5.3 访问JSP页面 14
1.6 本章小结 14
第2章 HTML语言 15
2.1 HTML简介 15
2.2 HTML中标签的使用 15
2.2.1 h系列标签 15
2.2.2 〈p〉标签、〈br〉标签和〈hr〉标签 16
2.2.3 〈table〉标签 16
2.2.4 〈select〉标签 17
2.2.5 〈input〉标签 18
2.2.6 〈div〉标签 19
2.2.7 〈form〉标签 20
2.2.8 〈textarea〉标签 21
2.3 本章小结 22
第3章 JSP的基本语法 23
3.1 JSP的指令 23
3.1.1 page指令 24
3.1.2 include指令 26
3.1.3 taglib指令 28
3.2 JSP动作元素 29
3.2.1 使用JavaBean实例:useBean动作元素 29
3.2.2 设置JavaBean属性值:setProperty动作元素 31
3.2.3 获取JavaBean属性值:getProperty动作元素 33
3.2.4 动态包含页面:include动作元素 35
3.2.5 请求的转移:forward动作元素 38
3.2.6 指定插件属性:plugin动作元素 39
3.2.7 传递参数:param动作元素 40
3.3 JSP中的脚本元素 41
3.3.1 Java小程序段 42
3.3.2 JSP表达式 43
3.3.3 声明 44
3.4 JSP中注释的使用 45
3.5 JSP中常用的语句 46
3.5.1 if语句在JSP中的应用 47
3.5.2 for循环在JSP中的应用 48
3.5.3 while循环在JSP中的应用 50
3.5.4 return语句在JSP中的应用 51
3.5.5 break语句在JSP中的应用 52
3.6 本章小结 53
第4章 JSP中的对象 54
4.1 在客户端页面输出信息:out对象 54
4.2 处理客户请求信息:request对象 56
4.2.1 什么是request对象 56
4.2.2 访问客户端请求中的参数 57
4.2.3 访问客户端请求中的国际化信息 60
4.2.4 访问客户端请求中的请求报头 61
4.2.5 访问客户端请求中的安全信息 63
4.2.6 获取客户端Cookie信息 64
4.2.7 管理请求中的属性 65
4.2.8 请求转发 67
4.2.9 其他方法 68
4.3 控制服务器的响应信息:response对象 70
4.3.1 什么是response对象 70
4.3.2 资源重定向 71
4.3.3 资源重定向sendRedirect()和请求转发〈jsp:forword〉比较 73
4.3.4 向客户端添加Cookie 73
4.3.5 getOutputStream()方法下载文件 75
4.3.6 setHeader()方法设置JSP文件报头 75
4.4 处理Servlet配置信息:config对象 77
4.4.1 config对象中的方法 77
4.4.2 config对象的使用 78
4.5 管理用户会话信息:session对象 79
4.5.1 session对象中的方法 79
4.5.2 使用session对象存取数据 79
4.5.3 getAttributeNames()的用法 82
4.6 应用程序的全局对象:application对象 84
4.6.1 什么是application对象 84
4.6.2 设置和读取全局变量 84
4.6.3 获取应用程序初始化信息 88
4.6.4 RequestDispatcher方法 89
4.6.5 application对象中的其他方法 92
4.7 引用当前页面:page对象 93
4.8 本章小结 93
第5章 Servlet技术 94
5.1 什么是Servlet 94
5.1.1 Servlet的优点 95
5.1.2 Servlet的工作流程 95
5.1.3 Servlet接口 96
5.1.4 Web工程的结构 96
5.2 一个简单的Servlet例子 97
5.2.1 编写Servlet 97
5.2.2 发布Servlet 99
5.3 Servlet的生命周期 100
5.3.1 加载Servlet:由Servlet容器完成 101
5.3.2 初始化Servlet方法:init()方法 103
5.3.3 处理请求的方法:service()方法 106
5.3.4 销毁Servlet:destroy()方法 111
5.4 Servlet之间的跳转 111
5.4.1 请求转发 111
5.4.2 URL重定向 114
5.5 解决中文乱码问题 116
5.5.1 字符集介绍 116
5.5.2 出现中文乱码原因 117
5.5.3 中文乱码解决方案 117
5.6 Servlet中的线程安全问题 118
5.6.1 Servlet线程不安全例子 118
5.6.2 解决Servlet线程不安全办法 120
5.7 本章小结 121
第6章 JSP技术结合JavaBeans应用 122
6.1 什么是JavaBeans 122
6.1.1 JavaBeans的含义 122
6.1.2 JavaBeans和EJB的比较 123
6.2 JavaBeans规范 123
6.2.1 JavaBeans的构造方法 123
6.2.2 JavaBeans中的属性 123
6.3 使用JavaBeans 125
6.3.1 创建JavaBeans 126
6.3.2 调用JavaBeans 126
6.4 JavaBeans的应用 128
6.4.1 在JSP中使用JavaBeans 128
6.4.2 在当前页面有效:page 132
6.4.3 在请求内有效:request 133
6.4.4 在会话域内有效:session 135
6.4.5 在应用程序内有效:application 136
6.4.6 综合使用JavaBeans的不同有效范围 138
6.5 JavaBeans在实际开发中的应用 139
6.6 本章小结 142
第7章 JSP文件操作 143
7.1 Java文件操作简介 143
7.1.1 文件类 143
7.1.2 字节输入流 148
7.1.3 字节输出流 150
7.1.4 字符输入输出流 152
7.2 使用JSP读写文件 154
7.2.1 编写操作文件的JavaBeans类 155
7.2.2 编写JSP文件 157
7.2.3 发布和运行该Web工程 158
7.3 本章小结 159
第8章 JSP的会话管理 160
8.1 Cookie机制管理会话 160
8.1.1 Cookie简介 160
8.1.2 使用Cookie记录用户访问次数 161
8.1.3 保存中文的方式:Unicode编码 165
8.1.4 保存二进制图片:BASE64编码 167
8.1.5 Cookie不可跨域名使用 167
8.1.6 Cookie的所有属性 167
8.1.7 修改和删除Cookie 170
8.1.8 设置Cookie的有效期 171
8.1.9 设置安全属性 172
8.1.10 Cookie的访问路径 172
8.1.11 设置Cookie的域名 172
8.1.12 使用Cookie设置登录有效期 173
8.2 Session机制管理会话 176
8.2.1 Session简介 176
8.2.2 使用Cookie跟踪Session 177
8.2.3 使用URL重写跟踪Session 180
8.2.4 Session中设置禁止使用Cookie 181
8.2.5 关于Session的生命周期 182
8.2.6 关于Session的有效期 182
8.2.7 Session常用方法介绍 182
8.2.8 Session和浏览器的关系 183
8.3 在Tomcat中配置Session 183
8.3.1 配置单个Web应用的Session 184
8.3.2 配置所有的Web应用的Session 185
8.4 比较Session机制与Cookie机制 185
8.4.1 存取方式 186
8.4.2 有效期 186
8.4.3 隐私安全 186
8.4.4 浏览器的支持 186
8.4.5 对服务器的负担 187
8.4.6 跨域名访问 187
8.5 使用Tomcat实现会话持久化 187
8.5.1 StandardManager实现类 188
8.5.2 PersistentManager实现类 188
8.5.3 使用FileStore 189
8.5.4 使用JDBCStore 190
8.6 本章小结 191
第9章 JSP中的过滤器 192
9.1 过滤器概述 192
9.1.1 过滤器简介 192
9.1.2 Filter接口中的方法 193
9.1.3 配置过滤器 194
9.2 过滤器的例子 195
9.2.1 过滤器处理页面中文乱码 195
9.2.2 使用过滤器处理日志记录 197
9.2.3 防盗链过滤器 199
9.2.4 使用过滤器捕获异常 201
9.2.5 使用过滤器处理缓存 205
9.2.6 使用过滤器验证权限 211
9.2.7 使用过滤器处理文件上传 214
9.2.8 使用过滤器在图片中打上水印 218
9.3 本章小结 222
第10章 JSP中的监听器 223
10.1 监听器概述 223
10.1.1 什么是JSP的监听器 223
10.1.2 监听器的使用 223
10.2 监听器的监听动作 224
10.2.1 对Servlet上下文进行监听 224
10.2.2 HttpSession监听器 227
10.2.3 监听客户端请求 230
10.2.4 监听Session会话 232
10.3 本章小结 234
第11章 JSP2.0技术 235
11.1 JSP2.0的表达式语言 235
11.2 JSP2.0中的新指令 238
11.2.1 〈jsp:fallback〉:提示错误信息 238
11.2.2 〈jsp:param〉:提供参数 238
11.2.3 〈jsp:element〉:定义XML元素 239
11.2.4 〈jsp:attribute〉:定义属性 240
11.2.5 〈jsp:body〉:定义元素体 241
11.2.6 〈jsp:doBody〉:求标签体内容值 241
11.2.7 〈jsp:invoke〉:调用标签片段 241
11.2.8 〈jsp:output〉:元素指定文件类型声明 242
11.2.9 〈jsp:root〉:定义标签库标准元素和命名空间 242
11.2.10 〈jsp:text〉:封装模板数据 243
11.3 JSP2.0的简单标签扩展 243
11.3.1 SimpleTag接口 243
11.3.2 标签文件 246
11.4 本章小结 246
第二篇 高级应用篇 248
第12章 JSTL标签库 248
12.1 JSTL标签库概述 248
12.1.1 什么是JSTL标签库 248
12.1.2 使用JSTL标签的原因 249
12.2 JSTL的核心标签库:core标签库 249
12.2.1 用于输出的〈c:out〉标签 250
12.2.2 用于判断的〈c:if〉标签 251
12.2.3 〈c:choose〉、〈c:when〉和〈c:otherwise〉标签 252
12.2.4 用于循环遍历的〈c:forEach〉标签 253
12.2.5 用于遍历的〈c:forTokens〉标签 261
12.2.6 〈c:set〉标签 262
12.2.7 〈c:remove〉标签 263
12.2.8 用于捕捉异常的〈c:catch〉标签 264
12.2.9 使用〈c:import〉标签导入资源 265
12.2.10 〈c:url〉标签 266
12.2.11 用于重定向的〈c:redirect〉标签 266
12.2.12 传递参数的〈c:param〉标签 267
12.3 fmt标签库 267
12.3.1 使用〈fmt:requestEncoding〉标签设置编码 267
12.3.2 本地化标签〈fmt:setLocale〉 268
12.3.3 时区标签〈fmt:timeZone〉 270
12.3.4 设置时区的〈fmt:setTimeZone〉标签 271
12.3.5 用于资源国际化的相关标签 272
12.3.6 设置资源信息的〈fmt:setBundle〉标签 274
12.3.7 〈fmt:formatNumber〉标签用于输出数据格式 274
12.3.8 用于解析数字的〈fmt:parseNumber〉标签 276
12.3.9 〈fmt:formatDate〉标签用于格式化日期 277
12.3.10 用来解析日期的〈fmt:parseDate〉标签 277
12.4 EL表达式语言 278
12.4.1 EL表达式的隐式对象 278
12.4.2 EL表达式的运算符 279
12.5 fn方法库 281
12.5.1 fn:indexOf()方法:查找字符串 281
12.5.2 fn:split()方法:分割字符串 282
12.5.3 fn:endsWith()方法:显示文件格式 283
12.6 本章小结 284
第13章 JSP自定义标签 285
13.1 JSP自定义标签的开发过程 285
13.1.1 编写标签处理类 285
13.1.2 编写标签库描述文件 286
13.1.3 在web.xml中配置自定义标签 287
13.1.4 JSP文件调用标签 288
13.1.5 把Web应用发布到服务器中 288
13.2 JSP自定义标签实例 288
13.2.1 编写Java类CustomTag 288
13.2.2 编写customtag.tld文件 290
13.2.3 在web.xml中配置customtag.tld文件信息 291
13.2.4 编写jsp_custom.jsp文件 291
13.2.5 发布工程jsp_customtag并访问jsp_custom.jsp页面 292
13.3 开发嵌套的自定义标签 292
13.3.1 编写父标签类Parent_tag 292
13.3.2 编写子标签类Son_tag 295
13.3.3 编写taglib.tld文件 295
13.3.4 在web.xml中配置taglib.tld文件 297
13.3.5 编写nest_tags.jsp文件使用自定义标签 297
13.3.6 发布nest_tag工程并访问nest_tags.jsp页面 298
13.4 本章小结 298
第14章 数据库概述 299
14.1 数据库应用 299
14.1.1 数据库模型 299
14.1.2 SQL、DDL与DML 300
14.2 MySQL数据库 300
14.2.1 安装和配置MySQL数据库 300
14.2.2 启动和登录MySQL 301
14.2.3 MySQL的bin目录下的程序 302
14.3 SQL语言 302
14.3.1 SQL语言简介 302
14.3.2 列出数据库信息的SQL语句 303
14.3.3 使用SQL语句切换数据库模式 304
14.3.4 列出数据表的SQL语句 304
14.3.5 查看表结构的SQL语句 304
14.3.6 创建数据库模式的SQL语句 305
14.3.7 删除数据库模式的SQL语句 305
14.3.8 修改数据库模式的SQL语句 305
14.3.9 使用SQL语句创建表 306
14.3.10 使用SQL语句删除表 306
14.3.11 使用SQL语句修改表 307
14.3.12 insert语句:插入数据 307
14.3.13 select语句:查询数据 308
14.3.14 update语句:修改数据 310
14.3.15 创建、授权和删除用户的SQL语句 311
14.3.16 批量执行SQL语句 311
14.4 MySQL客户端 312
14.4.1 安装MySQL-Front 312
14.4.2 创建数据库实例 313
14.4.3 创建数据库 314
14.4.4 新建数据库表 314
14.5 本章小结 315
第15章 JDBC技术 316
15.1 JDBC概述 316
15.1.1 什么是JDBC 316
15.1.2 JDBC和数据库数据类型的转化 317
15.1.3 JDBC API概述 317
15.1.4 连接数据库 318
15.1.5 连接对象Connection 320
15.1.6 Statement对象 320
15.1.7 PreparedStatement对象 321
15.1.8 结果集ResultSet 323
15.2 JDBC技术的使用 323
15.2.1 创建数据库表 324
15.2.2 表users对应的实体类 324
15.2.3 创建数据库连接 325
15.2.4 添加数据 327
15.2.5 查询表中的全部数据 329
15.2.6 根据id查询表中数据 330
15.2.7 根据id删除表中的数据 332
15.2.8 修改表中的数据 333
15.3 本章小结 334
第16章 综合使用JSP和JDBC 335
16.1 添加数据到表中 335
16.1.1 创建Web工程和创建表 335
16.1.2 创建表对应的实体类 336
16.1.3 创建添加数据的JSP页面 336
16.1.4 编写添加数据的Servlet 337
16.1.5 编写添加数据的实现类 339
16.1.6 创建数据库连接 340
16.1.7 编写处理中文乱码的过滤器 341
16.1.8 发布和访问Web工程 342
16.2 JSP页面显示表中的全部数据 343
16.2.1 创建显示数据的JSP文件 343
16.2.2 编写查询数据的Servlet 344
16.2.3 编写查询实现类 345
16.2.4 访问查询数据的Servlet 346
16.3 修改表中的数据 346
16.3.1 编写根据id查询的Servlet 347
16.3.2 编写根据id查询的实现类 348
16.3.3 编写修改页面文件 349
16.3.4 编写修改数据的Servlet 349
16.3.5 编写修改实现类 351
16.3.6 访问页面并修改数据 352
16.4 删除表中的数据 352
16.4.1 编写删除数据的Servlet 352
16.4.2 编写删除实现类 354
16.4.3 访问页面并删除数据 354
16.5 分页显示数据 354
16.5.1 编写分页显示的实现类 355
16.5.2 编写分页查询的Servlet 356
16.5.3 编写分页显示的JSP页面 358
16.5.4 访问页面 359
16.6 本章小结 359
第17章 综合使用JSP和XML 360
17.1 XML的概述 360
17.1.1 XML的含义 360
17.1.2 XML的格式 361
17.1.3 XML的基本结构 362
17.1.4 XML中常用的转义字符 363
17.2 解析XML 364
17.2.1 使用DOM解析XML 364
17.2.2 使用SAX解析XML 367
17.3 使用JSP解析XML 370
17.3.1 JSP解析XML的基本步骤 370
17.3.2 XML与Java的映射 371
17.3.3 Document的Node节点 371
17.3.4 Element的Node节点 372
17.3.5 Attribute的Node节点 372
17.3.6 Text的Node节点 372
17.3.7 使用JSP操作XML的例子 373
17.4 本章小结 383
第三篇 实战篇 386
第18章 汽车租赁系统 386
18.1 需求分析 386
18.1.1 任务概述 386
18.1.2 开发环境和使用技术 386
18.1.3 数据库设计 386
18.2 登录模块 390
18.2.1 服务人员登录 390
18.2.2 管理员登录 390
18.2.3 防止未登录非法访问 391
18.3 公共模块 391
18.3.1 数据库连接 391
18.3.2 中文乱码过滤器 393
18.4 用户管理模块 393
18.4.1 添加用户 394
18.4.2 显示全部用户 398
18.4.3 修改用户 402
18.4.4 删除用户信息 407
18.4.5 显示单个用户的详细信息 409
18.5 汽车管理模块 411
18.5.1 新增汽车 411
18.5.2 查看全部汽车信息 415
18.5.3 查看单个汽车详细信息 420
18.5.4 修改汽车信息 423
18.5.5 删除单个汽车信息 427
18.6 客户管理模块 428
18.6.1 添加客户信息 428
18.6.2 查看全部客户信息 429
18.6.3 查看单个客户详细信息 429
18.6.4 修改客户信息 430
18.6.5 删除客户信息 431
18.7 业务管理模块 431
18.7.1 汽车出租 431
18.7.2 汽车入库 431
18.7.3 出租单管理 432
18.7.4 检查单管理 433
18.8 业务统计模块 434
18.9 本章小结 435