第1篇 Java语言基础 3
第1章 Java开发基础 3
1.1 什么是Java 3
1.1.1 Java语言的产生 3
1.1.2 Java平台 4
1.2 Java语言的特点 4
1.3 Java与其他面向对象语言的区别 7
1.3.1 Java与C++的区别 7
1.3.2 Java与C#的区别 7
1.4 Java语言的发展前景 8
1.5 搭建开发环境 9
1.5.1 下载和安装JDK 9
1.5.2 获取帮助文档 11
1.5.3 设置Path环境变量 12
1.5.4 设置C1assPath环境变量 14
1.5.5 使用命令行工具 14
1.5.6 使用集成开发环境 15
1.6 第一个Java应用程序 16
1.6.1 编写源代码 16
1.6.2 使用命令行工具编译 16
1.6.3 使用命令行工具执行 16
1.7 第一个Java小应用程序 17
1.7.1 编写源代码 17
1.7.2 使用命令行工具编译 18
1.7.3 编辑HTML网页文件 18
1.7.4 运行HTML网页文件 18
小结 19
第2章 数据类型和程序流程控制 20
2.1 关键字与标识符 20
2.1.1 关键字 20
2.1.2 标识符 21
2.1.3 如何做到规范命名 22
2.2 常用基本数据类型 22
2.2.1 整型 22
2.2.2 浮点型 23
2.2.3 字符型 23
2.2.4 布尔型 23
2.3 常量与变量 24
2.3.1 常量 24
2.3.2 变量 24
2.3.3 常量与变量的区别 25
2.4 运算符 25
2.4.1 算术运算符 25
2.4.2 关系运算符 26
2.4.3 逻辑运算符 27
2.4.4 位运算符 27
2.4.5 赋值运算符 28
2.4.6 其他运算符 29
2.4.7 运算符的优先级别 29
2.5 类型转换 30
2.5.1 自动类型转换 30
2.5.2 强制类型转换 31
2.6 注释符 31
2.7 Java程序的基本结构 32
2.7.1 类是一个基本单元 32
2.7.2 main方法 33
2.7.3 自定义方法 34
2.7.4 System.out.println的使用 34
2.7.5 一个简单而完整的程序 35
2.8 顺序结构 36
2.9 分支结构 37
2.9.1 if...else分支结构 37
2.9.2 if...else嵌套 38
2.9.3 switch语句 39
2.9.4 编程实例 40
2.10 循环结构 42
2.10.1 while循环 42
2.10.2 do...while循环 43
2.10.3 for循环 43
2.10.4 编程实例 45
2.11 跳转结构 48
2.11.1 break 48
2.11.2 continue 48
2.11.3 编程实例 49
小结 50
第3章 数组和字符串 51
3.1 Java中的数组 51
3.1.1 一维数组 51
3.1.2 二维数组 53
3.1.3 多维数组 53
3.2 数组的length属性 53
3.3 Arrays数组工具类的用法 54
3.4 编程实例 55
3.5 String字符串 62
3.5.1 构造方法 63
3.5.2 String常用方法 63
3.6 StringBuffer字符串 68
3.6.1 构造方法 69
3.6.2 StringBuffer常用方法 69
3.7 String与StringBuffer的区别 70
3.8 equale与==的区别 70
3.9 编程实例 70
小结 76
第2篇 面向对象程序设计 79
第4章 类和对象 79
4.1 传统过程程序设计概述 79
4.2 面向对象程序设计概述 80
4.2.1 抽象 81
4.2.2 封装 81
4.2.3 继承 82
4.2.4 多态 82
4.3 类 83
4.3.1 类的定义 83
4.3.2 类的访问权限修饰符 84
4.3.3 构造方法 84
4.3.4 成员变量的定义 85
4.3.5 成员变量访问权限修饰符 87
4.3.6 成员方法的定义 87
4.3.7 方法的访问权限修饰符 89
4.4 对象 90
4.4.1 对象的概念 90
4.4.2 类与对象的区别 90
4.4.3 new关键字 91
4.4.4 对象引用成员变量 93
4.4.5 对象引用成员方法 93
4.4.6 对象的销毁 95
4.4.7 JVM垃圾回收 97
4.5 类中的静态成员 98
4.5.1 静态成员变量 98
4.5.2 静态成员方法 98
4.5.3 静态成员与非静态成员的区别 99
小结 100
第5章 继承与多态 101
5.1 继承与多态的概述 101
5.2 类的继承 102
5.2.1 类继承的实现 102
5.2.2 变量与方法的继承 103
5.2.3 子类对父类构造方法的继承和调用 104
5.2.4 关于类的继承的进一步说明 105
5.3 最终类final 107
5.4 super关键字 107
5.5 this关键字 109
5.6 方法的覆盖 111
5.7 成员变量的隐藏 112
5.8 方法的重载 113
5.9 父类与子类的转换 114
小结 115
第6章 抽象类与接口 117
6.1 抽象类概述 117
6.2 接口的概述 117
6.3 抽象类与接口的区别 118
6.4 抽象类的定义 118
6.4.1 abstract关键字 118
6.4.2 抽象方法的定义 119
6.5 抽象类的使用说明 119
6.6 接口的定义 120
6.6.1 关键字interface 121
6.6.2 接口的使用规则 121
6.6.3 接口多态的应用 123
6.7 接口的使用说明 124
小结 126
第7章 内部类与匿名类 127
7.1 内部类概述 127
7.2 内部类的语法及应用 127
7.2.1 实例内部类 127
7.2.2 静态内部类 130
7.2.3 局部内部类 131
7.3 匿名类概述 132
7.4 匿名类的语法及应用 133
7.4.1 与类有关的匿名类 133
7.4.2 与接口有关的匿名类 135
小结 136
第8章 Java常用类库 137
8.1 Object的讲解 137
8.1.1 Object概述 137
8.1.2 toString()方法的覆盖 138
8.1.3 equals()方法的覆盖 139
8.1.4 对象的克隆 141
8.2 Math类和BigInteger类 146
8.2.1 Math概述 146
8.2.2 random()方法 147
8.2.3 数字的格式控制 148
8.2.4 BigInteger类 148
8.3 数据类型封装类 150
8.3.1 Integer类 150
8.3.2 Long类 152
8.3.3 Byte类 152
8.3.4 Short类 153
8.3.5 Float类 153
8.3.6 Double类 154
8.3.7 Boolean类 154
8.4 包 154
8.4.1 包的概念 154
8.4.2 自动导入的包 155
8.4.3 包的命名 156
8.4.4 import关键字 157
8.4.5 package关键字 158
小结 160
第9章 异常处理 161
9.1 异常的概念 161
9.1.1 什么是异常(What) 161
9.1.2 为什么要有异常(Why) 162
9.1.3 从哪里来,往哪里去(Where) 162
9.1.4 什么时候(When) 162
9.1.5 哪种异常(Which) 166
9.2 异常类 167
9.2.1 异常类的层次结构 167
9.2.2 Exception类以及子类 168
9.2.3 Error类以及子类 168
9.3 异常处理机制 169
9.3.1 异常的产生 169
9.3.2 异常处理 170
9.4 抛出异常 173
9.4.1 throw语句 173
9.4.2 throws语句 174
9.5 自定义异常 176
9.5.1 定义异常类 176
9.5.2 抛出异常 177
9.5.3 捕获并处理异常 177
小结 178
第10章 集合框架 180
10.1 Java集合概述 180
10.2 Collection接口 180
10.2.1 Collection概述 181
10.2.2 Collection层次结构 181
10.2.3 常用方法 181
10.3 List集合 182
10.3.1 ArrayList类的使用 182
10.3.2 LinkedList类的使用 184
10.3.3 Vector类的使用 185
10.3.4 Stack类的使用 186
10.4 枚举和迭代 187
10.5 Set集合 189
10.5.1 HashSet类的使用 190
10.5.2 TreeSet类的使用 191
10.5.3 HashSet与TreeSet的区别 193
10.6 Map接口 193
10.6.1 Map层次结构 194
10.6.2 使用HashMap类 194
10.6.3 使用TreeMap类 196
10.7 Collections工具类 198
10.7.1 Collections的常用方法 198
10.7.2 Collections应用实例 199
小结 201
第11章 输入/输出操作 202
11.1 I/O流概述 202
11.2 字节流 203
11.2.1 InputStream类和OutputStream类 203
11.2.2 字节流的常用方法 204
11.2.3 文件流FileInputStream类 204
11.2.4 文件流FileOutputStream类 205
11.2.5 缓存流BufferedInputStream类 206
11.2.6 缓存流BufferedOutputStream类 208
11.2.7 基本数据流DatalnputStream类 208
11.2.8 基本数据流DataOutputStream类 209
11.3 字符流 210
11.3.1 Reader类和Writer类 210
11.3.2 字符流的常用方法 211
11.3.3 缓存流BufferedReader流 212
11.3.4 缓存流BufferedWriter流 213
11.3.5 转换流InputStreamReader类 214
11.3.6 转换流OutputStreamWriter类 214
11.3.7 PrintStream类/PrintWriter类 214
11.3.8 编程实例 216
11.4 File文件类 217
11.4.1 File概述 217
11.4.2 File构造方法 217
11.4.3 File的常用方法 218
11.4.4 编程实例 219
11.5 随机文件类RandomAccessFile 222
11.5.1 RandomAccessFile概述 222
11.5.2 RandomAccessFile常用方法 223
11.6 对象序列化 225
11.6.1 对象流ObjectInputStream类 226
11.6.2 对象流ObjectOutputStream类 227
11.6.3 Serializable接口 228
小结 230
第3篇 Java开发中的高级技术 233
第12章 多线程 233
12.1 线程的概述 233
12.1.1 进程 233
12.1.2 线程 234
12.2 线程的创建方式 234
12.2.1 继承线程类 234
12.2.2 实现线程接口 236
12.3 线程的生命周期 237
12.4 线程的调度和优先级 239
12.5 线程的控制 240
12.5.1 线程的启动 240
12.5.2 线程的休眠 240
12.5.3 当前线程状态的检查 244
12.5.4 结束线程 245
12.6 线程的同步问题 247
12.6.1 使用synchronized同步块 247
12.6.2 使用synchronized同步方法 249
12.7 线程的死锁问题 251
12.7.1 造成死锁的原因 251
12.7.2 哲学家进餐的问题 252
12.7.3 解决线程死锁问题 253
12.7.4 实例—模拟解决死锁问题 253
12.8 线程间的通信 258
12.8.1 与线程间通信相关的方法 258
12.8.2 生产者—消费者问题 258
小结 261
第13章 反射机制 262
13.1 什么是反射 262
13.2 反射包reflection概述 263
13.3 Class概述 265
13.4 获取Class的方式 267
13.4.1 getClass() 267
13.4.2 使用类的名字表达式 268
13.4.3 forName() 269
13.5 使用反射的好处 270
13.5.1 获取某类的成员变量 270
13.5.2 获取某类的成员方法 271
13.5.3 修改成员的值 273
小结 275
第14章 泛型 276
14.1 为什么使用泛型 276
14.2 定义泛型类的语法 276
14.3 泛型编程实例 279
14.4 泛型的高级语法 284
14.4.1 通配字符 284
14.4.2 限制泛型 285
小结 286
第15章 JDBC程序设计 288
15.1 JDBC概述 288
15.2 数据库的基本操作 289
15.3 JDBC常用接口使用介绍 292
15.3.1 Driver 293
15.3.2 DriverManager 293
15.3.3 Connection 294
15.3.4 Statement 296
15.3.5 ResultSet 296
15.3.6 CallableStatement 297
15.4 Java连接数据库 298
15.4.1 注册数据库驱动程序 299
15.4.2 获得数据库连接 300
15.4.3 发送和执行SQL语句 301
15.4.4 Java连接数据库编程实例 301
15.5 执行静态SQL 302
15.6 执行预编译SQL 304
15.7 结果集ResultSet 306
15.7.1 ResultSet的常用方法 306
15.7.2 可滚动和可更新的结果集 306
15.8 存储过程 311
15.8.1 存储过程的建立 311
15.8.2 执行存储过程 312
15.9 事务的处理 314
15.9.1 什么是事务 314
15.9.2 Java中事务的处理 314
小结 316
第4篇 Java Web开发 319
第16章 Tomcat的使用 319
16.1 Tomcat介绍 319
16.2 Tomcat的工作模式 319
16.2.1 Servlet容器 320
16.2.2 Tomcat的工作模式 320
16.3 Tomcat安装 321
16.3.1 安装JDK 321
16.3.2 安装Tomcat 321
16.3.3 Tomcat 6.0新特性及变化 322
16.4 Tomcat的目录结构及相关设置 322
16.4.1 预览目录结构 322
16.4.2 相关设置 323
16.5 测试运行Tomcat 324
16.6 Tomcat下部署Web程序 324
16.6.1 部署描述符web.xml 325
16.6.2 实例演示:创建和发布过程 335
16.7 通过IDE部署Web程序 339
小结 341
第17章 Servlet技术 342
17.1 Servlet介绍 342
17.2 Servlet和CGI的比较 343
17.3 Servlet的生命周期 343
17.3.1 加载和实例化Servlet 344
17.3.2 初始化 344
17.3.3 处理请求 346
17.3.4 服务结束 347
17.4 Servlet API 347
17.4.1 javax.servlet包 348
17.4.2 javax.servlet.http包 362
17.5 会话跟踪 372
17.5.1 会话状态跟踪API 373
17.5.2 会话状态跟踪API示例 375
17.6 Cookie概述 377
17.6.1 Cookie操作 377
17.6.2 使用Cookie的Servlet 378
小结 381
第18章 JSP技术 382
18.1 JSP技术概述 382
18.1.1 动态网页技术比较 382
18.1.2 JSP工作原理 383
18.2 JSP核心语法 384
18.2.1 JSP页面的基本结构 384
18.2.2 变量的声明 386
18.2.3 表达式 386
18.2.4 JSP脚本 387
18.2.5 JSP的注释 388
18.2.6 JSP的指令标签 389
18.2.7 JSP的动作标签 393
18.3 JSP的内置对象 400
18.3.1 request对象 400
18.3.2 response对象 402
18.3.3 session对象 404
18.3.4 aplication对象 406
18.3.5 out对象 407
18.3.6 Cookie对象 408
18.3.7 page对象 410
18.3.8 exception对象 410
18.3.9 pageContext对象 410
18.3.10 Config对象 412
小结 412
第19章 JavaBean技术 413
19.1 JavaBean概述 413
19.2 JavaBean的属性 414
19.3 在JSP页面中使用JavaBean 417
19.4 JavaBean的范围 421
19.5 使用JavaBean实现购物车 423
19.5.1 需求概述 423
19.5.2 建立数据库表 423
19.5.3 编写JavaBean 424
19.5.4 编写购物页面 425
小结 432
第20章 Servlet高级应用——监听器及过滤器 433
20.1 监听器 433
20.1.1 ServletContextListener 433
20.1.2 HttpSessionListener 433
20.1.3 ServletRequestListener 434
20.1.4 ServletContextAttributeListener 434
20.1.5 HttpSessionActivationListener 434
20.1.6 HttpSessionAttributeListener 435
20.1.7 HttpSessionBindingListener 435
20.1.8 ServletRequestAttributeListener 436
20.1.9 web.xml配置 436
20.2 Servlet过滤器 436
20.2.1 创建Servlet过滤器 437
20.2.2 配置过滤器 438
20.2.3 过滤器执行流程 438
20.3 监听器编程实例 439
20.4 过滤器编程实例 439
小结 442
第5篇 项目案例开发实践 445
第21章 学生网上选课系统的设计 445
21.1 学生网上选课系统概述 445
21.2 建立数据库 446
21.2.1 设计数据库实体 446
21.2.2 使用MySQL Administrator建立表 449
21.3 系统功能模块设计 450
21.3.1 系统结构设计 450
21.3.2 登录用例的设计与实现 455
21.3.3 查看课表用例的设计与实现 461
21.3.4 查看课程列表用例的设计与实现 466
21.3.5 查看教师信息用例的设计与实现 468
21.3.6 选课用例的设计与实现 471
21.3.7 退课用例的设计与实现 474
21.3.8 打印课表用例的设计与实现 475
21.4 完整实例 475
21.4.1 项目结构 475
21.4.2 运行项目 476
小结 477
第22章 设计一个简单的购物网站 478
22.1 系统概述 478
22.2 数据库设计 479
22.3 系统功能模块设计 481
22.3.1 MVC模式 481
22.3.2 本例使用MVC模式的方式 481
22.3.3 数据库访问的设计与实现 483
22.3.4 用户登录用例的设计与实现 486
22.3.5 浏览商品用例的设计与实现 489
22.3.6 购物车维护用例的设计与实现 494
22.3.7 其他增删改用例的设计与实现 500
22.4 完整实例 501
22.4.1 数据库的准备 501
22.4.2 生成项目 502
22.4.3 运行项目 503
小结 505
第23章 英语论坛 506
23.1 应用背景与主要技术介绍 506
23.1.1 应用背景 506
23.1.2 功能介绍 506
23.1.3 JSP简介 506
23.1.4 Servlet简介 507
23.2 总体设计与概要说明 508
23.3 业务流程图 508
23.4 程序实现 509
23.4.1 公共的数据库访问类设计 509
23.4.2 数据存取对象的设计 512
23.4.3 前台页面的设计 515
23.4.4 后台Servlet的设计 526
23.5 程序的部署 529
小结 529
第24章 Umbrella企业站 530
24.1 应用背景与主要技术介绍 530
24.1.1 应用背景 530
24.1.2 功能介绍(需求) 530
24.1.3 Struts2简介 530
24.1.4 Hibernate简介 531
24.1.5 Spring简介 532
24.2 总体结构图 532
24.3 业务流程图 532
24.4 程序实现 533
24.4.1 带日志功能的Action设计 533
24.4.2 消息资源文件struts-globalMessages.properties的设计 533
24.4.3 日志文件log4j.properties的设计 533
24.4.4 Struts2属性文件struts.properties的设计 534
24.4.5 Struts2映射列表文件struts.xml的设计 535
24.4.6 Struts2映射列表文件struts-superPackage.xml的设计 535
24.4.7 Struts2各个子映射列表文件的设计 536
24.4.8 Spring配置文件的设计 540
24.4.9 连接池配置文件proxool.cfg.xml的设计 543
24.4.10 J2EE Web应用配置文件web.xml 543
24.5 管理员模块 545
24.5.1 展示层JSP实现 545
24.5.2 控制层Struts2实现 546
24.6 程序的部署 563
24.6.1 数据库的部署 563
24.6.2 使用eclipse来部署工程Umbrella企业站 563
24.6.3 运行系统 564
小结 564
第25章 成都大学班级之家v1.0 565
25.1 应用背景与主要功能介绍 565
25.1.1 应用背景 565
25.1.2 功能介绍 565
25.2 程序实现 565
25.2.1 DAO层的实现 565
25.2.2 Service层的实现 571
25.2.3 Action层的实现 578
25.2.4 JSP页面实现 585
25.3 程序的部署 588
25.3.1 数据库的部署 588
25.3.2 使用eclipse来部署工程“成都大学班级之家” 588
25.3.3 运行系统 589
小结 589
参考文献 590