第1篇 起步篇 2
第1章 Eclipse简介 2
1.1 Eclipse的历史 2
1.2 Eclipse的体系结构 2
1.3 优秀的图形API:SWT/JFace 3
1.4 开放式可扩展的IDE 4
1.5 桌面应用程序的开发平台 5
1.6 全中文化的帮助文件 5
1.7 Eclipse是开放源代码的免费软件 6
第2章 安装Eclipse及其插件 7
2.1 安装JDK 7
2.1.1 下载JDK 7
2.1.2 安装JDK 7
2.1.3 检查安装是否正确 8
2.2 安装Eclipse 8
2.3 安装Eclipse多国语言包 10
2.3.1 安装方法 10
2.3.2 注意事项 11
2.4 复制式插件安装法(安装XMLBuddy) 12
2.5 URL式插件安装法(安装Log4E) 13
第3章 Eclipse的集成开发环境 15
3.1 Eclipse界面简介 15
3.2 创建Java项目和类,并运行 16
3.2.1 创建Java项目 17
3.2.2 创建类 18
3.2.3 运行 19
3.3 项目的属性 19
3.3.1 项目属性窗简介 19
3.3.2 项目的构建路径 20
3.4 代码模板与式样 23
3.4.1 代码模板 23
3.4.2 自定义注释 23
3.4.3 代码格式化 24
3.5 代码编写 26
3.5.1 重构 26
3.5.2 代码的自动生成 27
3.5.3 打开断言 28
3.5.4 类型过滤 29
3.6 代码阅读 30
3.6.1 搜索 30
3.6.2 打开类型 31
3.6.3 打开类型层次结构 31
3.6.4 查看JDK源代码 32
3.6.5 查看Eclipse的源代码 33
3.7 任务标记 35
3.7.1 任务标记的设定 35
3.7.2 过滤任务标记 35
3.8 调试器的使用 36
3.9 常用快捷键 38
第4章 Eclipse中CVS的使用 39
4.1 CVS简介 39
4.2 CVS服务器端的安装与配置 39
4.2.1 安装CVSNT 39
4.2.2 创建CVS资源库 40
4.2.3 为Windows用户设置访问CVS资源库的密码 40
4.3 CVS客户端的配置 41
4.3.1 配置Eclipse连接CVS服务器 41
4.3.2 将项目共享到CVS服务器 42
4.3.3 导入CVS服务器上的项目 43
4.4 文件的落实与更新 43
4.4.1 CVS和VSS的不同之处 43
4.4.2 文件的落实和更新 44
4.4.3 解决文件冲突 45
4.4.4 如何让CVS忽略掉某些文件 46
4.5 标记版本 46
4.5.1 为项目在CVS上标记一个版本 46
4.5.2 将项目还原为某版本 47
4.6 修正旧版本的BUG 47
4.6.1 把1.0版代码导入到一个新项目 47
4.6.2 基于1.0版代码创建一个分支 47
4.6.3 修改代码解决BUG 48
第5章 Eclipse中JUnit的使用 50
5.1 一个TDD开发实例 50
5.2 JUnit的标准项目结构 53
第2篇 SWT/JFace篇 58
第6章 SWT起步 58
6.1 SWT简介 58
6.2 SWT中的包 59
6.3 SWT的HelloWorld 60
6.3.1 创建插件项目 60
6.3.2 创建HelloWorld程序 60
6.3.3 运行HelloWorld 61
6.3.4 HelloWorld更进一步 62
6.3.5 SWT程序的界面结构 62
6.4 SWT事件的写法 63
6.4.1 匿名内部类写法 63
6.4.2 命名内部类写法 64
6.4.3 外部类写法 64
6.4.4 实现监听接口的写法 65
6.4.5 总结 65
6.5 在事件代码中访问变量 66
6.6 常用事件监听器 67
6.6.1 选择事件监听器SelectionListener 67
6.6.2 键盘事件监听器KeyListener 68
6.6.3 焦点事件监听器FocusListener 68
6.6.4 鼠标事件监听器MouseListener 68
6.6.5 注销事件监听器DisposeListener 69
6.6.6 组件专用的事件监听器 69
6.6.7 通用监听器Listener 69
第7章 安装Visual Editor插件 70
7.1 下载Visual Editor 70
7.2 安装Visual Editor 71
第8章 SWT常用组件 73
8.1 按钮、复选框、单选按钮(Button类) 73
8.1.1 一个Button类的实例 73
8.1.2 Button类的式样表 74
8.1.3 使用事件参数SelectionEvent 75
8.2 组件的常用方法 76
8.3 标签(Label类) 78
8.3.1 Label类的一个实例 78
8.3.2 Label类的式样列表 78
8.4 文本框(Text类) 79
8.4.1 一个Text的实例 79
8.4.2 Text类的式样列表 80
8.4.3 一个编辑框的实例 80
8.4.4 常用方法 80
8.5 下拉框(Combo类) 81
8.5.1 一个Combo类的实例 81
8.5.2 Combo类的式样列表 82
8.5.3 常用方法 82
8.6 列表框(List类) 83
8.6.1 一个List类的实例 83
8.6.2 List类的式样表 84
第9章 容器类 85
9.1 面板(Composite类) 85
9.1.1 Composite类谱系 85
9.1.2 Composite的用法 85
9.1.3 Composite的常用方法 86
9.2 分组框(Group类) 86
9.3 选项卡(TabFolder类和TabItem类) 86
9.4 分割窗(SashForm类) 88
9.5 带滚动条的面板(ScrolledComposite类) 89
9.6 窗口容器(Shell类) 90
9.6.1 Shell实例和式样 90
9.6.2 使窗口屏幕居中 91
9.6.3 两个Shell窗口的互动 91
9.6.4 另一种窗口(Application Window类) 92
第10章 布局管理器 94
10.1 布局管理器简介 94
10.2 充满式(FillLayout类) 95
10.3 行列式(RowLayout类) 96
10.3.1 使用RowLayout 96
10.3.2 使用RowData控制组件外观 97
10.4 网格式(GridLayout类) 98
10.4.1 使用GridLayout 98
10.4.2 使用GridData进行复杂布局 99
10.5 堆栈式(StackLayout类) 102
10.6 表格式(FormLayout类) 103
10.6.1 使用marginWidth、marginHeight设置边距 103
10.6.2 使用FormData 104
10.6.3 FormAttachment类的用法 104
10.7 综合布局实例 106
第11章 其他SWT组件 112
11.1 工具栏(ToolBar类、ToolItem类、ViewForm类) 112
11.2 动态工具栏(CoolBar类、CoolItem类) 113
11.3 菜单(Menu类、MenuItem类) 116
11.4 滑动条(Slider)、刻度条(Scale)、进度条(ProgressBar) 117
11.5 画布(Canvas类) 119
11.6 表格(Table类) 120
11.7 树、表格型树(Tree类) 122
11.8 浏览器(Browser类) 124
11.9 系统托盘(Tray类) 124
11.10 SWT组件的扩展 126
11.10.1 Label的扩展(CLabel类) 126
11.10.2 Text的扩展(StyledText类) 126
第12章 图像、颜色、字体 128
12.1 图像(Image类) 128
12.2 Image类的注意事项 130
12.2.1 自己创建的,自己销毁 131
12.2.2 父组件销毁,其子组件也会自动销毁 131
12.3 图像描述符(ImageDescriptor类) 131
12.3.1 createFromFile方法 132
12.3.2 createFromURL方法 132
12.3.3 ImageDescriptor总结 132
12.4 图像注册表(ImageRegistry类) 132
12.5 颜色(Color类)和字体(Font类) 133
第13章 SWT的线程 135
13.1 SWT线程简介 135
13.2 一个SWT线程的实例 136
13.3 对11.4节进度条实例的改进 141
13.4 状态栏里的进度条 141
13.5 支持动画GIF的组件 145
第14章 表格(TableViewer类) 149
14.1 概述 149
14.2 创建表格并显示数据 150
14.2.1 实例的数据模型介绍 150
14.2.2 创建数据表的实体类 150
14.2.3 数据的生成 151
14.2.4 在表格中显示数据 152
14.3 响应鼠标双击事件 155
14.4 给表格加上右键菜单(Action类、ActionGroup类、MenuManager类) 156
14.4.1 Action、ActionGroup、MenuManager介绍 157
14.4.2 创建Action和ActionGroup 157
14.4.3 在主程序中使用ActionGroup、MenuManager 158
14.5 表格的排序(ViewerSorter类) 159
14.5.1 编写排序器ViewerSorter 159
14.5.2 为表格列添加事件监听器 160
14.6 给表格加上工具栏(ToolBarManager类) 161
14.6.1 创建Action类并填充进工具栏 161
14.6.2 用ViewForm做布局调整 163
14.7 带复选框的表格(CheckboxTableViewer类) 164
14.7.1 使用表格的复选框式样 164
14.7.2 修改MyActionGroup类 165
14.8 让表格可直接编辑(CellEditor类、ICellModifier接口) 167
14.8.1 设置编辑组件CellEditor 167
14.8.2 创建修改器ICellModifier 168
14.9 其他使用技巧 170
14.9.1 表格记录的过滤 170
14.9.2 控制表格的当前选择行 170
14.9.3 给表格的单元格设置背景色 171
14.9.4 加快TableItem和记录之间的查找速度 171
第15章 树(TreeViewer)和列表(ListViewer) 172
15.1 概述 172
15.2 前期准备:实例所用数据模型说明 172
15.2.1 建立国家实体和城市实体 172
15.2.2 建立树结点的接口类 173
15.2.3 让国家、城市、人3个实体类实现此接口 174
15.3 让数据在树中显示出来 174
15.3.1 创建树的数据结构 175
15.3.2 创建主程序 176
15.3.3 标签器(实现ILabelProvider接口) 176
15.3.4 内容器(实现ITreeContentProvider接口) 177
15.4 给树加上右键菜单,及实现菜单相应功能 179
15.5 不同结点显示不同菜单 183
15.6 表格型树 183
15.7 带复选框的树 185
15.8 列表(ListViewer类) 187
15.8.1 ListViewer简介 187
15.8.2 ListViewer的实例 187
15.8.3 ListViewer的常用方法 188
第16章 对话框 189
16.1 对话框(Dialog类) 189
16.1.1 对话框简介 189
16.1.2 信息提示框(MessageDialog类) 189
16.1.3 输入值对话框(InputDialog类) 191
16.1.4 自定义对话框(Dialog类) 192
16.1.5 对话框的设置与取值 194
16.1.6 封装对话框中的数据到一个数据类 196
16.1.7 保存对话框的值(IDialogSettings类) 198
16.1.8 带提示栏的对话框(TitleAreaDialog类) 199
16.2 向导式对话框(WizardDialog类) 200
16.2.1 向导式对话框简介 200
16.2.2 向导式对话框实例 201
16.3 进度条对话框(ProgressMonitorDialog类) 205
16.3.1 进度条对话框简介 205
16.3.2 标准的进度条对话框 205
16.3.3 反复显示的进度条对话框 207
16.3.4 封装反复显示的进度条对话框 208
16.3.5 用动画GIF来表示进度 210
16.4 其他类型对话框 211
16.4.1 信息提示框(MessageBox类) 211
16.4.2 颜色选择对话框(ColorDialog类) 212
16.4.3 字体选择对话框(FontDialog类) 213
16.4.4 打印设置对话框(PrintDialog类) 213
16.4.5 目录选择对话框(DirectoryDialog类) 214
16.4.6 文件选择对话框(FileDialog类) 214
第17章 Form的使用 216
17.1 Form概述 216
17.2 Form的HelloWorld 217
17.3 在Form中使用SWT组件 218
17.4 Form的新布局 219
17.4.1 TableWrapLayout布局 219
17.4.2 ColumnLayout布局 220
17.5 Form的专用组件 221
17.5.1 超链接(Hyperlink类) 221
17.5.2 带图像的超链接(ImageHyperlink类) 221
17.5.3 可伸缩面板(ExpandableComposite类) 222
17.5.4 可伸缩项(Section类) 223
17.5.5 网页效果的文本(FormText类) 224
17.5.6 带标题的面板(Form类) 225
17.5.7 带滚动条的Form面板(ScrolledForm类) 225
17.5.8 用面板做分隔栏(createCompositeSeparator方法) 226
17.5.9 堆栈式面板(ScrolledPageBook类) 226
第18章 高级话题 227
18.1 嵌入AWT/SWING组件 227
18.2 组件的拖动功能(Drag and Drop) 227
18.3 访问ActiveX 230
18.3.1 在SWT中打开Word文档 231
18.3.2 在OLE容器中加入菜单 231
18.3.3 调用ActiveX控件的内部方法 232
18.3.4 使用Flash控件 234
18.4 数据绑定(JFace data binding framework) 235
18.4.1 准备工作 235
18.4.2 数据绑定的简单示例 237
18.4.3 使用BindSpec类定义特殊绑定 238
18.4.4 TableViewer的数据绑定 241
18.4.5 Combo绑定和联动 242
第3篇 插件开发篇 246
第19章 Eclipse插件开发起步 246
19.1 Eclipse插件开发概述 246
19.1.1 插件开发简介 246
19.1.2 Eclipse插件开发的优势和不足 246
19.2 创建HelloWorld插件 247
19.2.1 新建插件项目 247
19.2.2 运行插件 247
19.3 解读HelloWorld插件 248
19.3.1 Activator.java 248
19.3.2 SampleAction.java 249
19.3.3 plugin.xml 249
19.3.4 MANIFEST.MF 251
19.3.5 build.properties 252
19.4 修改HelloWorld插件 252
19.4.1 规范包名 252
19.4.2 修改插件信息 253
19.4.3 “运行”窗口 253
19.4.4 精简依赖插件,处理依赖错误 254
第20章 常用插件扩展点 255
20.1 加入透视图(perspectives) 255
20.1.1 修改plugin.xml文件,设置透视图的扩展点 255
20.1.2 建立透视图类 256
20.1.3 运行插件 256
20.1.4 总结 256
20.2 在透视图中加入视图(views) 256
20.2.1 修改plugin.xml文件,设置视图的扩展点 256
20.2.2 创建视图类 258
20.2.3 修改透视图类SamplePerspective 258
20.2.4 运行插件 259
20.3 在视图之间实现事件监听 259
20.3.1 主动式 259
20.3.2 监听式 261
20.4 给视图加下拉菜单和按钮 264
20.4.1 创建ActionGroup类 264
20.4.2 修改View1类 265
20.5 加入编辑器(editors) 266
20.5.1 修改plugin.xml文件,设置3个编辑器的扩展点 266
20.5.2 创建3个编辑器类 267
20.5.3 创建IEditorInput 268
20.5.4 打开编辑器 269
20.5.5 总结 270
20.6 编辑器类方法的使用说明 270
20.6.1 EditorPart方法的执行情况 270
20.6.2 各方法的作用及含义 271
20.6.3 一个编辑器实例 271
20.7 加入首选项(preferencePages) 273
20.7.1 修改plugin.xml文件,设置首选项的扩展点 273
20.7.2 建立首选项各结点对应的类 274
20.7.3 运行插件 276
20.7.4 总结 277
20.8 加入帮助(toc) 277
20.8.1 修改plugin.xml文件,设置3个帮助的扩展点 277
20.8.2 编写帮助目录文件toc 278
20.8.3 创建相应的帮助文档 279
20.8.4 运行插件 279
20.8.5 总结 280
20.9 上下文帮助(contexts) 280
20.9.1 在plugin.xml中设置扩展点 281
20.9.2 编写配置文件mycontexts.xml 281
20.9.3 创建HTML帮助文件 281
20.9.4 将帮助信息和界面组件关联起来 282
20.9.5 总结 282
第21章 Eclipse插件的国际化 283
21.1 国际化简介 283
21.2 为国际化创建一个插件的“段项目” 283
21.3 类程序的国际化 284
21.3.1 国际化前的准备工作 284
21.3.2 创建Message类 285
21.3.3 创建*.properties资源文件 286
21.3.4 修改myplugin项目的程序 288
21.3.5 运行插件,测试国际化 288
21.3.6 实践建议 289
21.4 plugin.xml的国际化 289
21.4.1 创建plugin.xml的资源文件 289
21.4.2 修改plugin.xml文件 290
21.4.3 运行插件,测试plugin.xml的国际化 290
21.5 其他XML文件的国际化 290
21.5.1 在myplugin.nll项目创建国际化所需的目录结构 291
21.5.2 修改各语言的XML文档 291
21.6 使用“外部化字符串”向导 291
21.6.1 运用“外部化字符串”向导的步骤 292
21.6.2 向导完成后的处理 293
第22章 报表:用POI与Excel交互 294
22.1 POI的下载与安装 294
22.1.1 POI的下载 294
22.1.2 POI的安装 294
22.2 将数据导出成Excel的实例 296
22.2.1 创建一个空白的Excel文件 296
22.2.2 往Excel单元格中写入信息 296
22.2.3 中文化的问题 297
22.3 使用式样 298
22.3.1 日期式样及文字对齐式样 298
22.3.2 边框式样 299
22.3.3 背景色及底纹式样 300
22.3.4 合并单元格 300
22.3.5 字体式样 301
22.4 更多的用法 302
22.4.1 设置页眉页脚 302
22.4.2 冻结和分割窗 302
22.4.3 浮动文字框及在表中画图 303
22.4.4 设置打印的范围 304
22.4.5 读取及修改Excel 304
第23章 项目的打包与发行 305
23.1 应用程序项目的打包与发行 305
23.1.1 简介 305
23.1.2 打包的具体操作步骤 305
23.1.3 其他得到JAR包的方式 309
23.1.4 用Fat Jar插件打包项目 309
23.1.5 让用户不必另外安装JRE环境 310
23.1.6 创建EXE执行文件及美化图标 311
23.1.7 打包的其他说明 312
23.2 插件项目的打包与发行 312
23.2.1 简介 312
23.2.2 插件打包的具体操作步骤 312
23.2.3 测试打包效果 314
23.3 用Ant来打包 314
23.3.1 检查环境变量 315
23.3.2 准备Ant脚本所需文件 315
23.3.3 创建Ant脚本 315
23.3.4 解读Ant脚本 317
23.3.5 运行Ant脚本 320
第4篇 RCP开发篇 322
第24章 RCP平台开发起步 322
24.1 创建RCP项目(V001) 322
24.2 解读RCP项目 323
24.2.1 plugin.xml:设置扩展点 324
24.2.2 Application类:入口类 324
24.2.3 ApplicationWorkbenchAdvisor类:确定透视图 325
24.2.4 ApplicationWorkbenchWindowAdvisor类:工作台窗口 325
24.2.5 ApplicationActionBarAdvisor类:窗口元素 326
24.3 主菜单、工具栏、状态栏(V002) 327
24.3.1 打开主菜单、工具栏、状态栏 327
24.3.2 添加多个Action 327
24.3.3 修改Activator类 329
24.4 全局快捷键(V003) 329
24.5 重构和项目调整 330
24.5.1 重构(V004) 330
24.5.2 项目调整(V005) 331
第25章 建立MySQL数据库环境(V006) 332
25.1 下载MySQL等软件包 332
25.1.1 下载MySQL 332
25.1.2 下载JDBC连接包 332
25.1.3 下载GUI Tools 333
25.2 安装MySQL 333
25.3 RCP程序连接数据库 336
25.3.1 安装JDBC连接包 336
25.3.2 建库和建表 337
25.3.3 插入数据和查询数据 339
25.4 解决Java的中文问题 340
25.4.1 字符集简介 340
25.4.2 SMS项目的字符集配置方案 342
第26章 需求分析及数据模型(V007) 344
26.1 软件开发过程 344
26.2 界面原型 345
26.3 面向对象的分析与设计 346
26.3.1 用户对象:学生、老师 348
26.3.2 课程(Course)、班级(SchoolClass)、年级(Grade)对象 350
26.3.3 学生成绩(StudentScore)、考试(Exam)对象 352
26.3.4 总结 353
26.4 创建数据表 353
26.4.1 创建表的方式方法 354
26.4.2 创建表的SQL语句 354
26.4.3 在MySQL Query Browser中运行SQL脚本 356
26.5 给数据表插入数据 357
第27章 创建主界面框架 360
27.1 创建主功能视图(V008) 360
27.2 创建功能导航器中的树(V009) 362
27.3 创建项目的图像注册表(V010) 365
第28章 用户登录与退出 369
28.1 实现方案 369
28.2 界面部分的源代码(V011) 370
28.3 数据库部分的源代码(V011) 375
28.4 让软件适应多种数据库(V012) 379
28.4.1 解决方案 380
28.4.2 具体实现的源代码 380
第29章 “档案管理”编辑器的实现 383
29.1 前言 383
29.2 实现编辑器及排序、翻页功能(V013) 383
29.3 实现删除用户功能(V014) 394
29.4 实现新增用户的向导对话框(V015) 396
29.5 实现修改用户的功能(V016) 408
29.6 让编辑器实现登录退出监听(V017) 413
第30章 “搜索视图”的实现(V018) 415
30.1 前言 415
30.2 单击结点打开视图 415
30.3 实现搜索视图SearchView 416
30.4 实现“成绩管理”编辑器 420
第31章 让软件更友好 424
31.1 首选项的实现(V019) 424
31.1.1 在RCP项目中显示首选项窗口 424
31.1.2 首选项的源代码 425
31.1.3 将程序中的设置值改成取之于首选项的设置 429
31.1.4 运行 429
31.2 进度条的实现(V020) 430
31.2.1 为演示实例做准备 430
31.2.2 基本实例 430
31.2.3 定时执行任务和Job监听器 431
31.2.4 IProgressService类的使用 432
31.3 状态栏的使用(V021) 433
31.4 使用控制台视图 434
31.4.1 程序直接调用方式(V022) 434
31.4.2 控制台的扩展点(V023) 435
第32章 RCP项目的打包与发行(V024) 438
32.1 使用product文件配置和导出项目 438
32.1.1 创建product文件 438
32.1.2 修改product文件的“概述”界面 438
32.1.3 修改product文件的“启动程序”界面 440
32.1.4 修改product文件的“标记”界面 440
32.1.5 弧型Tab、进度条等效果 441
32.1.6 导出SMS项目 443
32.2 处理RCP项目的运行错误 444
32.3 在Java Web Start中使用RCP 445
32.3.1 WebRCP简介 445
32.3.2 在WebRCP中安装SMS项目的操作步骤 446
32.3.3 运行,查看WebRCP效果 447
32.4 Java Web Start的证书 447
32.4.1 生成证书 448
32.4.2 用证书为webrcp.jar文件进行数字签名 448
32.4.3 替换证书后的效果 448
第33章 让软件具有更好的扩展性 450
33.1 将软件模块插件化的思路 450
33.2 把插件安装到RCP项目 451
33.3 插件之间的互相依赖 451
33.4 多个插件共享jar包 452
33.5 自定义扩展点(V025) 452
33.5.1 增加一个自定义扩展点 453
33.5.2 使用自定义扩展点 453
33.5.3 创建扩展点定义的类PluginNavigatorEntry 454
33.5.4 读取扩展点定义的信息 454
33.5.5 总结 455
33.5.6 创建扩展点的schema文件 455
第5篇 Web开发篇 458
第34章 Web环境的搭建(V001) 458
34.1 概述 458
34.2 Tomcat的下载与安装 459
34.2.1 下载Tomcat 459
34.2.2 安装Tomcat 459
34.2.3 确认Tomcat安装成功 460
34.3 Lomboz的下载与安装 461
34.3.1 下载Lomboz 461
34.3.2 安装Lomboz 461
34.3.3 Lomboz的环境设置 462
34.3.4 使用Lomboz应注意的问题 463
34.5 JSP的HelloWorld 463
34.5.1 创建一个Web项目 463
34.5.2 创建一个JSP文件 465
34.5.3 web.xml错误的解决 465
34.5.4 在Lomboz中启动Tomcat 466
34.5.5 一些相关问题 467
34.6 配置Tomcat的数据库连接池 468
34.6.1 复制JDBC连接包 468
34.6.2 安装Tomcat的管理模块并配置 468
34.6.3 修改Tomcat的context.xml文件 469
34.6.4 测试数据库连接池 469
第35章 一个纯JSP+JavaBean实例(V002) 472
35.1 创建JavaBean 472
35.1.1 修改AbstractDbOperate类 473
35.1.2 修改数据库连接管理器ConnectManager类 473
35.1.3 在Constants类中增加一个字符串常量 474
35.1.4 修改工厂类SmsFactory 474
35.2 编写JSP文件 474
35.2.1 实例的流程及效果 474
35.2.2 JSP文件说明 475
35.2.3 JSP文件的源代码 475
35.2.4 使用JSP应注意的问题 478
第36章 在Eclipse中使用Struts 479
36.1 Struts的下载及安装 479
36.1.1 下载 479
36.1.2 安装 480
36.2 Struts入门实例(V003) 481
36.2.1 Struts原理简介 481
36.2.2 用户登录实例 482
36.3 让Dreamweaver支持Struts标签 489
36.3.1 下载与安装支持Struts标签的插件 489
36.3.2 将Struts标签添加到Dreamweaver中 490
36.3.3 插件的效果 490
36.4 深入struts-config.xml 491
36.4.1 页面转发 491
36.4.2 <form-beans>项之动态ActionForm 492
36.4.3 <action-mappings>项 493
36.4.4 使用DispatchAction类 493
36.4.5 使用多个struts-config.xml配置文件 494
36.4.6 解决命名冲突 495
36.5 验证的多种方法 495
36.5.1 方法1 495
36.5.2 方法2(V004) 496
36.6 使用更多的Struts标签 502
36.6.1 获知更多的标签 502
36.6.2 表单类标签 503
36.6.3 其他说明 505
第37章 在Eclipse中使用Hibernate 506
37.1 概述 506
37.1.1 持久化框架产生的背景和现状 506
37.1.2 Hibernate简介 507
37.1.3 本章说明 507
37.2 Hibernate的下载和安装 508
37.2.1 下载 508
37.2.2 安装 509
37.3 一个简单的Hibernate实例(V005) 509
37.3.1 创建Hibernate配置文件:hibernate.cfg.xml 509
37.3.2 创建XML映射文件:model.hbm.xml 510
37.3.3 创建HibernateUtil类 511
37.3.4 创建GradeManager类 512
37.3.5 创建hibernateTest.jsp 513
37.3.6 总结及实践建议 514
37.4 继续深入使用Hibernate(V006) 514
37.4.1 修改XML映射文件 515
37.4.2 数据库操作类的实现 518
37.4.3 修改使用DbOperate类的程序 520
37.5 实现用户的修改、删除功能(V007) 522
37.5.1 界面效果及功能说明 522
37.5.2 在DbOperate类增加方法 522
37.5.3 在用户列表userList.jsp文件增加两个超链接 523
37.5.4 在Struts配置文件struts-config.xml中增加一个action定义 524
37.5.5 修改UserForm类 524
37.5.6 创建UserAction类 525
37.5.7 创建modifyUser.jsp 526
37.6 解决Tomcat的中文问题(V008) 527
37.7 Web的打包发行 528
37.8 Hibernate的自动生成工具 529
37.8.1 由XML映射文件生成数据库表(V009) 529
37.8.2 使用Hibernate Tools 530