图书目录

目    录

第1章  Java与面向对象思想

1.1  初识Java语言 1

1.1.1  Java是什么 1

1.1.2  为什么要选用Java语言 2

1.1.3  Java语言的解释执行与跨平台特性 3

1.1.4  怎样学好Java 4

1.2  什么是面向对象思想 5

1.2.1  软件开发的方法学——面向对象思想提出的背景 5

1.2.2  面向对象的物质基础——类与封装 6

1.2.3  抽象与代码复用——抽象类与概念抽象 7

1.2.4  模块的开关——接口与功能抽象 8

1.2.5  同名但不同参——多态与重载 8

1.2.6  具有面向对象思想语言的优势 9

1.3  开发我们的第一个Java程序 10

1.3.1  如何配置Java的开发环境 10

1.3.1.1  下载和安装JDK 10

1.3.1.2  设置JDK的环境变量 10

1.3.3.3  安装Eclipse 12

1.3.3.4  添加Eclipse的中文插件 12

1.3.2  编写HelloWorld程序 12

1.3.3  运行HelloWorld程序 13

1.3.4  使用Eclipse集成开发环境运行HelloWorld程序 13

1.4  本章小结 16

第2章  开始学习Java语法

2.1  基本数据类型与操作符 17

2.1.1  基本数据类型 17

2.1.2  基本操作符 18

2.1.3  操作符优先级 21

2.1.4  对象型的数据类型 22

2.1.5  方法(函数)的参数和返回值 24

2.2  程序流程控制 25

2.2.1  顺序与分支 25

2.2.2  循环流程 27

2.2.3  有争议的goto语句 28

2.2.4  使用if语句判定是否是闰年 29

2.2.5  使用循环语句计算阶乘 30

2.2.6  使用switch语句控制输出 30

2.3  类与封装 32

2.3.1  类的构成要素 32

2.3.2  类的构造函数与构造次序 32

2.3.3  用package封装工具类和用import引入需要的类 35

2.3.4  修饰符与类内部对象的可见性 36

2.3.5  静态方法与抽象方法 39

2.3.6  类的封装性与模块的解耦合 42

2.3.7  垃圾收集机制与Finalize语句段 44

2.3.8  提供用电服务类的示例代码 46

2.4  继承与抽象类 48

2.4.1  继承的设计动机 48

2.4.2  抽象类与概念抽象 49

2.5  接口与实现 51

2.5.1  接口的语法 51

2.5.2  为什么要使用接口 52

2.5.3  接口与抽象类在本质上的区别——空调外的例子 52

2.5.4  通过实现接口的方式开发电视和收音机类 53

2.6  具有“分离”特性的多态 55

2.6.1  从重载中归纳多态的特性 55

2.6.2  多态与“分离”——实现小动物叫 56

2.7  RTTI与反射 58

2.7.1  君子无不可用之势——论后期编译的效果 58

2.7.2  在代码里实现RTTI的效果 59

2.7.3  类的照妖镜——反射 60

2.7.4  使用反射机制实现代码还原 61

2.8  通过约束降低出错可能性的泛型 64

2.8.1  什么是泛型 64

2.8.2  泛型的示例代码 64

2.9  本章小结 65

第3章  Java中的数据结构——集合类

3.1  集合类与数据容纳 66

3.1.1  在项目中自定义数据类型的难处 66

3.1.2  什么是数据结构 67

3.1.3  Java集合中的两类数据结构 67

3.2  线性表型的集合 67

3.2.1  顺序访问的典范——数组类 67

3.2.2  数组的改进版本——Vector类 70

3.2.3  先进后出的Stack类 75

3.2.4  链表式的List接口以及LinkedList实现类 78

3.2.4.1  List接口里的方法 79

3.2.4.2  List实现类及其功能 79

3.2.4.3  List代码示例 80

3.2.5  不允许有重复元素的Set接口 82

3.2.5.1  Set接口里的方法 82

3.2.5.2  Set实现类及其功能 82

3.2.6  对第一类集合的归纳 84

3.2.7  使用Vector模拟Stack的动作 84

3.2.8  使用Vector模拟队列的动作 87

3.3  键值对型的集合 89

3.3.1  为什么要使用Hash类 89

3.3.2  键值对的典范——Hashtable类 90

3.3.3  通过“魔术代码”分析equals和hashCode方法 92

3.3.4  封装了散列表数据结构的Map接口 97

3.3.4.1  Map接口里的方法 97

3.3.4.2  实现Map接口的类 99

3.3.4.3  Map代码实例 99

3.3.4.4  采用Entry对象遍历Map 100

3.3.5  对第二类集合的归纳 101

3.4  枚举器与数据操作 102

3.4.1  访问集合类的“不确定性”难题 102

3.4.2 “大智若愚”的枚举器接口 102

3.4.3  枚举器“分离”思想的启示 104

3.4.4  使用枚举器定义统一的访问各集合的方法——一个打印的例子 104

3.5  深浅拷贝 106

3.5.1 “偷懒”的共享数据块的方法——浅拷贝 107

3.5.2  似是而非的浅拷贝——只拷贝ArrayList对象 108

3.5.3 “刨根撅底”的深拷贝——实现对ArrayList的整体克隆 110

3.6  Java集合类中的排序 112

3.6.1  让你的对象是可比较的 112

3.6.2  为你的对象定义比较器 114

3.7  本章小结 116

第4章  有异常怎么办

4.1  异常的基本概念 117

4.1.1  险恶的项目运行环境 117

4.1.2  步步为营的异常处理机制 118

4.1.3  Java虚拟机处理异常的流程 120

4.2  异常技术综述 121

4.2.1  错了不要紧——论运行期异常 121

4.2.2  自食其力——处理自己的异常 122

4.2.3  有问题就报告——异常的抛出声明 126

4.2.4  弥补阙漏的自定义异常 128

4.3  异常的陷阱 130

4.3.1  异常与继承 130

4.3.2  谁动了我的异常 131

4.3.3  论资排辈的异常级别 133

4.4  本章小结 134

第5章  IO流与流读写操作

5.1  输入流与输出流 135

5.1.1  什么是流对象 135

5.1.2  复杂的输入输出应用与简单的Java IO类库 135

5.1.3  Java里IO流对象的逻辑关系 136

5.2  IO对象使用说明 137

5.2.1  怎样读写文件——读写一个文本文件 138

5.2.2  怎样读写内存数据 141

5.2.3  怎样读写带格式的数据 144

5.2.4  标准设备与重定向 146

5.2.5  压缩和解压缩ZIP文件——创建一个压缩和解压缩的程序 150

5.2.6  用StreamTokenizer类输出不同格式的Token 153

5.3  本章小结 155

第6章  Java与多线程开发

6.1  线程到底是什么 156

6.1.1  线程的定义 156

6.1.2  线程的生命周期 157

6.1.3  操作系统与线程并发 158

6.2  定义自己的线程,继承Thread类 158

6.2.1  Thread类与线程 158

6.2.2  使用Thread类实现计数器功能 158

6.3  解决继承局限性,实现Runnable接口 162

6.3.1  Runnable接口与线程 162

6.3.2  使用Runnable接口实现计数器功能 162

6.4  避免冲突,控制多线程的并发 165

6.4.1  劳逸结合——线程的睡眠 165

6.4.2  控制数据的有效性,通过synchronized关键字声明同步——一个由并发引起

  的数据错误修改及解决的例子 166

6.4.3  线程的等待与通知线程恢复工作 177

6.4.4  死锁的成因 177

6.4.5  特事特办,线程的优先级 180

6.4.6  多线程经典案例——生产者消费者问题 183

6.5  本章小结 186

第7章  Java与网络开发

7.1  网络开发的基本需求 187

7.1.1  网络通讯模型和网络通讯协议 187

7.1.2  通过TCP协议建立可靠的通讯信道 188

7.1.2.1  两军问题与建立可靠连接的难题 188

7.1.2.2  通过三次握手,建立通讯信道 189

7.1.2.3  支持TCP协议的Java包 190

7.1.3  通过UDP协议高效地发送数据报文 192

7.1.3.1  UDP协议与数据报文 192

7.1.2.2  Java的UDP相关类说明 193

7.2  面向套接字编程 195

7.2.1  使用套接字实现基于TCP协议的服务器和客户机程序 195

7.2.1.1  开发服务器端代码 196

7.2.1.2  开发客户端代码 198

7.2.1.3  运行效果演示 199

7.2.2  使用套接字连接多个客户机 200

7.2.2.1  开发服务器端代码 200

7.2.2.2  开发客户端代码 203

7.2.2.3  运行效果演示 206

7.2.3  UDP协议与传输数据报文 207

7.2.3.1  开发服务器端代码 207

7.2.3.2  开发客户端代码 212

7.2.3.3  开发客户端代码 213

7.3  RMI开发概述 215

7.3.1  什么是RMI 215

7.3.2  RMI的实质——透明地调用远端方法 215

7.3.3  RMI代码实例——一个非常简单的Hello World程序 216

7.3.3.1  编写提供远程方法的接口 216

7.3.3.2  编写提供远程方法的实现类 217

7.3.3.3  编写RMI客户端代码 218

7.3.3.4  配置运行RMI代码 219

7.4  本章小结 220

第8章  Java与数据库开发

8.1  Java连接数据库的工具 221

8.1.1  连接数据库的通用接口 221

8.1.2  JDBC模型与数据库访问控制 222

8.1.3  JDBC接口概述 224

8.2  以JDBC-ODBC的方式连接数据库 225

8.2.1  配置Access数据库环境 225

8.2.1.1  创建一个新的数据库 226

8.2.1.2  在新数据库中创建一个表 227

8.2.2  配置ODBC数据源连接 233

8.2.3  使用JDBC_ODBC桥接方式连接数据库 235

8.2.4  获得并遍历结果集 237

8.3  使用数据库驱动程序连接SQL Server 2005 239

8.3.1  配置SQL Server数据库环境和数据库驱动程序 239

8.3.2  使用JDBC驱动程序的方式连接数据库 242

8.3.3  获得并遍历结果集 245

8.4  使用数据库驱动程序连接数据库MySQL 250

8.4.1  配置MySQL数据库环境和驱动程序 250

8.4.2  使用驱动程序连接MySQL 253

8.4.3  Eclipse下的运行结果 255

8.5  本章小结 256

第9章  Java与图形界面开发

9.1  开发Applet应用程序 257

9.1.1  什么是Applet 257

9.1.2  Applet的生命周期 258

9.1.3  向Applet里添加控件 258

9.1.4  Applet的事件处理模型 260

9.1.5  开发Applet的HelloWorld程序 261

9.1.5.1  HelloWorld程序 261

9.1.5.2  运行HelloWorld 262

9.2  重量级的图形开发工具——AWT库 264

9.2.1  什么是AWT 264

9.2.2  AWT的控件说明 264

9.2.2.1  容器 265

9.2.2.2  组件 265

9.2.2.3  布局管理器 266

9.2.3  事件监听与事件处理 266

9.2.4  AWT的控件代码 267

9.3  让界面开发更容易 270

9.3.1  什么是Swing 270

9.3.2  Swing的容器与控件说明 270

9.3.2.1  Swing的容器 270

9.3.2.2  Swing的组件 271

9.3.3  Swing的布局控制 271

9.3.4  Swing的事件监听与事件处理机制 271

9.3.5  使用Swing开发象棋界面 271

9.3.5.1  象棋程序设计 271

9.3.5.2  棋子和类Chess 272

9.3.5.3  落子点和类Point 274

9.3.5.4  规则和类ChessRule 277

9.3.5.5  棋盘和类ChessBoard 277

9.3.5.6  类ChessFrame 284

9.4  本章小结 287

第10章  生命游戏

10.1  需求分析与设计 288

10.1.1  囚徒博弈 288

10.1.2  生命游戏和囚徒博弈 288

10.1.3  生命游戏的基本需求 290

10.1.3.1  博弈规则 290

10.1.3.2  博弈的邻居 291

10.1.3.3  移动规则 292

10.1.3.4  基本需求 292

10.1.3.5  模块设计 293

10.2  生命游戏说明 293

10.2.1  开发主界面 293

10.2.1.1  使用Applet开发主界面 293

10.2.1.2  参数设置界面 296

10.2.1.3  博弈规则设置界面 297

10.2.1.4  模式选择界面 298

10.2.1.5  按钮控制界面 301

10.2.1.6  设置默认参数 301

10.2.1.7  参数说明 302

10.2.2  开发游戏模拟界面 305

10.2.2.1  获得游戏参数 305

10.2.2.2  数据显示界面 306

10.2.2.3  模拟界面 307

10.2.2.4  构造函数 312

10.2.3  开发事件监听与响应机制 312

10.3  业务逻辑开发 315

10.3.1  企业模块 315

10.3.2  生命游戏的逻辑代码 317

10.3.3  让生命运动起来 323

10.4  运行游戏 324

10.4.1  编写运行Applet的网页 324

10.4.2  设置游戏参数 325

10.4.3  企业ID显示模式 326

10.4.4  企业方向显示模式 328

10.4.5  企业策略显示模式 329

10.5  本章小结 330

第11章  基于图形和网络的Java聊天室

11.1  设计我们的聊天室 331

11.1.1  需求分析 331

11.1.2  模块设计 331

11.1.3  创建chatroom工程 333

11.2  设计并开发数据库模块 333

11.2.1  设计数据库的表结构 333

11.2.2  设计和开发数据库连接模块 334

11.2.3  设计和开发数据库处理模块 336

11.3  swing界面模块开发 338

11.3.1  创建Swing类 338

11.3.2  登录界面 340

11.3.3  注册界面 343

11.3.4  聊天界面 346

11.4  swing界面模块开发 348

11.4.1  客户端开发 348

11.4.2  使用socket发送非阻塞IO流 348

11.4.3  使用socket接收非阻塞IO流 352

11.5  服务端开发 356

11.5.1  非阻塞IO在socket服务器上的应用 356

11.5.2  服务端程序 356

11.6  运行效果演示 362

11.7  本章小结 364

第12章  学生信息管理系统

12.1  需求分析与设计 365

12.1.1  基本需求 365

12.1.2  模块设计 365

12.1.3  数据库设计 366

12.2  界面设计 369

12.2.1  登录界面的设计 369

12.2.2  查询界面的设计 373

12.2.3  新建界面的设计 374

12.2.4  修改界面和删除界面的设计 375

12.3  系统模块的开发 376

12.3.1  学生信息对象 376

12.3.2  数据库操作模块 377

12.3.3  登录模块 384

12.3.4  新建模块 385

12.3.5  修改模块 387

12.3.6  删除模块 389

12.3.7  查询模块 390

12.4  本章小结 401

第13章  MVC模式与项目开发

13.1  MVC模式概述 402

13.1.1  OCP 原则与模块分离思想 402

13.1.2  什么是MVC模式 403

13.1.2.1  模型层 404

13.1.2.2  视图层 405

13.1.2.3  控制器 405

13.1.2.4  MVC模型编程综述 406

13.1.3  MVC模式的工作流程 406

13.1.3.1  第一步:设计模型接口 407

13.1.3.2  第二步:设计视图接口,基本方法同模型接口的设计 408

13.1.4  为什么要使用MVC模式 408

13.1.4.1  MVC的优点 408

13.1.4.2  MVC的适用性 409

13.2  MVC模型示例代码 409

13.2.1  开发模型组件 409

13.2.2  开发视图组件 415

13.2.3  开发控制器组件 418

13.2.4  让蛇开始活动(MVC工作流程) 420

13.3  再论MVC模式 421

13.3.1 “分离”思想带来的好处 422

13.3.2  MVC在代码维护时的优势 422

13.3.3  MVC在代码扩展时的优势 423

13.3.4  MVC与Java架构设计 423

13.4  本章小结 426

第14章  设计模式与项目开发

14.1  设计模式概述 427

14.1.1  什么是设计模式 427

14.1.2  设计模式解决问题的一般途径 428

14.1.3  为什么要使用设计模式 428

14.1.4  设计模式的优势 429

14.2  工厂模式与构造分离 429

14.2.1  工厂模式概述 429

14.2.2  分离生产过程与生产动作 430

14.2.3  工厂模式与连接对象构造 431

14.3  桥接模式与业务扩展 434

14.3.1  桥接模式与 DIP原则 434

14.3.2  架在不同解决方案之间的桥梁——桥接模式 435

14.3.3  桥接模式与业务扩展 436

14.3.4  使用桥接模式优化数据库连接代码 438

14.4  观察者模式与拉推数据 439

14.4.1  饲机而动的观察者 439

14.4.2  观察者与后继动作 441

14.4.3  使用观察者模式实现数据动态更新 443

14.5  Vistor模式与RTTI 445

14.5.1  RTTI的局限性 446

14.5.2  包容不同类的Vistor模式 447

14.5.3  使用Vistor模式实现客户关系动态管理 448

14.6  外观、代理模式与屏蔽细节 453

14.6.1  什么是外观和代理模式 453

14.6.2  外观和代理模式的使用场景及其优势 454

14.6.3  使用外观和代理模式优化数据库通用模块 454

14.7  单例模式 457

14.7.1  只允许有一个实例的单例模式 457

14.7.2  单例模式的语法实现 458

14.7.3  单例模式的使用案例 459

14.8  本章小结 460

第15章  DAO模式与数据库访问

15.1  DAO模式与数据库管理架构 461

15.1.1  什么是DAO设计模式 461

15.1.2  纵观DAO模式的优势 462

15.2  DAO模式应用示例 463

15.2.1  使用DAO模式连接数据库 464

15.2.2  在DAO里编写数据库访问逻辑 465

15.2.3  数据库访问逻辑和业务逻辑的结合体——DAO 472

15.2.4  编写业务逻辑 473

15.2.5  DAO模式与业务变更 479

15.3  本章小结 483

第16章 设计模式的应用

16.1  设计模式与代码优化 485

16.1.1  学生信息管理系统的需求变更 485

16.1.2  业务变更与代码重构 486

16.2  使用设计模式提高代码的弹性 487

16.2.1  什么是代码的弹性 487

16.2.2  利用桥接模式改善系统的弹性 487

16.3  数据库的设计和修改 489

16.3.1  User表的设计 489

16.3.2  Students_Information表的设计 490

16.3.3  Teachers_Information表的设计 491

16.4  重构系统 492

16.4.1  桥的一端——数据库连接 492

16.4.1.1  现有的数据库模块 492

16.4.1.2  数据库连接接口 494

16.4.1.3  采用单态模式实现具体的数据库连接动作 494

16.4.1.4  获得数据库连接的工厂模式 497

16.4.2  桥的另一端——信息类 498

16.4.2.1  抽象的信息类Person 498

16.4.2.2  Student--Person类的扩展 500

16.4.2.3  Teacher--Person的另一个扩展 507

16.4.3  业务流程的修改 514

16.4.3.1  登录界面的修改 514

16.4.3.2  学生信息业务流程的修改 518

16.4.3.3  教师信息管理的业务流程 524

16.4.4  设计模式总结 524

16.5  本章小结 525

第17章  基于JSP+Servlet的Web架构

17.1  Java的Web开发概述 526

17.1.1  Web开发里的显示、控制、业务三要素 526

17.1.2  Java处理Web应用的基本方式 527

17.1.3  各司其职的Java Web组件 528

17.1.4  在Eclipse上引入MyEclipse插件 529

17.1.5  在Eclipse+MyEclipse环境上配置Web服务器环境 530

17.2  开发简单的Servlet 533

17.2.1  Servlet的生命周期 533

17.2.2  编写简单的Servlet 534

17.2.3  编写Servlet的相关配置文件 536

17.2.4  打包和发布Web应用 536

17.2.5  在Eclipse集成环境中开发Servlet并发布运行 537

17.3  开发简单的JSP程序 543

17.3.1  JSP的基本语法和工作过程 543

17.3.2  只让JSP做它擅长的事——论JSP的工作范围 544

17.3.3  编写JSP的Hello World程序 545

17.3.4  打包发布JSP的Web应用程序 545

17.3.5  在Eclipse集成开发环境中编写JSP并运行 545

17.4  开发JSP+Servlet构架的程序 547

17.4.1  编写登录表单页面 547

17.4.2  编写登录成功后的展示页面 548

17.4.3  编写登录失败后的展示页面 548

17.4.4  编写负责处理登录逻辑的Servlet类并运行测试 549

17.4.5  准备数据库以及相关驱动 551

17.4.6  修改LoginServlet,添加JDBC访问代码 552

17.5  对JSP+Servlet+JDBC模式的思考 553

17.5.1  组件“各司其职”带来的好处 554

17.5.2  MVC思想及其开发模式的雏形 554

17.5.3  没有封装业务逻辑的后果 554

17.6  本章小结 555

第18章  基于JavaBean和EJB的 Web架构

18.1  组件思想与多层Web架构 556

18.1.1  为什么要构建多层的Web架构 556

18.1.2  标准零件般的Java Web组件 557

18.1.3  实现后台业务逻辑的JavaBean与EJB组件 559

18.2  使用JavaBean组件 560

18.2.1  编写负责显示逻辑的JSP代码 560

18.2.2  编写封装业务逻辑的JavaBean代码 561

18.2.3  通过DAO模式连接访问数据库 564

18.2.4  编写数据源的配置文件 567

18.2.5  在集成环境里发布JSP+JavaBean+数据库的代码 568

18.2.6  在Web服务器里运行JSP+Javabean+数据库代码 569

18.3  开发基于JSP+Servlet+EJB+JDBC的 Web构架 569

18.3.1 “大”材“小”用的Javabean与“小”材“大”用的EJB 569

18.3.2  在集成环境里配置EJB的集成开发环境 570

18.3.3  EJB的种类及其用途 571

18.3.4  给Javabean加个“E”——升级现有的Javabean组件之了解EJB的规范 572

18.3.5  编写负责显示逻辑的JSP代码 572

18.3.6  编写负责控制逻辑的Servlet代码 575

18.3.7  编写负责业务逻辑的EJB代码 577

18.3.8  使用工厂模式规范EJB的初始化过程 580

18.3.9  通过DAO模式连接访问数据库 580

18.3.10  编写EJB和Servlet的配置文件 581

18.3.11  打包发布EJB包 582

18.3.12  在集成环境里配置和运行EJB程序 583

18.4  开发会话Bean+实体Bean的综合应用 587

18.4.1  会话Bean和实体Bean的用途分析 587

18.4.2  根据外观模式的思想整合会话Bean与实体Bean 587

18.4.3  编写负责显示逻辑的JSP代码 588

18.4.4  编写负责控制逻辑的Servlet代码 590

18.4.5  编写承上启下的会话Bean代码 592

18.4.6  编写负责业务逻辑的实体Bean代码 594

18.4.7  编写Servlet和EJB的配置环境 597

18.4.8  打包发布EJB包 601

18.5  对EJB组件的思考 601

18.5.1  用标准化的EJB积木搭建外观统一的J2EE模型 601

18.5.2  J2EE架构里的MVC模式 601

18.5.3  从Javabean升级到EJB的启示 602

18.5.4  为什么J2EE和EJB能满足企业级的开发需求 602

18.6  本章小结 602

第19章  基于J2EE的在线购物系统

19.1  需求分析与设计 603

19.1.1  在线购物系统需求概述 603

19.1.2  根据J2EE架构设计模块和流程 605

19.1.3  数据库设计 607

19.1.4  配置运行环境 611

19.2  系统整体架构 612

19.2.1  前台展现层设计——通过MVC模式实现页面跳转 612

19.2.2  中间业务层设计——通过DAO使用会话Bean建立业务逻辑 624

19.2.3  后台数据层设计——通过EJB操作数据库 629

19.2.4  整体架构图 630

19.3  公共模块 631

19.3.1  编写负责显示逻辑的JSP代码 631

19.3.2  编写控制器层的Servlet和Action类 634

19.3.3  编写封装业务逻辑的DAO类 635

19.3.4  编写访问数据库的EJB 636

19.4  购物车管理模块 643

19.4.1  编写负责显示逻辑的JSP代码 643

19.4.2  编写控制器层的Servlet和Action类 647

19.5  代码发布 649

19.5.1  编写配置文件 649

19.5.2  组装EJB组件和Web应用 655

19.5.3  显示运行效果 665

19.6  企业级项目中应用EJB的思考 667

19.6.1  使用EJB可以减轻项目维护的工作量 667

19.6.2  EJB里包含的设计模式 668

19.6.3  重量级和轻量级组件的比较 668

19.7  本章小结 668

第20章  Struts架构与Web应用

20.1  Struts与MVC思想 669

20.1.1  从Struts架构里看“架构”的概念 669

20.1.2  MVC思想与分层管理的好处 671

20.1.3  Struts——“抽”出Web应用里“像”的流程 671

20.1.3.1  Struts模型组件 671

20.1.3.2  Struts控制组件 672

20.1.3.3  Struts模型层 672

20.1.3.4  Struts视图组件 673

20.1.4  可以抽象出Web流程的Struts重要组件说明 673

20.1.5  配置Struts开发环境 673

20.2  Struts的HelloWorld实例 675

20.2.1  用JSP编写视图端的代码 676

20.2.1.1  Struts HTML类标签 677

20.2.1.2  生成HTML的表单标标签 678

20.2.1.3  显示错误和消息的标签 681

20.2.1.4  Struts的其他标签 682

20.2.2  编写ActionServlet类 682

20.2.3  编写ActionForm类 684

20.2.4  编写Action类 686

20.2.5  编写ActionMapping类和ActionForward类 689

20.2.6  编写配置文件 689

20.2.6.1  配置web.xml文件 690

20.2.6.2  配置struts-config.xml文件 691

20.2.7  在集成环境上编译与发布Struts代码 693

20.2.8  效果演示与工作流程概述 695

20.3  对Struts组件的思考 696

20.3.1  Struts的体系结构与Web流程抽象 696

20.3.2  Struts与业务逻辑如何耦合 697

20.3.3  分工不同的Struts与EJB 697

20.4  Struts 2.0新特性 698

20.4.1  Struts 2.0和Struts 1.X的比较 698

20.4.2  Struts 2.0处理请求的流程 699

20.4.3  Struts 2.0的示例代码——经典的Hello World 700

20.5  本章小结 704

第21章  Spring架构与Web应用

21.1  Spring与控制反转思想 705

21.1.1  用到的时候才去获取的控制反转思想 705

21.1.2  控制反转与轻量级Web开发 708

21.1.3  基于控制反转的Spring概述 709

21.1.4  配置Spring的开发环境 710

21.2  Spring的HelloWorld实例 714

21.2.1  编写服务提供代码 714

21.2.2  在xml文件里登记各项服务 715

21.2.3  编写服务调用代码 716

21.2.4  效果演示与工作流程概述 717

21.3  Spring的常用技术 717

21.3.1  拦截器与AOP编程 718

21.3.2  在Spring里实现事务管理 723

21.3.3  数据持久性与ORM思想 725

21.4  对Spring组件的思考 729

21.4.1  Spring组件是对重量级Web组件的颠覆 729

21.4.2  Spring组件对轻量级Web开发的启示 730

21.4.3  指导Web流程的Struts与包含强力工具的Spring组件 731

21.5  本章小结 731

第22章  ORM组件与数据库访问控制

22.1  ORM组件与数据映射 732

22.1.1  什么是ORM 732

22.1.2  为什么要用ORM组件 732

22.1.3  ORM组件包含的外观设计模式 733

22.1.4  配置ORM组件的开发环境 734

22.2  Hibernate与数据库开发 740

22.2.1  数据映射的需求分析 740

22.2.2  数据映射的实例 741

22.2.3  编写ORM的客户端代码 745

22.2.4  效果演示与工作流程概述 749

22.3  Hibernate组件入门 751

22.3.1  Hibernate数据库连接API 751

22.3.2  Hibernate对JDBC的改进 753

22.3.3  Hibernate与数据库事务管理 753

22.3.4  Hibernate配置文件分析 757

22.4  对ORM组件的思考 760

22.4.1  与轻量级Web组件的关系 760

22.4.2  数据映射与DAO模式 761

22.4.3  数据映射与数据库分层应用 762

22.5  本章小结 763

第23章  Struts与Spring集成开发

23.1  Struts与Spring集成概述 764

23.1.1  Struts和Spring的固有局限 764

23.1.2  两者集成后的优势 765

23.1.3  准备Struts和Spring集成的开发环境 765

23.2  在Struts中集成Spring 769

23.2.1  需求描述 769

23.2.2  基于Struts的实现 770

23.2.2.1  配置开发环境 770

23.2.2.2  编写web.xml文件 773

23.2.2.3  编写环境界面的代码 775

23.2.2.4  编写Struts里的form类 775

23.2.2.5  编写Struts里的Action类 776

23.2.2.6  编写Struts里的struts-config.xml文件 777

23.2.2.7  把Struts部署到服务器上 778

23.2.3  基于Spring中的ActionSupport类整合Struts 780

23.2.3.1  配置开发环境 780

23.2.3.2  编写web.xml文件 781

23.2.3.3  编写环境界面的代码 782

23.2.3.4  编写Struts里的form类 783

23.2.3.5  编写Struts里的Action类 783

23.2.3.6  配置和编写Spring里的config.xml相关文件 784

23.2.3.7  编写Struts里的struts-config.xml文件 786

23.2.3.8  把Struts部署到服务器上 787

23.2.4  基于Spring中的DelegatingRequestProcessor类整合Struts 789

23.2.4.1  配置开发环境 789

23.2.4.2  编写web.xml文件 789

23.2.4.3  编写环境界面的代码 791

23.2.4.4  编写Struts里的form类 792

23.2.4.5  编写Struts里的Action类 792

23.2.4.6  配置和编写Spring里的config.xml相关文件 793

23.2.4.7  编写Struts里的struts-config.xml文件 795

23.2.4.8  把Struts部署到服务器上 796

23.2.5  基于Spring中的DelegatingActionProxy类整合Struts 798

23.2.5.1  配置开发环境 798

23.2.5.2  编写web.xml文件 798

23.2.5.3  编写环境界面的代码 799

23.2.5.4  编写Struts里的form类 801

23.2.5.5  编写Struts里的Action类 801

23.2.5.6  配置和编写Spring里的config.xml相关文件 802

23.2.5.7  编写Struts里的struts-config.xml文件 804

23.2.5.8  把Struts部署到服务器上 805

23.3  集成后的思考 806

23.3.1  利用控制反转为代码降耦 807

23.3.2  Spring与Struts三种整合方式的对比 807

23.4  本章小结 807

第24章  基于Struts+Spring+Hibernate的

在线购物系统

24.1  EJB迁移到SSH架构的工作要点 809

24.1.1  配置开发环境 809

24.1.2  SSH和EJB的对比 814

24.1.3  迁移的工作要点分析 814

24.2  整体架构的改写 829

24.2.1  前台展现层改写——通过Struts的MVC模式实现页面跳转 829

24.2.2  中间业务层改写——通过DAO建立业务逻辑 832

24.2.3  后台数据层改写——通过Hibernate将vo对象保存到数据库 833

24.3  代码发布 835

24.3.1  编写配置文件 835

24.3.2  在集成开发环境里发布项目 848

24.3.3  显示运行效果 854

24.4  SSH架构的思考 856

24.4.1  轻量级和重量级Web构架的差异 857

24.4.2  SSH的适用范围 857

24.5  本章小结 857

第25章  Java的Web Service应用

25.1  Web Service概述 858

25.1.1  什么是Web Service 858

25.1.2  为什么要使用Web Service 858

25.1.3  Web Service的特点 859

25.2  Web Service协议 859

25.2.1  SOAP--简单对象访问协议 860

25.2.2  WSDL--Web服务描述语言 862

25.3  开发基于Axis2的Web Service应用程序 863

25.3.1  什么是Axis2 863

25.3.2  搭建Web Service环境 864

25.3.2.1  安装Ant环境 864

25.3.2.2  安装Axis2 865

25.3.3  第一个Web Service 程序 866

25.3.3.1  服务端的开发 866

25.3.3.2  客户端的开发 871

25.3.4  高效的Axiom 875

25.3.4.1  服务端的开发 875

25.3.4.2  客户端的开发 878

25.4  J2EE架构里的Web Service 881

25.4.1  在struts架构中使用Web Service 881

25.4.1.1  创建一个struts项目 881

25.4.1.2  建立框架 882

25.4.1.3  编写代码 885

25.4.2  EJB中的Web Service 894

25.4.2.1  Web Service环境 894

25.4.2.2  感受EJB中的Web Service 895

25.5  本章小结 896

??

??

??

??

Java第一步——基础+设计模式+Servlet+EJB+Struts+Spring+Hibernate

目录