当前位置:首页 > 工业技术
疯狂Ajax讲义  Prototype/jQuery+DWR+Spring+Hibernate整合开发
疯狂Ajax讲义  Prototype/jQuery+DWR+Spring+Hibernate整合开发

疯狂Ajax讲义 Prototype/jQuery+DWR+Spring+Hibernate整合开发PDF电子书下载

工业技术

  • 电子书积分:18 积分如何计算积分?
  • 作 者:李刚编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2009
  • ISBN:9787121084409
  • 页数:618 页
图书介绍:本书介绍的内容非常全面,覆盖了Ajax技术的各个方面,包括Ajax技术的核心对象XMLHttpRequest对象、JavaScript脚本的详细知识以及DOM和 XML的相关知识。除了Ajax的这些基础知识外,本书还详细介绍了Ajax的5 个相关框架:Prototype.zis,Dojo,DWR,JSON—RPC一Java和AjaxTags。本书介绍的不是单纯的Ajax技巧,而是侧重于介绍Ajax技术与J2EE技术的融合,让Ajax技术融入实际的J2EE应用。
《疯狂Ajax讲义 Prototype/jQuery+DWR+Spring+Hibernate整合开发》目录

第1章 Ajax概述 1

1.1 重新思考Web应用 2

1.1.1 应用系统的发展史 2

1.1.2 传统Web应用的优势和缺点 4

1.2 重新设计Web应用 5

1.2.1 富Internet应用 5

1.2.2 异步发送请求,避免等待 7

1.2.3 使用Ajax 7

1.3 Ajax介绍 7

1.3.1 Ajax的工作方式 8

1.3.2 Ajax的核心:XMLHttpRequest 8

1.3.3 Ajax的编程脚本:JavaScript语言 9

1.3.4 HTML页面的DOM模型 9

1.3.5 数据交换和显示 10

1.4 Ajax的基本特征 10

1.4.1 异步发送请求 10

1.4.2 服务器响应是数据,而不是页面内容 11

1.4.3 浏览器中的是应用,不是简单视图 11

1.5 Ajax的替代技术 11

1.5.1 Sun的Java Web Start技术 11

1.5.2 Microsoft的ClickOnce技术 12

1.5.3 基于Flash的Flex 12

1.6 搭建Ajax开发环境 13

1.6.1 本书的Ajax开发环境 13

1.6.2 安装Tomcat服务器 13

1.6.3 配置Tomcat的服务端口 15

1.6.4 进入Tomcat控制台 15

1.6.5 部署Web应用 17

1.6.6 配置Tomcat的数据源 18

1.6.7 安装Ant 19

1.6.8 Eclipse的下载和安装 21

1.6.9 在线安装Eclipse插件 21

1.6.10 手动安装Eclipse插件 22

1.7 调试JavaScript脚本 23

1.8 本章小结 24

第2章 Ajax初体验 25

2.1 Ajax带来的优势 26

学生提问 即使使用Ajax技术,客户端和服务器一样有网络通信延迟,尤其是当网络状况不好时,通信延迟将更严重,用户一样感受不到更新延迟吗? 27

2.2 开始传统的JSP聊天室 28

2.2.1 实现业务逻辑组件 28

2.2.2 实现控制器 31

2.2.3 实现视图 33

2.2.4 JSP聊天室的问题 34

2.3 AjaX聊天室 34

2.3.1 异步发送请求 35

学生提问 使用Ajax技术是不是会带来更大的工作量? 37

2.3.2 解决多余刷新的问题 37

2.3.3 解析服务器响应 39

2.3.4 何时发送请求 40

学生提问 客户端频繁发送请求,难道不会加重服务器负担? 41

2.3.5 Ajax聊天室的特点 44

2.4 Ajax编程的技术难点 44

2.5 传统Web应用与AjaX应用的对比 45

2.6 本章小结 46

第3章 XHTML语言详解 47

3.1 XHTML简介 48

3.1.1 HTML的作用和历史 48

学生提问 在保存HTML文件时,到底采用.htm扩展名还是采用.html扩展名呢? 48

学生提问 我应该使用FrontPage学习HTML文档呢?还是使用Dreamweaver好? 49

3.1.2 HTML 4.01和XHTML 49

学生提问 如果我使用XHTML编写互联网页,会不会有浏览器不支持? 50

3.2 XHTML的基本语法 50

3.2.1 XHTML的基本结构和规则 50

3.2.2 XHTML和DTD 52

3.3 XHTML的常用标签 54

3.3.1 基本标签 54

3.3.2 文本格式化标签 55

学生提问 如果我希望HTML页面内的文本更美观,例如改变它们的颜色、背景等,那该用什么标签呢? 57

3.3.3 超级链接和锚点 57

3.3.4 列表相关标签 58

3.3.5 图像相关标签 59

3.3.6 表格相关标签 61

3.3.7 框架相关标签 64

3.4 XHTML的表单标签 65

3.4.1 表单标签 66

3.4.2 使用input元素 67

学生提问 前面的页面中包含5个单选框,为何前面3个只能选中一个,后面2个只能选中一个,但一共可以选择2个呢? 69

3.4.3 使用label定义标签 69

学生提问 在表单里直接定义普通文本不可以作为标签吗?专门使用<label.../>元素定义标签有什么作用? 69

3.4.4 使用button定义按钮 70

3.4.5 列表框和下拉菜单 71

3.4.6 使用textarea定义文本域 72

3.5 XHTML头部和元信息 73

3.6 本章小结 74

本章练习 74

第4章 JavaScript语法详解 75

4.1 JavaScript简介 76

4.1.1 运行JavaScript 77

4.1.2 导入JavaScript文件 77

4.2 数据类型和变量 77

4.2.1 定义变量的方式 78

4.2.2 类型转换 78

4.2.3 变量 80

4.3 基本数据类型 82

4.3.1 数值类型 82

4.3.2 字符串类型 86

4.3.3 布尔类型 89

4.3.4 undefined和null 90

4.3.5 正则表达式 91

4.4 复合类型 93

4.4.1 对象 93

4.4.2 数组 93

4.4.3 函数 94

4.5 运算符 96

4.5.1 赋值运算符 96

4.5.2 算术运算符 97

4.5.3 位运算符 98

4.5.4 加强的赋值运算符 99

4.5.5 比较运算符 100

4.5.6 逻辑运算符 101

4.5.7 三目运算符 102

4.5.8 逗号运算符 103

4.5.9 void运算符 103

4.5.10 typeof和instanceof运算符 104

4.6 语句 104

4.6.1 语句块 105

4.6.2 空语句 105

4.6.3 异常抛出语句 105

4.6.4 异常捕捉语句 106

4.6.5 with语句 107

4.7 流程控制 108

4.7.1 分支 108

4.7.2 while循环 110

4.7.3 do while循环 111

4.7.4 for循环 111

4.7.5 for in循环 112

4.7.6 break和continue 113

4.8 函数 116

4.8.1 函数定义 116

4.8.2 局部变量和局部函数 117

4.8.3 匿名函数 118

4.8.4 函数和类 120

4.8.5 函数的实例属性和静态属性 121

4.8.6 递归函数 123

4.9 函数的参数处理 124

4.9.1 基本类型和复合类型的参数传递 125

4.9.2 空参数 126

4.9.3 参数类型 127

4.10 对象 128

4.10.1 面向对象的概念 129

4.10.2 对象和关联数组 129

4.10.3 继承和prototype 130

4.11 建对象 135

4.11.1 使用关键字new创建对象 135

4.11.2 使用Object直接创建对象 135

4.11.3 使用JSON语法创建对象 137

4.12 本章小结 140

本章练习 140

第5章 级联样式单详解 141

5.1 样式单概述 142

5.2 CSS的基本使用 143

5.2.1 引入外部样式文件 143

5.2.2 使用内部CSS样式 144

5.2.3 使用内联样式 146

5.3 使用CSS属性 147

5.3.1 文字相关属性 148

5.3.2 整体段落相关属性 150

5.3.3 背景相关属性 151

5.3.4 表格相关属性 152

5.3.5 大小相关属性 155

5.3.6 位置相关属性 155

5.3.7 边框相关属性 157

5.3.8 轮廓相关属性 159

5.3.9 三个常用属性 160

5.4 选择器定义 161

5.4.1 属性选择器 162

5.4.2 ID选择器 163

5.4.3 class选择器 164

5.4.4 包含选择器和子元素选择器 165

5.4.5 超级链接相关选择器 166

5.5 在脚本中修改显示样式 166

5.5.1 随机改变页面的背景色 167

5.5.2 卷帘效果 167

5.5.3 动态增加立体效果 169

5.6 本章小结 170

第6章 DOM模型详解 171

6.1 DOM模型概述 172

6.2 DOM模型和XHTML文档 173

6.2.1 XHTML元素之间的继承图 173

6.2.2 XHTML元素之间常见的包含关系 174

6.3 访问XHTML元素 175

6.3.1 根据ID访问XHTML元素 175

学生提问 如何让每个XHTML元素都有唯一的id属性呢?以前我见到很多XHTML页面元素并没有id属性啊。 175

学生提问 程序中为了访问<div.../>元素和<textarea.../>元素的“内容”,为何一个用innerHTML属性,另一个用value属性? 176

6.3.2 利用节点关系访问XHTML元素 176

6.3.3 访问表单域控件 178

6.3.4 访问列表框、下拉菜单的选项 179

6.3.5 访问表格子元素 180

6.4 修改XHTML元素 182

6.5 新增XHTML元素 183

6.5.1 创建或复制节点 183

6.5.2 添加节点 185

6.5.3 为列表框、下拉菜单增加选项 185

6.5.4 动态添加表格内容 187

6.6 删除XHTML元素 188

6.6.1 删除节点 188

6.6.2 删除列表框、下拉菜单的选项 189

6.6.3 删除表格的行或单元格 191

6.7 传统DHTML模型 192

6.8 使用window对象 194

6.8.1 访问历史 196

6.8.2 浏览器对象 197

6.8.3 访问页面URL 197

6.8.4 客户机屏幕信息 198

6.8.5 弹出新窗口 199

6.8.6 确认对话框和输入对话框 199

6.8.7 使用定时器 200

6.9 使用document对象 201

6.9.1 动态页面 202

6.9.2 读写Cookje 203

6.10 两个常用范例 204

6.10.1 可编辑表格 204

6.10.2 导航菜单 206

6.11 DOM模型和XML文档 210

6.11.1 使用DOM解析XML文档 210

6.11.2 使用DOM解析器创建XML 212

6.12 本章小结 214

本章练习 214

第7章 事件处理机制 215

7.1 基本事件模型 216

7.1.1 绑定XHTML元素属性 216

7.1.2 绑定DOM对象的属性 218

7.1.3 事件处理函数和关键字this 219

7.1.4 使用返回值改变默认行为 221

7.1.5 在代码中触发事件 222

学生提问 为什么在<form.../>元素中<input.../>元素的id属性值不能是submit呢? 223

7.2 Ajax应用的MVC 224

7.3 Internet Explorer的事件模型 226

7.3.1 使用script for绑定 227

7.3.2 使用attachEvent方法执行绑定 227

7.3.3 访问事件对象 229

学生提问 此处介绍的是Internet Explorer中访问事件的方式,那么其他浏览器呢? 232

7.3.4 事件冒泡 232

7.3.5 重定向事件 234

7.3.6 取消事件默认行为 236

7.3.7 捕获鼠标事件 237

7.4 DOM 2的事件模型 239

7.4.1 绑定事件处理器 239

7.4.2 访问事件对象 241

学生提问 DOM 2事件模型和Internet Explorer事件模型里访问事件对象的方式完全不同,如果我们需要写一个跨浏览器的程序,是不是只能将事件处理函数绑定到XHTML元素,并将event显式作为参数传入事件处理函数? 241

7.4.3 事件传播 243

7.4.4 转发事件 247

7.4.5 取消事件的默认行为 249

7.5 本章小结 250

本章练习 250

第8章 XMLHttpRequest对象详解 251

8.1 XMLHttpRequest对象概述 252

8.2 XMLHttpRequest的方法和属性 252

8.2.1 XMLHttpRequest的方法 252

8.2.2 XMLHttpRequest的属性 256

8.3 发送请求 258

8.3.1 发送简单请求 259

8.3.2 发送GET请求 261

8.3.3 发送POST请求 263

8.3.4 发送请求时的编码问题 264

8.3.5 发送XML请求 268

8.4 处理服务器响应 270

8.4.1 处理的时机 270

8.4.2 使用文本响应 271

8.4.3 使用XML响应 271

8.4.4 使用DOM模型生成页面 273

8.5 XMLHttpRequest对象的运行周期 273

8.6 Ajax必须解决的问题 274

8.6.1 跨浏览器问题 274

8.6.2 安全性问题 275

8.6.3 性能问题 277

8.7 本章小结 280

第9章 Prototype库详解 281

9.1 Prototype的下载和安装 282

9.1.1 什么是Prototype库 282

9.1.2 下载Prototype库 282

9.1.3 安装Prototype库 283

9.1.4 使用Prototype对象 283

9.2 Prototype的工具函数 284

9.2.1 使用$()函数 284

9.2.2 使用$$()函数 286

9.2.3 使用$A()函数 288

9.2.4 使用$F()函数 289

9.2.5 使用$H()函数 290

9.2.6 使用$R()函数 291

9.2.7 使用Try.these()函数 291

9.3 Prototype的JSON支持 293

9.4 Prototype的自定义对象和类 294

9.4.1 使用Element对象 294

9.4.2 使用Element.Methods 298

9.4.3 使用Enumerable 298

9.4.4 使用ObjectRange 302

9.4.5 使用Form.Element操作表单控件 302

9.4.6 使用Form操作表单 304

9.4.7 使用Hash对象 305

9.4.8 使用Event 307

学生提问 element()和findElement()的关系到底是怎么回事呢? 307

9.4.9 使用Template 308

9.4.10 使用Class 309

9.4.11 两个常用的监听器 310

9.5 Prototype常用的扩展 312

9.5.1 扩展Array 312

9.5.2 扩展document 313

9.5.3 扩展String 314

9.5.4 扩展Function 316

9.5.5 扩展Number 318

9.6 Prototype的Ajax支持 319

9.6.1 使用Ajax.Request类 319

9.6.2 使用Form.request方法 322

9.6.3 使用Ajax.Responders对象 324

9.6.4 使用Ajax对象 325

9.6.5 使用Ajax.Updater类 325

9.6.6 使用Ajax.PeriodicalUpdater类 328

9.7 本章小结 329

第10章 基于Prototype库的应用:自动完成 330

10.1 应用的基本分析和设计 331

10.1.1 数据要求 331

10.1.2 数据表结构 331

10.2 Domain Object和持久层 331

10.2.1 Domain Object 332

10.2.2 实现DAO组件 333

10.3 实现Service组件 337

10.4 使用Servlet提供服务器响应 341

10.4.1 根据前缀查询品牌 341

10.4.2 根据品牌查询型号 342

10.4.3 根据型号查询详细信息 343

10.5 客户端HTML页面实现 344

10.6 增加HTML页面的事件响应能力 346

10.6.1 实现品牌输入框的事件处理器 346

10.6.2 实现键盘事件的处理器 347

10.6.3 根据品牌提示型号 350

10.6.4 根据型号显示描述 351

10.6.5 注册Ajax事件监听器 352

10.7 本章小结 352

第11章 jQuery库详解 353

11.1 jQuery入门 354

11.1.1 理解jQuery的设计 354

学生提问 上面的程序中target对象到底是什么?它怎么会拥有height、width、css这些方法? 355

11.1.2 下载和安装jQuery 355

11.1.3 让jQuery与其他JavaScript库共存 356

11.2 获取jQuery对象 356

11.2.1 jQuery核心函数 356

11.2.2 以CSS选择器访问DOM元素 357

11.2.3 选择器的附加限定词 359

11.2.4 表单相关的选择器 362

11.3 jQuery操作类数组的工具方法 363

11.3.1 过滤相关方法 364

11.3.2 仿DOM导航的相关方法 365

11.3.3 链接方法 367

11.4 jQuery支持的方法 368

11.4.1 jQuery命名空间的方法 368

11.4.2 数据存储的相关方法 370

11.4.3 操作属性的相关方法 370

11.4.4 操作CSS属性的相关方法 371

11.4.5 操作元素内容的相关方法 373

11.4.6 操作DOM节点的相关方法 374

11.5 jQuery事件相关方法 378

11.6 动画效果相关的方法 380

11.7 Ajax相关方法 383

11.7.1 两个工具方法 383

11.7.2 使用load方法 384

11.7.3 使用jQuery.ajax(options)方法 385

11.7.4 使用get/post方法 387

11.8 扩展jQuery和jQuery插件 389

11.9 本章小结 390

第12章 基于jQuery的应用:电子相册系统 391

12.1 实现持久层 392

12.1.1 实现持久化类 392

12.1.2 配置SessionFactory 394

12.2 实现DAO组件 395

12.2.1 DAO接口定义 395

12.2.2 完成DAO组件的实现类 397

12.3 实现业务逻辑层 402

12.3.1 实现业务逻辑组件 402

12.3.2 配置业务逻辑组件 405

12.4 实现客户端调用 405

12.4.1 访问业务逻辑组件 406

12.4.2 处理用户登录 406

12.4.3 获得用户相片列表 408

12.4.4 处理翻页 409

12.4.5 处理文件上传 411

学生提问 当Servlet重定向到album.html页面后,如何弹出如图12.5所示对话框? 413

12.4.6 页面加载时的处理 413

学生提问 HttpSession里的curImg属性是从哪里来的呢? 415

12.5 本章小结 415

本章练习 415

第13章 DWR框架详解 416

13.1 DWR的下载和安装 417

13.1.1 什么是DWR 417

13.1.2 下载和安装DWR 418

13.2 使用DWR 422

13.2.1 编写处理类 422

13.2.2 配置DWR 424

13.3 使用DWR的转换器 425

13.3.1 基本转换器 425

13.3.2 对象转换器 426

13.3.3 数组转换器 428

13.3.4 集合类型转换器 428

13.4 方法声明定义 429

13.5 使用DWR的创建器 430

13.5.1 创建器的配置 430

13.5.2 使用new创建器 432

13.5.3 使用none创建器 433

学生提问 既然none创建器不创建任何对象,哪有对象暴露给JavaScript代码”? 433

13.5.4 使用script创建器 433

13.6 调用服务器端的方法 434

13.6.1 调用服务器端方法的通用配置 434

13.6.2 使用简单回调 435

13.6.3 使用JSON格式的回调 440

13.6.4 将客户端参数传递到回调函数 442

13.7 使用engine.js 443

13.7.1 设置调用顺序 443

13.7.2 设置全局超时时长 443

13.7.3 设置全局Hook函数 444

13.7.4 设置全局处理函数 444

13.7.5 设置常用的全局选项 444

13.7.6 批处理 445

13.8 使用util.js 445

13.8.1 使用$() 446

13.8.2 处理列表 446

13.8.3 处理表格 450

13.8.4 访问HTML元素值 454

学生提问 getValues()可以一次获取多个HTML元素的值,那返回的值如何保存呢? 455

13.8.5 几个工具函数 456

13.9 整合第三方Java EE框架 458

13.9.1 访问Servlet API 458

学生提问 老师你以前教我们:谁调用方法,谁负责为形参赋值。现在我们调用addSession()方法时没有为第二个参数赋值,那第二个参数从哪里获得参数值呢? 460

13.9.2 整合Spring 461

13.10 使用DWR注释 463

13.10.1 初始配置 464

学生提问 如果我有很多类需要列出,那岂不是很臃肿,classes属性值是否支持通配符?如果想列出内部类应该怎么写? 464

13.10.2 标注创建器和转换器 464

13.11 异常处理 465

13.12 反向Ajax 467

13.12.1 配置使用反向Ajax 468

学生提问 反向Ajax技术不是依赖HTTP协议的吗?它怎么可以违反请求-响应架构的规律呢? 468

13.12.2 在Java方法中操作Web页 469

13.12.3 在客户端调用反向Ajax方法 471

13.13 本章小结 472

第14章 基于DWR的应用:即时消息系统 473

14.1 实现Hibernate持久层 474

14.1.1 Hibernate持久层的POJO 474

14.1.2 将POJO映射成持久化对象 476

14.2 实现DAO组件 477

14.2.1 扩展HibernateDaoSupport来实现分页 478

学生提问 为什么不扩展Hibernate Template类来实现分页?扩展HibernateDaoSup-port是不是会引起一些混乱? 478

14.2.2 实现DAO组件 480

14.3 实现业务逻辑组件 482

14.3.1 业务逻辑组件的接口 483

14.3.2 业务逻辑组件的实现类 484

14.3.3 部署业务逻辑组件 487

14.3.4 基于AOP的权限控制 488

14.4 调用业务逻辑组件 490

14.4.1 将Spring容器中的Bean创建成JavaScript对象 490

14.4.2 处理用户登录 491

学生提问 既然已经在JavaScript代码里进行了权限控制,为何还要在业务逻辑层控制呢? 492

14.4.3 处理用户注册 493

14.4.4 处理消息发布 494

14.4.5 获取消息列表 495

14.4.6 处理分页 496

14.4.7 查看消息内容 497

14.4.8 页面加载函数 498

14.5 本章小结 498

本章练习 498

第15章 AjaxTags框架详解 499

15.1 AjaxTags的下载和安装 500

15.1.1 什么是AjaxTags 500

15.1.2 下载和安装AjaxTags 500

15.2 AjaxTags入门 501

15.2.1 编写处理类 502

15.2.2 使用标签 503

15.3 处理类的几种形式 505

15.3.1 使用普通Servlet生成响应 505

15.3.2 使用AjaxXmlBuilder辅助类 507

15.3.3 使用BaseAjaxServlet生成响应 509

15.3.4 使用非Java响应 510

15.4 使用AjaxTags标签 511

15.4.1 使用自动完成标签 511

15.4.2 使用area标签 515

15.4.3 使用anchors标签 516

15.4.4 使用callout标签 517

15.4.5 使用htmlContent标签 518

15.4.6 使用portlet标签 520

15.4.7 使用select标签 522

15.4.8 创建Tab页 523

15.4.9 使用displayTag标签 524

15.4.10 使用tree标签创建树 526

15.4.11 使用updateField标签 528

15.5 关于AjaxTags的选择 530

15.5.1 AjaxTags的优势和使用场景 530

15.5.2 AjaxTags的缺点 531

15.6 本章小结 531

第16章 Ajax实例:简易Blog系统 532

16.1 实现Hibernate持久层 533

16.1.1 设计Hibernate的持久化类 533

16.1.2 完成映射文件 535

16.1.3 数据表的结构 537

16.2 实现DAO组件 538

16.2.1 DAO接口定义 538

16.2.2 实现DAO组件 539

16.2.3 配置DAO组件 542

16.3 实现业务逻辑组件 543

16.3.1 业务逻辑组件的接口 543

16.3.2 业务逻辑组件的实现类 544

16.3.3 配置业务逻辑组件 547

16.4 整合DWR框架 548

16.4.1 配置web.xml文件 548

16.4.2 将Spring容器中的Bean转化成JavaScript对象 549

16.5 在客户端调用JavaScript对象 550

16.5.1 获取Blog文章列表 550

16.5.2 控制Blog文章列表的翻页 551

16.5.3 页面加载时的动作 551

16.5.4 查看评论 552

16.5.5 控制回复的翻页 554

16.5.6 添加回复 554

16.5.7 查看Blog文章内容 556

16.5.8 添加新的Blog文章 556

16.6 本章小结 558

本章练习 558

第17章 电子拍卖系统 559

17.1 总体说明和概要设计 560

17.1.1 系统的总体架构设计 560

17.1.2 数据库设计 561

17.2 实现Hibernate持久化类 562

17.2.1 设计Domain Object 562

17.2.2 实现Domain Object 563

17.3 DAO层实现 568

17.3.1 DAO的基础配置 568

17.3.2 实现DAO组件 569

17.3.3 部署DAO组件 574

17.4 业务逻辑层实现 575

17.4.1 设计业务逻辑组件 575

17.4.2 业务逻辑组件的异常处理 576

17.4.3 发送竞价通知邮件 578

17.4.4 实现业务逻辑层组件 578

17.4.5 业务层的权限控制 587

17.4.6 业务层的任务调度 588

17.4.7 事务管理 589

17.5 暴露业务逻辑方法 590

17.5.1 初始化Spring容器 590

17.5.2 配置DWR的核心Servlet 590

17.5.3 暴露业务逻辑方法 591

17.6 调用业务逻辑方法响应用户请求 592

17.6.1 页面加载时的函数 592

17.6.2 处理返回首页的请求 593

17.6.3 浏览所有流拍物品 593

17.6.4 处理用户登录 596

17.6.5 管理物品 600

17.6.6 管理物品种类 603

17.6.7 查看竞得物品 606

17.6.8 查看自己的竞价记录 608

17.6.9 浏览拍卖物品 609

17.6.10 参与竞价 611

17.7 本章小结 614

本章练习 614

相关图书
作者其它书籍
返回顶部