0%

基本信息

名称: 深入浅出MFC
作者信息: 作者: 侯捷 [ 中文 pdf ]

简单介绍

《深入浅出MFC》分为四大篇。第一篇提出学习MFC程序设计之前的必要基础,包括Widnows程序的基本观念以及C++的高阶议题。“学前基础”是相当主观的认定,不过,甚于我个人的学习经验以及教学经验,我的挑选应该颇具说服力。第二篇介绍Visual C++整合环境开发工具。本篇只不过是提纲挈领而已,并不企图取代 Visual C++使用手册。然而对于软件使用的老手,此篇或已足以让您掌握Visual C++整合环境。工具的使用虽然谈不上学问,但在视觉化软件开发过程中扮演极重角色,切莫小觑它。 第三篇介绍application framework的观念,以及MFC骨干程序,所谓骨干程序,是指Visual C++的工具ppWizard所产生出来的程序码。当然,AppWizard会根据你的选项做出不同的程序码,我所据以解说的,是大众化选项下的产品。 第四篇以微软公司附于Visual C++光碟片上的一个范例程序Scribble为主轴,一步一步加上新的功能。并在其间深入介绍Runtime Type Information(RTTI)、Dynamic Creation、Persistence(Serialization)、Message Mapping、Command Routing等核心技术。这些技术正是其他书籍最缺乏的部分。此篇之最后数章则脱离Scribble程序,另成一格。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
第0章 你一定要知道(导读)
这本书适合谁
你需要什么技术基础
你需要什么软硬件环境
让我们使用同一种语言
本书符号习惯
本书例程的取得
范例程序说明
与前版本之差异
如何联络作者
第一篇 勿在浮砂筑高台
第1章 Win32程序基本概念
Win32程序开发流程
需要什么函数库(.LIB)
需要什么头文件(.H)
以消息为基础,以事件驱动之(message based,event driven)
一个具体而微的Win32程序
程序进入点WinMain
窗口类之注册与窗口之诞生
消息循环
窗口的生命中枢:窗口函数
消息映射(Message Map)的雏形
对话框的运行
模块定义文件(.DEF)
资源描述档(.RC)
Widnows程序的生与死
空闲时间的处理:OnIdle
Console程序
Console程序与DOS程序的差别
Console程序的编译链接
JBACKUP:Win32 Console程序设计
MFCCON:MFC Console程序设计
行程与线程(Process and Thread)
核心对象
一个行程的诞生与死亡
产生子行程
一个线程的诞生与死亡
以_beginthreadex取代CreateThread
线程优先级(Priority)
多线程程序设计实例
第2章 C++的重要性质
类及其成员——谈封装(encapsulation)
基类与派生类:谈继承(Inheritance)
this指针
虚拟函数与多态(Polymorphism)
类与对象大解剖
Object slicing与虚拟函数
静态成员(变量与函数)
C++程序的生与死:兼谈构造函数与解构函数
四种不同的对象生存方式(in stack、in heap、global、local static)
执行期类型信息(RTTI)
动态生成(Dynamic Creation)
异常处理(Exception Handling)
Template
Template Functions
Template Classes
Template的编译与链接
第3章 MFC六大关键技术之仿真
MFC类层次结构
Frame 1范例程序
MFC程序的初始化过程
Frame 2范例程序
RTTI(执行期类型识别)
类别型录网与CRuntimeClass
DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC宏
Frame 3范例程序
IsKindOf(类型识别)
Frame 4范例程序
Dynamic Creation(动态生成)
DECLARE_DYNCREATE/IMPLEMENT_DYNCREATE宏
Frame 6范例程序
Persistence(永久保存)机制
Serialize(数据读写)
DECLARE_SERIAL/IMPLEMENT_SERIAL宏
没有范例程序
Message Mapping(消息映射)
Frame 7范例程序
Command Routing(命令传递)
Frame 8范例程序
本章回顾
第二篇 欲善工事先利其器
第4章 Visual C++集成开发环境
安装与组成
四个重要的工具
内务府总管:Visual C++集成开发环境
关于project
关于工具设定
Source Browser
Online Help
调试工具
VC++调试器
Exception Handling
程序代码产生器:AppWizard
东圈西点完成MFC程序骨干
威力强大的资源编辑器
Icon编辑器
Cursor编辑器
Bitmap编辑器
工具栏(Toolbar)编辑器
VERSIONINFO资源编辑器
字符串表格(Accelerator)编辑器
菜单(Menu)编辑器
加速键(Accelerator)编辑器
对话框(Dialog)编辑器
Console程序的项目管理
第三篇 浅出MFC程序设计
第5章 总观Application Framework
什么是Application Framework?
侯捷怎么说
我怎么说
别人怎么说
为什么使用Application Framework
Microsoft Foundation Classes(MFC)
白头宫女话天宝:Visual C++与MFC
纵览MFC
General Purpose classes
CObject
数据处理类(collection classes)
杂项类
异常处理类(exception handling classes)
Windows API classes
Application framework classes
High level Abstractions
Afx全局函数
MFC宏(macros)
MFC数据类型(data types)
第6章 MFC程序的生死因果
不二法门:熟记MFC类的层次结构
需要什么函数库?
需要什么头文件?
简化的MFC程序结构——以Hello MFC为例
Hello程序程序代码
MFC程序的来龙去脉(causal relations)
我只借用两个类:CWinApp和CFrameWnd
CWinApp——取代WinMain的地位
CFrameWnd——取代WndProc的地位
引爆器——Application object
隐晦不明的WinMain
AfxWinInit——AFX内部初始化操作
CWinApp::InitApplication
CMyWinApp::InitInstance
CFrameWnd::Create产生主窗口(并先注册窗口类)
奇怪的窗口类名称Afx:b:14ae:6:3e8f
窗口显示与更新
CWinApp::Run——程序生命的活水源头
把消息与处理函数连接在一起:Message Map机制
来龙去脉总整理
Callback函数
空闲时间(idle time)的处理:OnIdle
Dialog与Control
通用对话框(Common Dialogs)
本章回顾
第7章 简单而完整:MFC骨干程序
不二法门:熟记MFC类层次结构
MFC程序的UI新风貌
Document/View支撑你的应用程序
利用Visual C++工具完成Scribble step0
骨干程序使用哪些MFC类?
Document Template的意义
Scribble的Document/View设计
主窗口的诞生
工具栏和状态栏的诞生(Toolbar&Status bar)
鼠标拖放(Drag and Drop)
消息映射(Message Map)
标准菜单File/Edit/View/Window/Help
对话框
改用CEditView
第四篇 深入MFC程序设计
第8章 Document-View深入探讨
为什么需要Document-View(形而上)
Document
View
Document Frame(View Frame)
Document Template
CDocTemplate管理CDocument/CView/CFrameWnd
Scribble Step1的Document——数据结构设计
MFC Collection Classes的选用
CScribbleDoc的修改
文件:一连串的线条
线条与坐标点
Scribble Step 1的View:数据重绘与编辑
CScribbleView的修改
View的重绘操作:GetDocument和OnDraw
ClassWizard的辅佐
WizardBar的辅佐
Serialize:对象的档案读写
Serialization以外的档案读写操作
台面上的Serialize操作
台面下的Serialize写档奥秘
台面下的Serialize读档奥秘
DYNAMIC/DYNCREATE/SERIAL三宏
Serializable的必要条件
CObject类
IsKindOf
IsSerializable
CObject::Serialize
CArchive类
operator《和operator》
效率考虑
自定SERIAL宏给抽象类使用
在CObList中加入CStroke以外的类
Document与View交流——为Step4做准备
第9章 消息映射与命令传递
到底要解决什么
消息分类
万流归宗Command Target(CCmdTarget)
三个奇怪的宏,一张巨大的网
DECLARE_MESSAGE_MAP宏
消息映射网的形成:BEGIN…/ON…/END…宏
米诺托斯(Minotauros)与西修斯(Theseus)
二万五千里长征——消息的传递
直线上溯(一般Windows消息)
拐弯上溯(WM_COMMAND命令消息)
罗塞达碑石:AfxSig_xx的奥秘
Scribble Step2:UI对象的变化
改变菜单
改变工具栏
利用ClassWizard连接命令项识别码与命令处理函数
维护UI对象状态(UPDATE_COMMAND_UI)
本章回顾
第10章 MFC与对话盒
对话框编辑器
利用ClassWizard连接对话框与其专用类
对话框的消息处理函数
对话框数据交换与校验(DDX&DDV)
如何唤起对话框
本章回顾
第11章 View功能的加强与重绘效率的提高
同时修改多个Views:UpdateAllViews和OnUpdate
在View中定义一个hint
把hint传给OnUpdate
利用hint增加重绘效率
可卷动的窗口:CScrollView
大窗口中的小窗口:Splitter
切分窗口的功能
切分窗口的程序概念
切分窗口的实现
本章回顾
第12章 打印与预览
概述
打印操作的后台原理
MFC默认的打印机制
Scribble打印机制的增强
打印机的页和文件的页
配置GDI绘图工具
尺寸与方向:关于映射方式(坐标系统)
分页
页眉与页脚
动态计算页码
打印预览(Print Preview)
本章回顾
第13章 多重文件与多重显示
MDI和SDI
多重显示(Multiple Views)
窗口的动态切分
窗口的静态切分
CreateStatic和CreateView
窗口的静态三叉切分
Graph范例程序
静态切分窗口之观念整理
同源子窗口
CMDIFrameWnd::OnWindowNew
Text范例程序
非标准做法的缺点
多重文件
新的Cocument类
新的Document Template
新的UI系统
新文件的档案读写操作
第14章 MFC多线程程序设计
从操作系统层面看线程
三个观念:模块、行程和线程
线程优先级(Priority)
线程调度(Scheduling)
Thread Context
从程序设计层面看线程
Worker Threads和UI Threads
错误观念
正确态度
MFC多线程程序设计
探索CWinThread
产生一个Worker Thread
产生一个UI Thread
线程的结束
线程与同步控制
MFC多线程程序例程

第15章 定制一个AppWizard 到底Wizard是什么? Custom AppWizard的基本操作 剖析AppWizard Components Dialog Templates和Dialog classes Macros Directives 动手修改Top Studio AppWizard 利用资源编辑器修改IDD_CUSTOM1对话框画面 利用ClassWizard修改IDD_CUSTOM1对话框的对应类CCustomlDlg 改写OnDismiss虚拟函数,在其中定义macros 修改text template Top Studio AppWizard执行结果 更多的信息 第16章 站上众人的肩膀——使用Components&activeX Controls 什么是Component Gallery 使用Components Splash screen system Info for About Dlg Tip of the Day Components实际运用:ComTest程序 修改ComTest程序内容 使用ActiveX Controls ActiveX Control基础观念:Properties、Methods、Events ActiveX Controls的五大使用步骤 使用ActiveX Control:OcxTest程序 第五篇 附录 附录A 无责任书评:从摇篮到坟墓Windows的完全学习 无责任书评:MFC四大天王 附录B Scribble Step 5完整原始码 附录C Visual C++5.0MFC范例程序一览 附录D 以MFC重建DBWIN

亚马逊链接

基本信息

名称: Java数据结构和算法(第2版)
作者信息: 作者: 平均4.2 星 [ 中文 pdf ]

简单介绍

《Java数据结构和算法》(第2版)以一种易懂的方式教授如何安排和操纵数据的问题,其中不乏一些难题:了解这些知识以期使计算机的应用获得最好的表现。不管使用何种语言或平台,掌握了数据结构和算法将改进程序的质量和性能。 《Java数据结构和算法》(第2版)提供了一套独创的可视讨论专题用以阐明主要的论题:它使用Java语言说明重要的概念,而避免了C/C++语言的复杂性,以便集中精力论述数据结构和算法。经验丰富的作者RorbertLafore先生提供了许多简单明了的例子,避免了对于这类例题常见的冗长、繁锁的数学证明。在第二版中,他利用Java语言最新特性,修改并扩充了他的例子。在每一章后都有问题和练习,使读者有机会测试自己的理解程度。

目录

1
出版说明 献词 简介 第1章 综述 数据结构和算法能起到什么作用? 数据结构的概述 算法的概述 一些定义 面向对象编程 软件工程 对于C++程序员的Java Java数据结构的类库 小结 问题 第2章 数组 Array专题Applet Java中数组的基础知识 将程序划分成类 类接口 Ordered专题applet 有序数组的Java代码 对数 存储对象 大O表示法 为什么不用数组表示一切? 小结 问题 实验 编程作业 第3章 简单排序 如何排序? 冒泡排序 选择排序 插入排序 对象排序 几种简单排序之间的比较 小结 问题 实验 编程作业 第4章 栈和队列 不同的结构类型 栈 队列 优先级队列 解析算术表达式 小结 问题 实验 编程作业 第5章 链表 链结点(Link) LinkList专题Applet 单链表 查找和删除指定链结点 双端链表 链表的效率 抽象数据类型 有序链表 双向链表 迭代器 小结 问题 实验 编程作业 第6章 递归 三角数字 阶乘 变位字 递归的二分查找 汉诺(Hanoi)塔问题 归并排序 消除递归 一些有趣的递归应用 小结 问题 实验 编程作业 第7章 高级排序 希尔排序 划分 快速排序 基数排序 小结 问题 实验 编程作业 第8章 二叉树 为什么使用二叉树? 树的术语 一个类比 二叉搜索树如何工作 查找节点 插入一个节点 遍历树 查找最大值和最小值 删除节点 二叉树的效率 用数组表示树 重复关键字 完整的tree.java程序 哈夫曼(Huffman)编码 小结 问题 实验 编程作业 第9章 红-黑树 第10章 2-3-4树和外部存储 第11章 哈希表 第12章 堆 第13章 图 第14章 带权图 第15章 应用场合 附录A 运行专题applet和示例程序 附录B 进一步学习 附录C 问题答案

亚马逊链接

基本信息

名称: Beginning iPad Application Development
作者信息: 作者: 李伟萌 (Lee Wei Meng) [ 中文 pdf ]

简单介绍

“Beginning iPad Application Development” provides a comprehensive, hands-on approach to iPad development for aspiring iPad developers. The book is divided into three main parts: Part One walks the reader through developing their first iPad application while familiarizing the reader with Cocoa, Cocoa Touch, the iPhone and iPad SDK and the Xcode tools. Part Two will focus on the features and syntax of the Objective-C language which is essential for creating many iPad applications. Part Three will focus specifically on the features of the iPad and iPhone/iPad SDK and how the reader can best implement each of these features in their applications.

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
Introduction.   Part I Getting Started. 

Chapter 1 Getting Started with iPad Programming.


Chapter 2 Write Your First Hello World! Application.


Chapter 3 Views, Outlets, and Actions.


Chapter 4 View Controllers.


Chapter 5 Keyboard Inputs.


Chapter 6 Screen Rotations.


Part II Di splaying and Persisting Data?


Chapter 7 Using the Table View.


Chapter 8 Application Preferences.


Chapter 9 File Handling.


Chapter 10 Database Storage Using SQLite3.


Part III advanced ip ad programming techniques.


Chapter 11 Simple Animations.


Chapter 12 Recognizing Gestures.


Chapter 13 Accessing the Accelerometer.


Part IV Network Programming.


Chapter 14 Web Services.


Chapter 15 Bluetooth Programming.


Chapter 16 Bonjour Programming.


Chapter 17 Apple Push Notification Services.


Chapter 18 Displaying Maps.


Part V Appendices.


Appendix A Answers to Exercises.


Appendix B Getting Around in Xcode.


Appendix C Getting Around in Interface Builder.


Appendix D Crash Course in Objective-C.


Index.

亚马逊链接

基本信息

名称: Java网络编程(第3版)
作者信息: 作者: 哈诺德 [ 中文 pdf ]

简单介绍

《Java网络编程》不仅仅是对API的解释:它还展示了如何使用API。《Java网络编程》(第3版)有很多示例,包含了几千行可以实际工作的代码(所有代码都可以在线获得),实现了功能完整的网络客户端和服务器。无论是希望编写特殊用途的Web服务器、安全的在线订单接收程序、简单的组播代理还是电子邮件客户端,都会找到可供学习和借用的代码。 无论你是经验丰富的网络开发人员、Java程序员新手,还是只希望对Java网络编程稍有些了解的人,都会发现《Java网络编程》(第3版)将成为你的书库中一个重要的部分。一旦开始使用Java网络API,只要你能想到它就能够做得到。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
前  言
第一章 Java网络编程的原因
网络程序的功能
安全性
等等!还有更多!
第二章 基本网络概念
网络
网络的分层
IP、TCP和UDP
Internet
客户/服务器模型
Internet标准
第三章 基本Web概念
URI
HTML、SGML和XML
HTTP
MIME媒体类型
服务器端程序
第四章 流
输出流
输人流
过滤器流
阅读器和书写器
第五章 线程
运行线程
返回线程中的信息
同步
死锁
线程调度
线程池
第六章 查找Internet地址
InetAddress类
Inet4Address和Inet6Address
NetworkInterface类
一些有用的程序
第七章 U R L和U R I
URL类
URLEncoder和URLDecoder类
URI类
代理
通过GET方法与服务器端程序通信
访问受口令保护的网站
第八章 Swing中的HTM L
组件上的HTML
JEditorPane
解析HTML
coOkie一
第九章 客户端Socket
socket基础
用Telnet研究协议
Socket类
Socket异常
Socket地址
示例
第十章 服务器socket
ServerSocket类
一些有用的服务器
第十一章安全Socket
保护通信
创建安全客户端socket
SsLSocket类的方法
创建安全的服务器socket
SSLSerVerSocket类的方法
第十二章 非阻塞I/O。
一个示例客户端
一个示例服务器
缓冲区
通道
就绪选择
第十三章 UDP数据报和Socket
UDP协议
DatagramPacket类
DatagramSocket类
一些有用的应用程序
DatagramChannel
第十四章 组播socket
何为组播socket?
使用组播socket
两个简单示例
第十五章 URLConnection
打开URLConnection
读取服务器的数据
读取首部
配置连接
配置客户端的请求HTTP首部
向服务器写入数据
内容处理器
0bject方法
URLConnection的安全考虑
猜测MIME内容类型
HttpURLCOnnectiOn
缓存
JarURLCOnnectiOn
第十六章 协议处理器
何为协议处理器7
URLStreamHandler类
编写协议处理器
更多协议处理器示例和技术
URLStreamHandlerFactory接口
第十七章 内容处理器
何为内容处理器7
ContentHandler类
ContentHandlerFactory接口
FITS图片格式的内容处理器
第十八 章远程方法调用
何为远程方法调用7
实现
在运行时加载类
java rmi包
jaVarmiregistry包
javarmiserver包
第十九章 JavaMailAPI
何为JavaMail API?
发送电子邮件一
接收邮件
口令认证
地址一
URLName类
Message类
Part接口
多部分消息和附件
MIME消息
文件夹

亚马逊链接

基本信息

名称: Head First Java(中文版)(第2版)(涵盖Java5.0)
作者信息: 作者: 塞若 [ 中文 pdf ]

简单介绍

《Head First Java(中文版)(第2版)(涵盖Java5.0)》的图文并茂学习方式能让你快速地在脑海中掌握住知识。敞开心胸准备好学习这些关键性的主题:Java程序语言;面向对象程序开发;Swing图形化接口;使用Java API函数库;编写、测试与布署应用程序;处理异常;多线程;网络程序设计;集合与泛型。如果你想要看“一本正经”的书,去找其他的。但如果你真地想要好好地学习Java,你会需要《Head First Java》。这本书可是Amazon编辑推荐的十大好书之一!

目录

1
序 1 进入Java的世界 Java的工作方式 Java的程序结构 剖析类 main()方法 循环 条件分支 设计程序 术语制造机 谈话录 习题 2 拜访对象村 椅子大战 继承 覆盖 什么是类? 创建你的第一个对象 使用main() 猜数字 习题 3 认识变量 声明变量 Primitive主数据类型 Java关键字 引用变量 对象的声明与赋值 可回收堆空间 数组 习题 4 对象的行为 操作对象状态的方法 方法参数与返回类型 值传递 Getters与Setters 封装 数组中的引用 习题 5 超强力方法 创建战舰游戏 简单版 编写伪码 测试 编写程序 完成版 用Math.random()产生随机数 预先输入好的程序 循环 类型转换 用Integer.parseInt()转换字符串 习题 6 使用Java函数库 7 对象村的优质生活 8 深入多态 9 对象的前世今生 10 数字很重要 11 有风险的行为 12 看图说故事 13 使用Swing 14 保存对象 15 网络联机 16 数据结构 17 发布程序 18 分布式计算 附录A:程序料理决定版 附录B:十大遗珠之憾 索引

亚马逊链接

基本信息

名称: 数据结构与算法分析 Java语言描述(第2版)
作者信息: 作者: 韦斯 (Mark Allen Weiss) [ 中文 pdf ]

简单介绍

《数据结构与算法分析:Java语言描述(第2版)》的特色如下:全面阐述新的Java 5.0编程语言和Java Collections库。改进内部设计,用图和实例阐述算法的实施步骤。第3章对表、栈和队列的讨论进行了全面修订。用一章专门讨论摊还分析和一些高级数据结构的实现。每章末尾的大量练习按照难易程度编排,以增强对关键概念的理解。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
译者序
前言
第1章 引论
1.1 本书讨论的内容
1.2 数学知识复习
1.2.1 指数
1.2.2 对数
1.2.3 级数
1.2.4 模运算
1.2.5 证明的方法
1.3 递归简论
1.4 实现泛型特性构件pre-Java5
1.4.1 使用Object表示泛型
1.4.2 基本类型的包装
1.4.3 使用接口类型表示泛型
1.4.4 数组类型的兼容性
1.5 利用Java5泛性实现泛型特性成分
1.5.1 简单的泛型类和接口
1.5.2 自动装箱/拆箱
1.5.3 带有限制的通配符
1.5.4 泛型static方法
1.5.5 类型限界
1.5.6 类型擦除
1.5.7 对于泛型的限制
1.6 函数对象
小结
练习
参考文献
第2章 算法分析
2.1 数学基础
2.2 模型
2.3 要分析的问题
2.4 运行时间计算
2.4.1 一个简单的例子
2.4.2 一般法则
2.4.3 最大子序列和问题的求解
2.4.4 运行时间中的对数
2.4.5 检验你的分析
2.4.6 分析结果的准确性
小结
练习
参考文献
第3章 表、栈和队列
3.1 抽象数据类型
3.2 表ADT
3.2.1 表的简单数组实现
3.2.2 简单链表
3.3 Java Collections API中的表
3.3.1 Collection接口
3.3.2 Iterator接口
3.3.3 List接口、ArrayList类和LinkedList类
3.3.4 例:remove方法对LinkedList类的使用
3.3.5 关于ListIterator接口
3.4 ArrayList类的实现
3.4.1 基本类
3.4.2 迭代器、Java嵌套类和内部类
3.5 Linked List类的实现
3.6 栈ADT
3.6.1 栈模型
3.6.2 栈的实现
3.6.3 应用
3.7 队列ADT
3.7.1 队列模型
3.7.2 队列的数组实现
3.7.3 队列的应用
小结
练习
第4章 树
4.1 预备知识
4.1.1 树的实现
4.1.2 树的遍历及应用
4.2 二叉树
4.2.1 实现
4.2.2 例子:表达式树
4.3 查找树ADT——二叉查找树
4.3.1 contains方法
4.3.2 findMin方法和findMax方法
4.3.3 insert方法
4.3.4 remove方法
4.3.5 平均情况分析
4.4 AVL树
4.4.1 单旋转
4.4.2 双旋转
4.5 伸展树
4.5.1 一个简单的想法(不能直接使用)
4.5.2 展开
4.6 树的遍历
4.7 B树
4.8 标准库中的集合与映射
4.8.1 关于Set接口
4.8.2 关于Map接口
4.8.3 TreeSet类和TreeMap类的实现
4.8.4 使用多个映射的例
小结
练习
参考文献
第5章 散列
5.1 一般想法
5.2 散列函数
5.3 分离链接法
5.4 不用链表的散列表
5.4.1 线性探测法
5.4.2 平方探测法
5.4.3 双散列
5.5 再散列
5.6 标准库中的散列表
5.7 可扩散列
小结
练习
参考文献
第6章 优先队列(堆)
6.1 模型
6.2 一些简单的实现
6.3 二叉堆
6.3.1 结构性质
6.3.2 堆序性质
6.3.3 基本的堆操作
6.3.4 其他的堆操作
6.4 优先队列的应用
6.4.1 选择问题
6.4.2 事件模拟
6.5 d-堆
6.6 左式堆
6.6.1 左式堆性质
6.6.2 左式堆操作
6.7 斜堆
6.8 二项队列
6.8.1 二项队列结构
6.8.2 二项队列操作
6.8.3 二项队列的实现
6.9 标准库中的优先队列
小结
练习
参考文献
第7章 排序
7.1 预备知识
7.2 插入排序
7.2.1 算法
7.2.2 插入排序的分析
7.3 一些简单排序算法的下界
7.4 希尔排序
7.5 堆排序
7.6 归并排序
7.7 快速排序
7.7.1 选取枢纽元
7.7.2 分割策略
7.7.3 小数组
7.7.4 实际的快速排序例程
7.7.5 快速排序的分析
7.7.6 选择问题的线性期望时间算法
7.8 排序算法的一般下界
7.9 桶式排序
7.10 外部排序
7.10.1 为什么需要一些新的算法
7.10.2 外部排序模型
7.10.3 简单算法
7.10.4 多路合并
7.10.5 多相合并
7.10.6 替换选择
小结
练习题
参考文献
第8章 不相交集类
8.1 等价关系
8.2 动态等价性问题
8.3 基本数据结构
8.4 灵巧求并算法
8.5 路径压缩
8.6 路径压缩和按秩求并的最坏情形
8.7 一个应用
小结
练习题
参考文献
第9章 图论算法
9.1 若干定义
9.2 拓扑排序
9.3 最短路径算法
9.3.1 无权最短路径
9.3.2 Dijkstra算法
9.3.3 具有负边值的图
9.3.4 无圈图
9.3.5 所有点对最短路径
9.3.6 最短路径的例子
9.4 网络流问题
9.5 最小生成树
9.5.1 Prim算法
9.5.2 Kruskal算法
9.6 深度优先搜索的应用
9.6.1 无向图
9.6.2 双连通性
9.6.3 欧拉回路
9.6.4 有向图
9.6.5 查找强分支
9.7 NP完全性介绍
9.7.1 难与易
9.7.2 NP类
9.7.3 NP完全问题
小结
练习
参考文献
第10章 算法设计技巧
10.1 贪婪算法
10.1.1 一个简单的调度问题
10.1.2 哈夫曼编码
10.1.3 近似装箱问题
10.2 分治算法
10.2.1 分治算法的运行时间
10.2.2 最近点问题
10.2.3 选择问题
10.2.4 一些算术问题的理论改进
10.3 动态规划
10.3.1 用一个表代替递归
10.3.2 矩阵乘法的顺序安排
10.3.3 最优二叉查找树
10.3.4 所有点对最短路径
10.4 随机化算法
10.4.1 随机数发生器
10.4.2 跳跃表
10.4.3 素性测试
10.5 回溯算法
10.5.1 收费公路重建问题
10.5.2 博弈
小结
练习
参考文献
第11章 摊还分析
11.1 一个无关的智力问题
11.2 二项队列
11.3 斜堆
11.4 斐波那契堆
11.4.1 切除左式堆中的节点
11.4.2 二项队列的懒惰合并
11.4.3 斐波那契堆操作
11.4.4 时间界的证明
11.5 伸展树
小结
练习
参考文献
第12章 高级数据结构及其实现
12.1 自顶向下伸展树
12.2 红黑树
12.2.1 自底向上的插入
12.2.2 自顶向下红黑树
12.2.3 自顶向下的删除
12.3 确定性跳跃表
12.4 AA树
12.5 treap树
12.6 k-d树
12.7 配对堆
小结
练习
参考文献
索引

亚马逊链接

基本信息

名称: JAVA核心技术卷2 高级特征
作者信息: 作者: 霍斯特曼 (Cay S.Horstmann) [ 英文 pdf ]

简单介绍

《JAVA核心技术卷2:高级特征》涵盖了Java SE 6平台的高级用户界面程序设计和企业特性。与第1卷(涵盖了核心的语言和类库特性)一样,本卷已经更新到了Java SE6。并且对新内容都作了重点标注。书中所有的示例程序都进行了详细的设计,用来演示最新的编程技术。并展示针对专业开发者在现实中所碰到的典型问题的最佳解决方案。《JAVA核心技术卷Ⅱ:高级特征》包含有关StAX API、JDBC 4、编译器API、脚本框架、闪屏和托盘API以及其他许多Java SE6改进特性的新章节。《JAVA核心技术卷2:高级特征》聚焦于Java语言中更高级的特性,包括下列内容:流与文件、网络、数据库编程、XML、JNDI与LDAP、国际化、高级GUI组件、Java 2D、JavaBeans、安全、RMI与Web服务、高级AWT、注解、本地方法。关于Java基础知识的讨论,包括接口与内部类、使用Swing的GUI编程、异常处理.泛型.集合和并发。读者可以查阅《Java核心技术,卷I:基础知识(原书第8版)》(ISBN:978-7-111-23950-5)。2006、2007年度CSDN、《程序员》杂志社、China-pub评选的十大IT技术图书之一、众多专业Java程序员启蒙读物、CSDN Java大版主等专家隆重推荐。针对Java SE 6平台进行了全面更新。涵盖Java语言高级特性。精心设计大量代码示例。与《Java编程思想》齐名的Java图书泰山北斗。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
第一章 流与文件
1.1 流
1.1.1 读入和写出字节
1.1.2 完整的流家族
1.1.3 组合流过滤器
1.2 文本输入与输出
1.2.1 如何写出文本输出
1.2.2 如何读入文本输入
1.2.3 以文本格式存储对象
1.2.4 字符集
1.3 读入和写出二进制数据
1.3.1 随机访问文件
1.4 ZIP文档
1.5 对象流与序列化
1.5.1 理解对象序列化的文件格式
1.5.2 修改缺省的序列化机制
1.5.3 序列化单例和类型安全的枚举
1.5.4 版本管理
1.5.5 为克隆使用序列化
1.6 文件管理
1.7 新I/O
1.7.1 内存映射文件
1.7.2 缓冲区数据结构
1.7.3 文件加锁机制
1.8 正则表达式

第二章 XML 2.1 XML概述 2.1.1 XML文档的结构 2.2 解析XML文档 2.3 验证XML文档 2.3.1 文档类型定义 2.3.2 XML Schema 2.3.3 实用示例 2.4 使用XPath来定位信息 2.5 使用名字空间 2.6 流机制解析器 2.6.1 使用SAX解析器 2.6.2 使用StAX解析器 2.7 生成XML文档 2.7.1 使用StAX写出XML文档 2.8 XSL转换

第三章 网络 3.1 连接到服务器 3.1.1 套接字超时 3.1.2 因特网地址 3.2 实现服务器 3.2.1 为多个客户端服务 3.2.2 半关闭 3.3 可中断套接字 3.4 发送E-Mail 3.5 建立URL连接 3.5.1 URL和URI 3.5.2 使用URL Connection获取信息 3.5.3 提交表单数据

第四章 数据库编程 4.1 JDBC的设计 4.1.1 JDBC驱动程序类型 4.1.2 JDBC的典型用法 4.2 结构化查询语言 4.3 JDBC配置 4.3.1 数据库URL 4.3.2 驱动程序JAR文件 4.3.3 启动数据库 4.3.4 注册驱动器类 4.3.5 连接到数据库 4.4 执行SQL语句 4.4.1 管理连接、语句和结果集 4.4.2 分析SQL异常 4.4.3 组装数据库 4.5 执行查询操作 4.5.1 预备语句 4.5.2 读取和写出LOB 4.5.3 SQL转义 4.5.4 多结果集 4.5.5 获取自动生成键 4.6 可滚动和可更新的结果集 4.6.1 可滚动的结果集 4.6.2 可更新的结果集 4.7 行集 4.7.1 被缓存的行集 4.8 元数据 4.9 事务 4.9.1 保存点 4.9.2 批量更新 4.9.3 高级SQL类型 4.10 Web与企业应用中的连接管理 4.11 LDAP介绍 4.11.1 配置LDAP服务器 4.11.2 访问LDAP目录信息

第五章 国际化 5.1 Locales 5.2 数字格式 5.2.1 货币 5.3 日期和时间 5.4 排序 5.4.1 排序强度 5.4.2 分解 10.5 消息格式化 10.5.1 选择格式 10.6 文本文件和字符集 10.6.1 源文件的字符编码 10.7 资源包 10.7.1 定位资源包 10.7.2 属性文件 10.7.3 包类 10.8 一个完整的例子

第六章 高级Swing 6.1 列表 6.1.1 JList构件 6.1.2 列表模式 6.1.3 插入和移除值 6.1.4 值的绘制 6.2 表格 6.2.1 简单表格 6.2.2 表格模型 6.2.3对行和列的操作 6.3 树 6.3.1 简单的树 6.3.2 结点枚举 6.2.3 绘制结点 6.2.4 监听树事件 6.2.5 定制树模型 6.4 文本构件 6.4.1 文本构件中的修改跟踪 6.4.2 格式化的输入框 6.4.3 JSpinner构件 6.4.4 用JEditor Pane显示HTML 6.5 进度指示器 6.5.1 进度条 6.5.2 进度监视器 6.5.3 监视输入流的进度 6.6 构件组织器 6.6.1 分割面板 6.6.2 选项卡面板 6.6.3 桌面面板和内部框体 6.6.4 级联与平铺 6.6.5 否决属性设置

第七章 高级 AWT 7.1 绘图操作流程 7.2 形状 7.2.1 使用形状类 7.3 区域 7.4 笔划 7.5 着色 7.6 坐标变换 7.7 剪切 7.8 透明与组合 7.9 绘图提示 7.10 图像的读取器和写入器 7.10.1 获得图像文件类型的读取器和写入器 7.10.2 读取和写入带有多个图像的文件 7.11 图像处理 7.11.1 构建光栅图像 7.11.2 图像过滤 7.12 打印 7.12.1 图形打印 7.12.2 打印多页文件 7.12.3 打印预览 7.12.4 打印服务程序 7.12.5 流打印服务程序 7.12.6 打印属性 7.13 剪贴板 7.13.1 数据传递的类和接口 7.13.2 传递文本 7.13.3 可传递的接口和数据风格 7.13.4 构建一个可传递的图像 7.13.5 通过系统剪贴板传递Java对象 7.13.6 使用本地剪贴板来传递对象引用 7.14 拖放操作 7.14.1 Swing对数据传递的支持 7.14.2 拖曳源 7.14.3 放置目标 7.15 平台集成 7.15.1 闪屏 7.15.2 启动桌面应用程序 7.15.3 系统托盘

第八章 JavaBean构件 8.1 为何是Bean? 8.2 编写Bean的过程 8.3 使用Bean构造应用程序 8.3.1 将Bean打包成JAR文件 8.3.2 在开发环境中组合Bean 8.4 Bean属性与事件的命名模式 8.5 Bean属性的类型 8.5.1 简单属性 8.5.2 索引属性 8.5.3 绑定属性 8.5.4 约束属性 8.6 BeanInfo类 8.7 属性编辑器 8.7.1 编写一个属性编辑器 8.8 定制器 8.8.1 编写一个定制器类 8.9 JavaBean持久化 8.9.1 JavaBean持久化可用于任何数据 8.9.2 一个JavaBean持久化的完整示例

第九章 安全 9.1 类加载器 9.1.1 类加载器的层次结构 9.1.2 将类加载器作为命名空间 9.1.3 编写你自己的类加载器 9.2 字节码校验 9.3 安全管理器与访问权限 9.3.1 Java平台安全性 9.3.2 安全策略文件 9.3.3 定制权限 9.3.4 实现权限类 9.4 用户认证 9.4.1 JAAS 登录模块 9.5 数字签名 9.5.1 消息摘要 9.5.2 消息签名 9.5.3 X.509证书格式 9.5.4 校验签名 9.5.5 认证问题 9.5.6 证书签名 9.5.7 证书请求 9.6 代码签名 9.6.1 JAR文件签名 9.6.2 软件开发者证书 9.7 加密 9.7.1 对称密码 9.7.2 密钥生成 9.7.3 密码流 9.7.4 公共密钥密码

第十章 分布式对象 10.1 客户与服务器的角色 10.2 远程方法调用 10.2.1 存根与参数编组 10.3 配置远程方法调用 10.3.1 接口与实现 10.3.2 RMI注册表 10.3.3 部署程序 10.3.4 记录RMI活动 10.4 远程方法中的参数和返回值 10.4.1 传递远程对象 10.4.2 传递非远程对象 10.4.3 动态类加载 10.4.4 具有多重接口的远程引用 10.4.5 远程对象与equals、hash Code和clone方法 10.5 远程对象激活 10.6 Web Services与JAX-WS 10.6.1 使用JAX-WS 10.6.2 Web服务的客户端 10.6.3 Amazon的E-Commerce服务

第十一章 脚本、编译与注解处理 11.1 Java平台的脚本 11.1.1 获取脚本引擎 11.1.2 脚本赋值与绑定 11.1.3 重定向输入和输出 11.1.4 调用脚本的函数和方法 11.1.5 编译脚本 11.1.6 一个示例:用脚本处理GUI事件 11.2 编译器API 11.2.1 编译便捷之法 11.2.2 使用编译工具 11.2.3 一个示例:动态Java代码生成 11.3 使用注解 11.3.1 一个示例:注解事件处理器 11.4 注解语法 11.5 标准注解 11.5.1 用于编译的注解 11.5.2 用于管理资源的注解 11.5.3 元注解 11.6 源码级注解处理 11.7 字节码工程 11.7.1 载入时修改字节码

第十二章 本地方法 12.1 从Java程序中调用C函数 12.2 数值参数与返回值 12.2.1 用printf格式化数字 12.3 字符串参数 12.4 访问对象域 12.4.1 访问实例域 12.4.2 访问静态域 12.5 编码签名 12.6 调用Java方法 12.6.1 实例方法 12.6.2 静态方法 12.6.3 构造器 12.6.4 替代方法调用 12.7 访问数组元素 12.8 错误处理 12.9 使用调用API 12.10 完整的示例:访问Windows注册表 12.10.1 Windows注册表概述 12.10.2 访问注册表的Java平台接口 12.10.3 以本地方法方式实现注册表访问函数

亚马逊链接

基本信息

名称: Java编程思想(第4版)
作者信息: 作者: 埃史尔 [ 中文 pdf ]

简单介绍

《Java编程思想(第4版)》获奖历史:·2003年《Software Development》杂志最佳书籍Jolt大奖·2003年《Java Developer’s Journal》读者选择最佳书籍奖·2001年《Java World》编辑选择最佳书籍奖·2000年《Java World》读者选择最佳书籍奖·1999年《Software Development》杂志最佳产品奖·1998年《Java Developer’s Journal》编辑选择最佳书籍奖

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
读者评论
前言
简介
第1章 对象导论
1.1 抽象过程
1.2 每个对象都有一个接口
1.3 每个对象都提供服务
1.4 被隐藏的具体实现
1.5 复用具体实现
1.6 继承
1.6.1 “是一个”(is-a)与“像是一个”(is-like-a)关系
1.7 伴随多态的可互换对象
1.8 单根继承结构
1.9 容器
1.9.1 参数化类型(范型)
1.10 对象的创建和生命期
1.11 异常处理:处理错误
1.12 并发编程
1.13 Java与Internet
1.13.1 Web是什么
1.13.2 客户端编程
1.13.3 服务器端编程
1.22 总结
第2章 一切都是对象
2.1 用引用操纵对象
2.2 必须由你创建所有对象
2.2.1 存储到什么地方
2.2.2 特例:基本类型
2.2.3 Java中的数组
2.3 永远不需要销毁对象
2.3.1 作用域
2.3.2 对象的作用域
2.4 创建新的数据类型:类
2.4.1 域和方法
2.4.2 基本成员默认值
2.5 方法、参数和返回值
2.5.1 参数列表
2.6 构建一个Java程序
2.6.1 名字可见性
2.6.2 运用其他构件
2.6.3 static 关键字
2.7 你的第一个Java程序
编译和运行
2.8 注释和嵌入式文档
2.8.1 注释文档
2.8.2 语法
2.8.3 嵌入式HTML
2.8.4 一些标签示例
2.8.5 文档示例
2.9 编码风格
2.10 总结
2.11 练习
第3章 操作符
3.1 更简单的打印语句
3.2 使用Java操作符
3.3 优先级
3.4 赋值
3.4.1 方法调用中的别名问题
3.5 算术操作符
3.5.1 一元加、减操作符
3.6 自动递增和递减
3.7 关系操作符
3.7.1 测试对象的等价性
3.8 逻辑操作符
3.8.1 短路
3.9 直接常量
3.9.1 指数记数法
3.10 按位操作符
3.11 移位操作符
3.12 三元操作符 if-else
3.13 字符串操作符 + 和 +=
3.14 使用操作符时常犯的错误
3.15 类型转换操作符
3.15.1 截尾和舍入
3.15.2提升
3.16 Java没有“sizeof”
3.17 操作符小结
3.18 总结
第4章 控制执行流程
4.1 true和false
4.2 if-else
4.3 迭代
4.3.1 do-while
4.3.2 for
4.3.3 逗号操作符
4.4 Foreach语法
4.5 return
4.6 break和 continue
4.7 臭名昭著的“goto”
4.8 switch
4.9 总结
第5章 初始化与清理
5.1 用构造器确保初始化
5.2 方法重载
5.2.1 区分重载方法
5.2.2 涉及基本类型的重载
5.2.3 以返回值区分重载方法
5.3 缺省构造器
5.4 this关键字
5.4.1 在构造器中调用构造器
5.4.2 static的含义
5.5 清理:终结处理和垃圾回收
5.5.1 finalize()的用途何在
5.5.2 你必须实施清理
5.5.3 终结条件
5.5.4 垃圾回收器如何工作
5.6 成员初始化
5.6.1 指定初始化
5.7 构造器初始化
5.7.1 初始化顺序
5.7.2. 静态数据的初始化
5.7.3. 显式的静态初始化
5.7.4. 非静态实例初始化
5.8 数组初始化
5.8.1 可变参数列表
5.9 枚举类型
5.10 总结
第6章 访问权限控制
第7章 复用类
第8章 多态
第9章 接口
第10章 内部类
第11章 持有对象
第12章 通过异常处理错误
第13章 字符串
第14章 类型信息
第15章 泛型
第16章 数组
第17章 容器深入研究
第18章 Java I/O系统
第19章 枚举类型
第20章 注解
第21章 并发
第22章 图形化用户界面
附录A 补充材料
可下载的补充材料
Thinking in C:Java的基础
Java编程思想 研讨课
Hands-on Java研讨课CD
Thinking in Objects研讨课
Thinking in Enterprise Java
Thinking in Patterns(with Java)
Thinking in Patterns研讨课
设计咨询与复审
附录B 资源
软件
编辑器与IDE
书籍
分析与设计
Python
我的著作列表
索引

亚马逊链接

基本信息

名称: Sun 公司核心技术丛书 Effective Java中文版(第2版)
作者信息: 作者: Joshua Bloch [ 中文 pdf ]

简单介绍

《Sun 公司核心技术丛书:Effective Java中文版(第2版)》内容全面,结构清晰,讲解详细。可作为技术人员的参考用书。编码平添乐趣,程序更加完美,高效成为习惯,工作如此轻松。你是否正在寻找一本能够更加深入地了解Java编程语言的书,以便编写出更清晰、更正确、更健壮且更易于重用的代码。不用找了!《Sun 公司核心技术丛书:Effective Java中文版(第2版)》为我们带来了共78条程序员必备的经验法则,针对你每天都会遇到的编程问题提出了最有效、最实用的解决方案。这本经典Jolt获奖作品实属众望所归。作者对新版进行了彻底的更新。涵盖了自第l版之后所引入的Java E5和Java SE 6的特性,同时开发了新的设计模式和语言习惯用法,介绍了如何充分利用从泛型到枚举、从注解到自动装箱的各种特性。每一章都包含几个“条目”,以简洁的形式呈现,自成独立的短文,它们提出了具体的建议,对于Java平台精妙之处的独到见解,以及优秀的代码范例。每个条目的综合描述和解释都阐明了应该怎么做,不应该怎么做,以及为什么。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
译者序

前言
致谢
第1章 引言
第2章 创建和销毁对象
第1条:考虑用静态工厂方法代替构造器
第2条:遇到多个构造器参数时要考虑用构建器
第3条:用私有构造器或者枚举类型强化Singleton属性
第4条:通过私有构造器强化不可实例化的能力
第5条:避免创建不必要的对象
第6条:消除过期的对象引用
第7条:避免使用终结方法

第3章 对于所有对象都通用的方法 第8条:覆盖equals时请遵守通用约定 第9条:覆盖equals时总要覆盖hashCode 第10条:始终要覆盖toString 第11条:谨慎地覆盖clone 第12条:考虑实现Comparable接口

第4章 类和接口 第13条:使类和成员的可访问性最小化 第14条:在公有类中使用访问方法而非公有域 第15条:使可变性最小化 第16条:复合优先于继承 第17条:要么为继承而设计,并提供文档说明,要么就禁止继承 第18条:接口优于抽象类 第19条:接口只用于定义类型 第20条:类层次优于标签类 第21条:用函数对象表示策略 第22条:优先考虑静态成员类

第5章 泛型 第23条:请不要在新代码中使用原生态类型 第24条:消除非受检警告 第25条:列表优先于数组 第26条:优先考虑泛型 第27条:优先考虑泛型方法 第28条:利用有限制通配符来提升API的灵活性 第29条:优先考虑类型安全的异构容器

第6章 枚举和注解 第30条:用enum代替int常量 第31条:用实例域代替序数 第32条:用EnumSet代替位域 第33条:用EnumMap代替序数索引 第34条:用接口模拟可伸缩的枚举 第35条:注解优先于命名模式 第36条:坚持使用Override注解 第37条:用标记接口定义类型

第7章 方法 第38条:检查参数的有效性 第39条:必要时进行保护性拷贝 第40条:谨慎设计方法签名 第41条:慎用重载 第42条:慎用可变参数 第43条:返回零长度的数组或者集合,而不是:null 第44条:为所有导出的API元素编写文档注释

第8章 通用程序设计 第45条:将局部变量的作用域最小化 第46条:for-each循环优先于传统的for循环 第47条:了解和使用类库 第48条:如果需要精确的答案,请避免使用float和double 第49条:基本类型优先于装箱基本类型 第50条:如果其他类型更适合,则尽量避免使用字符串 第51条:当心字符串连接的性能 第52条:通过接口引用对象 第53条:接口优先于反射机制 第54条:谨慎地使用本地方法 第55条:谨慎地进行优化 第56条:遵守普遍接受的命名惯例

第9章 异常 第57条:只针对异常的情况才使用异常 第58条:对可恢复的情况使用受检异常,对编程错误使用运行时异常 第59条:避免不必要地使用受检的异常 第60条:优先使用标准的异常 第61条:抛出与抽象相对应的异常 第62条:每个方法抛出的异常都要有文档 第63条:在细节消息中包含能捕获失败的信息 第64条:努力使失败保持原子性 第65条:不要忽略异常

第10章 并发 第66条:同步访问共享的可变数据 第67条:避免过度同步 第68条:executor和task优先干线程 第69条:并发工具优先于wait和notify 第70条:线程安全性的文档化 第71条:慎用延迟初始化 第72条:不要依赖于线程调度器 第73条:避免使用线程组

第11章 序列化 第74条:谨慎地实现Serializable接口 第75条:考虑使用自定义的序列化形式 第76条:保护性地编写readObject方法 第77条:对于实例控制,枚举类型优先于readResolve 第78条:考虑用序列化代理代替序列化实例

附录 第1版与第2版条目对照 中英文术语对照 参考文献

亚马逊链接

基本信息

名称: Struts 2.1权威指南
作者信息: 作者: 浏览全部评论 [ 中文 pdf ]

简单介绍

《Struts 2.1权威指南》特点为:1.经验丰富,针对性强《Struts 2.1权威指南》凝聚了作者大量的实际开发经验和感悟。作者依照读者的学习规律,首先介绍基本概念和基本操作,然后对内容进行深入讲解。2.讲解具体,示范典型书中通过大量的示范性实例(全书范例近百个),逐一、详细地讲解了Struts2各知识点的用法,并细致地讲解每个用法的各种参数、选项,可以帮助读者入门到精通。3.配合案例,快速提高《Struts 2.1权威指南》最后配备了几个非常常见的案例,可以让读者在掌握前而的基础知识点的情况下,将所有知识融会贯通,把基础知识点应用项目开发过程中。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
第1章  Struts 2概述 1
1.1 MVC思想概述 2
1.1.1 Web技术的发展 2
1.1.2 Model 1和Model 2 4
1.1.3 MVC思想及其优势 6
1.1.4 常用的MVC框架 7
1.2 Struts 2的起源和背景 8
1.2.1 Struts 1简介及存在的问题 9
1.2.2 WebWork简介 12
1.2.3 Struts 2起源 15
1.3 Struts 2体系介绍 16
1.3.1 Struts 2框架架构 16
1.3.2 Struts 2的配置文件 17
1.3.3 Strut 2的标签库 18
1.3.4 Struts 2的控制器组件 19
1.4 Struts 2与Struts 1的对比 20
1.5 WebWork和Struts 2对比 21
1.6 本章小结 22

第2章 Struts 2下的HelloWorld 23 2.1 下载和安装Struts 2框架 23 2.2 从用户请求开始 25 2.3 创建Struts 2的Web应用 27 2.3.1 创建Web应用 27 2.3.2 增加Struts 2功能 28 2.4 实现控制器 28 2.4.1 实现控制器类 29 2.4.2 配置Action 30 2.4.3 增加视图资源完成应用 30 2.5 改进控制器 32 2.5.1 实现Action接口 32 2.5.2 跟踪用户状态 33 2.5.3 添加处理信息 35 2.5.4 输出处理信息 37 2.6 改进视图组件 39 2.6.1 改善输出页面 39 2.6.2 使用UI标签简化表单页面 40 2.7 完成程序国际化 42 2.7.1 定义国际化资源文件 42 2.7.2 加载资源文件 43 2.7.3 输出国际化信息 44 2.8 增加数据校验 46 2.8.1 继承ActionSupport 46 2.8.2 使用Struts 2的校验框架 49 2.9 本章小结 51

第3章 Struts 2基础 52 3.1 WebWork的MVC实现 52 3.1.1 WebWork的下载和安装 53 3.1.2 实现Action 53 3.1.3 配置Action 56 3.1.4 完成数据校验 58 3.1.5 完成应用流程 59 3.2 在Eclipse中开发Struts 2 60 3.2.1 创建Web应用 61 3.2.2 增加Struts 2支持 63 3.2.3 部署Struts 2应用 64 3.2.4 增加应用的Action 65 3.3 Struts 2的基本流程 66 3.3.1 核心控制器:FilterDispatcher 66 3.3.2 业务控制器 67 3.3.3 Struts 2的模型组件 67 3.3.4 Struts 2的视图组件 68 3.3.5 Struts 2的运行流程 68 3.4 Struts 2的基本配置 69 3.4.1 配置web.xml文件 69 3.4.2 struts.xml配置文件 71 3.4.3 struts.properties配置文件 74 3.4.4 struts.xml文件结构 78 3.5 本章小结 82

第4章 深入Struts 2 83 4.1 深入Struts 2的配置文件 83 4.1.1 Bean配置 84 4.1.2 常量配置 85 4.1.3 包配置 87 4.1.4 命名空间配置 89 4.1.5 包含配置 91 4.1.6 拦截器配置 91 4.2 Struts 2的Action 92 4.2.1 实现Action处理类 92 4.2.2 Action访问Servlet API 97 4.2.3 Action直接访问Servlet API 100 4.2.4 配置Action 103 4.2.5 配置Action的默认处理类 104 4.2.6 动态方法调用 105 4.2.7 为action元素指定method 4.2.7 属性 107 4.2.8 使用通配符 109 4.2.9 配置默认Action 115 4.3 管理处理结果 116 4.3.1 处理结果的改进 116 4.3.2 配置结果 117 4.3.3 Struts 2支持的处理结果 4.2.7 类型 118 4.3.4 plainText结果类型 120 4.3.5 redirect结果类型 123 4.3.6 redirectAction结果类型 124 4.3.7 动态结果 125 4.3.8 请求参数决定结果 126 4.3.9 全局结果 129 4.4 属性驱动和模型驱动 130 4.4.1 模型的作用 130 4.4.2 使用模型驱动 131 4.5 Struts 2的异常机制 134 4.5.1 Struts 2的异常处理哲学 135 4.5.2 声明式异常捕捉 136 4.5.3 输出异常信息 139 4.6 未知处理器 141 4.7 本章小结 143

第5章 Struts 2的类型转换 144 5.1 类型转换的意义 145 5.1.1 表现层数据处理 145 5.1.2 类型转换 145 5.2 Struts 2内建的类型转换器 149 5.3 基于OGNL的类型转换 151 5.4 自定义类型转换器 155 5.4.1 系统需求 155 5.4.2 实现类型转换器 157 5.4.3 局部类型转换器 159 5.4.4 全局类型转换器 161 5.4.5 基于Struts 2的类型转换器 163 5.4.6 数组属性的类型转换器 165 5.4.7 集合属性的类型转换器 168 5.5 集合类型转换的高级特性 170 5.5.1 指定集合元素的类型 170 5.5.2 为Set集合的元素指定 4.2.7 索引属性 172 5.6 类型转换中错误处理 174 5.6.1 类型转换的错误处理流程 174 5.6.2 处理类型转换错误 176 5.6.3 输出类型转换错误 176 5.6.4 处理集合属性的转换错误 179 5.7 本章小结 182

第6章 Struts 2的输入校验 183 6.1 输入校验概述 184 6.1.1 为什么需要输入校验 184 6.1.2 客户端校验 185 6.1.3 服务器端校验 187 6.1.4 类型转换和输入校验 191 6.2 基本输入校验 192 6.2.1 编写校验规则文件 192 6.2.2 国际化提示信息 195 6.2.3 使用客户端校验 197 6.3 校验器的配置风格 200 6.3.1 字段校验器配置风格 201 6.3.2 非字段校验器配置风格 201 6.3.3 短路校验器 203 6.3.4 校验顺序和短路 205 6.4 校验文件的搜索规则 205 6.5 内建校验器 208 6.5.1 注册校验器 208 6.5.2 必填校验器 210 6.5.3 必填字符串校验器 210 6.5.4 整数校验器 211 6.5.5 日期校验器 212 6.5.6 表达式校验器 213 6.5.7 字段表达式校验器 213 6.5.8 邮件地址校验器 214 6.5.9 网址校验器 215 6.5.10 Visitor校验器 216 6.5.11 转换校验器 219 6.5.12 字符串长度校验器 220 6.5.13 正则表达式校验器 221 6.6 基于Annotation的输入校验 221 6.7 手动完成输入校验 223 6.7.1 重写validate()方法 223 6.7.2 重写validateXxx()方法 225 6.7.3 Struts 2的输入校验流程 227 6.8 本章小结 228

第7章 上传和下载文件 229 7.1 文件上传的原理 230 7.1.1 表单元素的enctype属性 230 7.1.2 手动上传 233 7.1.3 使用上传框架完成上传 235 7.2 Struts 2的文件上传 241 7.2.1 Struts 2的文件上传支持 241 7.2.2 实现文件上传的Action 242 7.2.3 配置文件上传的Action 244 7.2.4 手动实现文件过滤 246 7.2.5 拦截器实现文件过滤 249 7.2.6 输出错误提示 250 7.2.7 文件上传的常量配置 252 7.3 使用Pell上传 252 7.4 同时上传多个文件 253 7.4.1 使用数组同时上传多个文件 254 7.4.2 使用List同时上传多个文件 257 7.5 使用Struts 2控制文件下载 258 7.5.1 实现文件下载的Action 259 7.5.2 配置Action 260 7.5.3 下载前的授权控制 261 7.6 本章小结 263

第8章 Struts 2的国际化 264 8.1 程序国际化简介 265 8.1.1 程序国际化的意义 265 8.1.2 Java国际化的思路 265 8.1.3 Java支持的语言和国家 266 8.1.4 完成程序国际化 267 8.1.5 使用MessageFormat处理 8.1.5 带占位符的消息 269 8.1.6 使用类文件代替资源文件 270 8.2 Struts 2的国际化入门 271 8.2.1 加载全局资源文件 271 8.2.2 访问国际化消息 272 8.2.3 输出带占位符的国际化消息 275 8.3 加载资源文件的不同方式 277 8.3.1 包范围资源文件 277 8.3.2 Action范围资源文件 279 8.3.3 临时指定资源文件 279 8.3.4 加载资源文件的顺序 281 8.4 允许用户自行选择程序语言 282 8.4.1 Struts 2国际化的运行机制 282 8.4.2 创建下拉列表框 283 8.4.3 选择程序语言 286 8.5 本章小结 287

第9章 Struts 2的标签库 288 9.1 Struts 2标签库概述 289 9.1.1 标签的优势 289 9.1.2 Struts 2的标签分类 290 9.2 Struts 2标签入门 291 9.2.1 使用Struts 2标签的准备 291 9.2.2 Struts 2的OGNL表达式 9.2.2 语言 292 9.2.3 OGNL中的集合操作 295 9.2.4 访问静态成员 296 9.2.5 Lambda(λ)表达式 296 9.3 控制标签 297 9.3.1 if/elseif/else标签 297 9.3.2 iterator标签 298 9.3.3 append标签 300 9.3.4 generator标签 302 9.3.5 merge标签 304 9.3.6 subset标签 304 9.3.7 sort标签 307 9.4 数据标签 309 9.4.1 action标签 309 9.4.2 bean标签 311 9.4.3 date标签 313 9.4.4 debug标签 314 9.4.5 include标签 315 9.4.6 param标签 316 9.4.7 push标签 316 9.4.8 set标签 317 9.4.9 url标签 319 9.4.10 property标签 320 9.5 主题和模板 321 9.5.1 选择主题 321 9.5.2 自定义主题 323 9.6 表单标签 325 9.6.1 表单标签的通用属性 325 9.6.2 表单标签的name和 9.6.2 value属性 328 9.6.3 checkboxlist标签 328 9.6.4 combobox标签 331 9.6.5 doubleselect标签 331 9.6.6 head标签 334 9.6.7 optiontransferselect标签 334 9.6.8 select标签 336 9.6.9 radio标签 337 9.6.10 optgroup标签 338 9.6.11 token标签 340 9.6.12 updownselect标签 341 9.7 非表单标签 343 9.7.1 actionerror和actionmessage 9.7.1 标签 343 9.7.2 component标签 344 9.8 本章小结 347

第10章 Struts 2的拦截器 348 10.1 理解拦截器 349 10.1.1 理解DRY规则 349 10.1.2 拦截器的意义 350 10.1.3 拦截器的实现原理 352 10.1.4 拦截器和AOP的关系 356 10.1.5 拦截器在Struts 2中的作用 357 10.2 拦截器配置初步 359 10.2.1 配置拦截器 359 10.2.2 使用拦截器 361 10.2.3 配置默认拦截器 362 10.3 Struts 2内建的拦截器 365 10.3.1 Struts 2内建的拦截器 365 10.3.2 struts-default.properties里 10.3.2 配置的拦截器 366 10.4 开发自己的拦截器 370 10.4.1 实现拦截器类 371 10.4.2 使用拦截器 372 10.4.3 拦截器和Struts 2插件的 10.4.3 关系 374 10.5 深入拦截器编程 375 10.5.1 拦截方法的拦截器 375 10.5.2 拦截器的执行顺序 378 10.5.3 拦截结果的监听器 380 10.5.4 覆盖拦截器栈里特定 10.5.4 拦截器的参数 381 10.6 拦截器示例:实现权限控制 383 10.6.1 实现拦截器类 383 10.6.2 配置权限控制拦截器 384 10.7 本章小结 386

第11章 Struts 2的Ajax支持 387 11.1 Ajax概述 388 11.1.1 Ajax的起源和变革 388 11.1.2 Ajax的核心技术 391 11.2 Struts 2提供的Ajax支持 393 11.3 基于Dojo的异步表单 397 11.3.1 安装Dojo插件 398 11.3.2 定义异步表单 398 11.3.3 实现Action 400 11.3.4 实现服务器响应页面 402 11.4 基于Dojo的pub-sub事件 11.4 模型 403 11.4.1 pub-sub的原理 404 11.4.2 pub-sub的示例 405 11.4.3 阻止请求 407 11.5 基于Dojo的Ajax标签 407 11.5.1 div标签 407 11.5.2 submit和a标签 414 11.5.3 autocompleter标签 419 11.5.4 tabbedpanel标签 426 11.5.5 datetimepicker 430 11.5.6 tree和treenode 432 11.5.7 textarea 435 11.5.8 bind 436 11.6 基于JSON插件的Ajax 11.6 实现 438 11.6.1 JSON的基本知识 438 11.6.2 安装Struts 2的JSON插件 441 11.6.3 实现Action逻辑 441 11.6.4 实现JSP页面 443 11.7 本章小结 446

第12章 Struts 2的REST支持 447 12.1 Codebehind插件和零配置 448 12.1.1 自动搜索Action 448 12.1.2 使用Annotation指定命名 12.1.2 空间、父包和结果映射 449 12.2 Convention插件和零配置 452 12.2.1 搜索Action 453 12.2.2 按约定映射Action 454 12.2.3 按约定映射Result 456 12.2.4 Action链的约定 459 12.2.5 自动重加载映射 461 12.3 Convention插件的相关常量 461 12.4 Convention的Annotation 462 12.4.1 Action配置相关的 12.4.1 Annotation 463 12.4.2 Result配置相关的 12.4.1 Annotation 464 12.4.3 包和命名空间相关的 12.4.1 Annotation 466 12.4.4 异常处理相关的Annotation 466 12.4.5 拦截器配置相关的 12.4.1 Annotation 468 12.5 REST简介 468 12.5.1 资源和标识符 469 12.5.2 操作资源的方式 470 12.6 Struts 2的REST支持 471 12.6.1 RestActionMapper简介 471 12.6.2 安装REST插件 472 12.6.3 实现支持REST的 12.6.3 Action类 473 12.6.4 实现视图层 478 12.7 本章小结 481

第13章 使用FreeMarker作为

第13章 表现层 482 13.1 体验FreeMarker 483 13.1.1 下载和安装FreeMarker 483

13.1.2 在Java程序中使用 13.1.2 FreeMarker 483 13.1.3 在Web应用中使用 13.1.2 FreeMarker 485 13.2 FreeMarker的模板文件 489 13.2.1 模板结构 489 13.2.2 FTL指令规则 490 13.2.3 插值规则 490 13.3 表达式 492 13.3.1 直接指定值 492 13.3.2 输出变量值 494 13.3.3 字符串操作 496 13.3.4 集合连接运算符 497 13.3.5 Map连接运算符 497 13.3.6 算术运算符 498 13.3.7 比较运算符 499 13.3.8 逻辑运算符 499 13.3.9 内建函数 499 13.3.10 空值处理运算符 500 13.3.11 运算符优先级 500 13.4 FreeMarker的常用指令 501 13.4.1 if指令 501 13.4.2 switch、case、default、 13.4.2 break指令 502 13.4.3 list、break指令 502 13.4.4 include指令 503 13.4.5 import指令 503 13.4.6 noparse指令 503 13.4.7 escape、noescape指令 504 13.4.8 assign指令 505 13.4.9 setting指令 506 13.4.10 macro、nested、return指令 506 13.5 使用FreeMarker作为 13.5 Struts 2的视图技术 509 13.5.1 在FreeMarker模板中 13.5.1 使用Struts 2标签 509 13.5.2 使用Freemarker Result 512 13.5.3 解析模板中的变量 514 13.5.4 访问Servlet/JSP范围的值 516 13.6 本章小结 517

第14章 整合Spring 518 14.1 Spring简介 519 14.1.1 Spring的起源和核心 519 14.1.2 使用Spring的IoC容器 521 14.2 Struts 2插件 524 14.2.1 插件概述 524 14.2.2 插件开发概述 526 14.3 使用Spring插件完成整合 527 14.3.1 整合Spring前的准备工作 528 14.3.2 整合Spring的思考 531 14.4 让Spring管理控制器 532 14.4.1 整合流程 532 14.4.2 从页面请求开始 533 14.4.3 实现控制器逻辑 533 14.4.4 实现业务逻辑 535 14.5 使用自动装配 537 14.5.1 指定自动装配 537 14.5.2 修改配置文件 538 14.5.3 改变自动装配策略 539 14.6 本章小结 540

第15章 整合JSF 541 15.1 JSF简介 541 15.1.1 JSF概述 542 15.1.2 JSF和Struts 2的对比 542 15.2 使用MyFaces 543 15.2.1 下载和安装MyFaces 543 15.2.2 从输入页面开始 545 15.2.3 在Web应用中配置MyFaces 547 15.2.4 实现后台Bean 548 15.2.5 定义导航规则 549 15.3 安装JSF插件 551 15.4 使用JSF插件 552 15.4.1 实现业务逻辑组件 553 15.4.2 列出全部图书 556 15.4.3 添加/修改图书 558 15.5 整合JSF的思考 563 15.6 本章小结 564

第16章 整合SiteMesh 565 16.1 SiteMesh简介 565 16.1.1 SiteMesh概述 566 16.1.2 下载和安装SiteMesh 567 16.1.3 定义装饰器页面 569 16.1.4 定义原始页面 570 16.1.5 更复杂的装饰器页面 572 16.2 使用SiteMesh插件 575 16.2.1 安装SiteMesh插件 575 16.2.2 在Struts 2中使用SiteMesh 577 16.3 本章小结 579

第17章 整合JasperReports 580 17.1 JasperReports简介 581 17.1.1 下载和安装JasperReports 581 17.1.2 JasperReports初探 582 17.1.3 JasperReports的开发流程 588 17.1.4 解决PDF报表的中文问题 589 17.2 动态报表 590 17.2.1 带参数的报表 590 17.2.2 带查询的报表 594 17.2.3 以VO集合作为数据源的 17.2.3 动态报表 600 17.3 使用iReport设计报表 605 17.3.1 下载和安装iReport 605 17.3.2 使用iReport 607 17.3.3 建立数据源 608 17.3.4 设计报表布局 611 17.4 安装JasperReports插件 614 17.5 使用JasperReports报表 614 17.5.1 创建生成报表的Action 615 17.5.2 配置生成JasperReports 17.2.3 报表的Action 616 17.5.3 生成JasperReports报表 617 17.6 本章小结 618

第18章 整合JFreeChart 619 18.1 JFreeChart简介 620 18.1.1 JFreeChart的下载和安装 620 18.1.2 使用JFreeChart 621 18.1.3 JFreeChart开发步骤 623 18.2 JFreeChart的常用统计图表 624 18.2.1 柱状图 625 18.2.2 折线图 629 18.2.3 时间顺序图 630 18.3 在网页中生成带交互功能的 18.3 统计图 633 18.4 安装JFreeChart插件 638 18.5 在Struts 2应用中使用 18.5 JFreeChart 639 18.5.1 创建Action类 639 18.5.2 配置Action 641 18.6 本章小结 642

第19章 整合Hibernate 643 19.1 Hibernate概述 644 19.1.1 Hibernate的作用 644 19.1.2 Hibernate的优势 646 19.2 Hibernate开发入门 646 19.2.1 Hibernate下载和安装 646 19.2.2 使用Hibernate保存记录 647 19.2.3 使用Hibernate查询记录 652 19.3 Struts 2整合Hibernate的思考 654 19.3.1 自定义的整合方案 654 19.3.2 整合方案的实现策略 656 19.4 整合示例 656 19.4.1 持久层设计 656 19.4.2 DAO层设计 660 19.4.3 业务逻辑层设计 663 19.4.4 初始化组件工厂 665 19.4.5 控制器实现 666 19.5 整合后的思考和Spring框架 668 19.6 本章小结 669

第20章 “零配置”案例:注册

第20章 登录系统 670 20.1 系统概述 671 20.1.1 系统功能简介 671 20.1.2 系统总体设计 671 20.2 实现Hibernate持久层 672 20.2.1 编写持久化PO类 672 20.2.2 编写映射文件 673 20.3 实现DAO层 674 20.3.1 管理SessionFactory 674 20.3.2 编写DAO接口 675 20.3.3 实现DAO组件 677 20.3.4 配置DAO组件 679 20.4 实现业务逻辑层 679 20.4.1 定义业务逻辑组件接口 679 20.4.2 提供业务逻辑组件实现类 680 20.4.3 配置业务逻辑组件 682 20.5 使用Struts 2 683 20.5.1 整合Struts 2和Spring 683 20.5.2 处理登录 685 20.5.3 图形验证码 689 20.5.4 使用Ajax验证用户名 692 20.5.5 注册新用户 696 20.6 使用SiteMesh装饰页面 699 20.7 本章小结 700

第21章 电子拍卖系统 701 21.1 系统功能简介和架构设计 702 21.1.1 系统功能简介 702 21.1.2 系统架构设计 702 21.1.3 相关技术介绍 703

21.2 持久层设计 706 21.2.1 系统实体 706 21.2.2 系统E-R图和数据表 707 21.2.3 实现Hibernate PO 709 21.2.4 管理SessionFactory 718 21.3 实现系统DAO层 720 21.3.1 DAO的基础配置 721 21.3.2 实现系统DAO组件 721 21.3.3 配置系统DAO组件 728 21.4 实现业务逻辑层 729 21.4.1 定义业务逻辑组件接口 730 21.4.2 依赖注入DAO组件 732 21.4.3 业务逻辑组件中的异常 21.4.3 处理 733 21.4.4 处理用户竞价 735 21.4.5 判断拍卖物品状态 737 21.4.6 事务管理 740 21.4.7 配置业务层组件 741 21.5 实现系统Web层 744 21.5.1 配置Struts 2的核心Filter 744 21.5.2 处理用户登录 745 21.5.3 图形验证码 749 21.5.4 Web层的异常处理 750 21.5.5 登录控制 751 21.5.6 添加物品 753 21.5.7 处理用户竞价 760 21.6 使用SiteMesh页面装饰 766 21.6.1 在Struts 2中整合SiteMesh 21.6.1 页面装饰 766 21.6.2 定义页面装饰 767 21.7 本章小结 770

亚马逊链接