简介
《精通Java EE:Eclipse Struts2Hibernate Spring整合应用案例》是关于Struts 2、Hibernate、Spring整合应用开发的入门指导书,也是Java EE开发者必备的工具书。《精通Java EE:Eclipse Struts2Hibernate Spring整合应用案例》分为3篇共19章。第1篇分别详细介绍了Struts 2、JSF、Hibernate、Spring的基础知识与应用示例。第2篇介绍了能提高开发效率的工具,例如版本控制工具CVS、单元测试工具JUnit、项目管理工具Maven。第3篇讲解了6个实用的系统:科研信息发布平台、公告管理系统、学生课程及成绩管理系统、个性化定制系统、网上书店和Ajax网上聊天系统。书中的系统采用了JSP、Servlet、Struts 2、JSF、JSON、Hibernate、Spring及Ajax等技术,每一个系统都按照需求分析、系统设计到系统实现的思路,详细阐述了实现细节。《精通Java EE:Eclipse Struts2Hibernate Spring整合应用案例》结构脉络清晰,内容深入浅出。
《精通Java EE:Eclipse Struts2Hibernate Spring整合应用案例》适合对Java有一定了解的Java EE初学者阅读。同时,《精通Java EE:Eclipse Struts2Hibernate Spring整合应用案例》非常适合高校相关专业的学生作为实例指导教材,也可以作为IT培训机构的培训教材。
目录
第1篇 Java EE基础.
第1章 Java Web应用开发简介 2
1.1 Java Web应用概述 2
1.1.1 Java EE概念 2
1.1.2 Java EE的4层模型 2
1.1.3 Java EE组件介绍 3
1.1.4 Java EE结构 4
1.1.5 Web服务器和应用服务器 6
1.2 MVC模式概述 6
1.2.1 MVC设计模式简介 7
1.2.2 MVC的各层定义 7
1.2.3 MVC处理过程 8
1.2.4 MVC的适用范围 8
1.2.5 JSP Model简介 8
1.3 对象持久化概述 9
1.3.1 对象持久化和对象关系映射ORM技术 10
1.3.2 Hibernate简介 11
1.4 常用框架概述 12
1.4.1 Struts 2框架简介 12
1.4.2 Spring框架简介 14
1.5 本章小结 15
第2章 建立开发平台 16
2.1 搭建开发环境 16
2.1.1 安装JDK 16
2.1.2 安装Tomcat 17
2.1.3 设置环境变量 18
2.1.4 获取Eclipse平台所需组件 19
2.1.5 整合获取到的组件 19
2.1.6 配置Eclipse平台 21
2.2 开发一个简单的Java Web实例 23
2.2.1 创建Web Project 23
2.2.2 运行JavaWebTest工程 24
2.3 本章小结 26
第3章 Hibernate起航 27
3.1 建立Hibernate开发环境 27
3.1.1 下载Hibernate 27
3.1.2 下载MySQL 27
3.1.3 安装MySQL 29
3.1.4 配置MySQL 30
3.1.5 验证MySQL的安装 32
3.1.6 下载MySQL驱动 33
3.1.7 下载和安装SQLyog 33
3.2 准备实现Hibernate实例 34
3.2.1 设置用户库 34
3.2.2 设置构建路径 36
3.2.3 创建项目 36
3.2.4 创建数据库及设计数据表 38
3.3 实现Hibernate实例 39
3.3.1 建立可持久化类 40
3.3.2 创建映射文件 42
3.3.3 创建配置文件 42
3.3.4 创建测试类 44
3.3.5 运行 44
3.4 本章小结 45
第4章 Hibernate高级技术 46
4.1 Hibernate核心接口 46
4.2 Hibernate的配置文件应用 47
4.2.1 配置文件中的映射元素 47
4.2.2 组件应用的方法 48
4.2.3 Hibernate的基本配置 48
4.2.4 对象标识符号 50
4.2.5 Hibernate映射类型 50
4.3 Hibernate数据映射 51
4.3.1 一对一映射 51
4.3.2 多对一映射 52
4.4 Hibernate检索方式 53
4.5 本章小结 54
第5章 Java EE基础知识示例解析 55
5.1 JSP示例 55
5.1.1 JSP示例解析 55
5.1.2 会话状态管理 57
5.1.3 引用JavaBean组件 59
5.2 Servlet示例 61
5.3 JDBC示例 62
5.3.1 建立数据库及表 63
5.3.2 使用JDBC操作数据库 63
5.3.3 运行例程 65
5.4 本章小结 66
第6章 初识Struts 2框架 67
6.1 运行用户注册登录系统 67
6.1.1 从Apache官方网站下载Struts 2 67
6.1.2 建立应用Struts 2框架的Web工程 68
6.1.3 建立工程所需用到的数据库 71
6.1.4 部署与运行Web工程 71
6.1.5 编写第1个“Hello您好”页面验证环境 72
6.2 系统功能预览 74
6.3 需求分析 74
6.4 系统设计 75
6.4.1 设计MVC模块 75
6.4.2 设计数据库 76
6.5 创建视图组件 77
6.5.1 创建Struts 2标签视图 77
6.5.2 创建Freemaker模板视图 80
6.6 创建模型组件 81
6.7 创建控制器组件 83
6.7.1 在struts.xml里配置Action映射 83
6.7.2 创建UserAction控制类 84
6.8 添加验证 85
6.9 添加拦截器 87
6.10 本章小结 91
第7章 Struts 2与Ajax 92
7.1 运行用户注册登录系统 92
7.1.1 建立应用Struts 2框架的Web工程 92
7.1.2 建立工程所需用到的数据库 93
7.1.3 运行Web工程 93
7.2 系统重构功能预览 95
7.3 增加注册时验证用户名是否已被注册功能 96
7.4 增加登录时对用户名的自动提示功能 97
7.4.1 使用JSON-plugin工具生成JSON格式 97
7.4.2 使用AutoCompleter标签 99
7.5 本章小结 100
第8章 JSF框架 101
8.1 运行学生管理系统 101
8.1.1 建立应用JSF框架的Web工程 101
8.1.2 运行Web工程 102
8.2 系统功能预览 103
8.3 需求分析 105
8.4 实现各个组件 105
8.4.1 实现视图组件 106
8.4.2 实现模型组件 109
8.4.3 实现导航组件 112
8.4.4 设置配置文件 113
8.4.5 创建视图响应事件 114
8.5 使用MyEclipse提高JSF开发效率 116
8.5.1 为Web工程添加JSF 116
8.5.2 视图配置face-config.xml 117
8.6 本章小结 118
第9章 Spring应用 119
9.1 搭建Spring开发环境 119
9.1.1 下载Spring 119
9.1.2 Eclipse插件Spring IDE的下载与安装 119
9.2 实现Spring实例 121
9.2.1 创建项目 121
9.2.2 创建Spring配置文件 123
9.2.3 创建类 124
9.2.4 添加测试类 125
9.3 实现Spring连接数据库 126
9.3.1 创建数据库 126
9.3.2 创建项目 126
9.3.3 运行测试 129
9.4 本章小结 129
第10章 Spring进阶 130
10.1 Spring IoC和AOP 130
10.1.1 IoC容器 130
10.1.2 AOP(面向方面编程) 131
10.2 Spring对各种服务提供的支持 131
10.3 Spring的视图集成技术 132
10.4 Spring进阶实例 133
10.4.1 创建工程 133
10.4.2 添加验证规则 134
10.4.3 创建数据表 135
10.4.4 创建持久化类 136
10.4.5 配置Spring 138
10.4.6 创建DAO 139
10.4.7 创建Action 141
10.4.8 运行测试 142
10.5 本章小结 144
第2篇 开发工具
第11章 版本控制工具CVS的应用 146
11.1 安装及配置CVSNT 146
11.1.1 获取与安装CVSNT 146
11.1.2 配置CVSNT 147
11.2 创建CVS代码仓库(Repository) 148
11.3 配置CVS账号 149
11.4 配置Eclipse自带的CVS客户端 150
11.4.1 CVS客户端配置过程 150
11.4.2 常见问题解决 150
11.5 CVS的基本操作 151
11.5.1 通过CVS共享项目 151
11.5.2 从CVS中检出项目 153
11.5.3 提交更改的项目 154
11.5.4 冲突及其解决 154
11.6 本地历史记录 156
11.7 本章小结 157
第12章 Java EE下的单元测试 158
12.1 创建JUnit单元测试实例 158
12.1.1 创建JUnitTestProject工程 158
12.1.2 创建JUnit单元测试用例 160
12.1.3 运行JUnit单元测试 161
12.1.4 调试JUnit单元测试 164
12.1.5 创建并运行JUnit测试套件 166
12.2 创建EasyMock模拟对象实例 167
12.2.1 Mock对象原理 167
12.2.2 EasyMock对象类库 167
12.2.3 为Struts 2类添加单元测试代码 168
12.3 DBUnit框架 170
12.3.1 DBUnit原理 170
12.3.2 DAO测试中的脏数据 171
12.3.3 为DAO类添加单元测试代码 172
12.4 本章小结 174
第13章 项目管理Maven 175
13.1 Maven对项目管理的帮助 175
13.1.1 Maven生命周期介绍 175
13.1.2 Maven仓库介绍 176
13.1.3 Maven类库管理介绍 177
13.2 安装Maven与Eclipse插件 177
13.2.1 Maven安装简介 177
13.2.2 M2Eclipse插件简介 178
13.2.3 使用M2Eclipse插件 179
13.3 运行Maven的第1个项目 181
13.3.1 Maven下载Tutorial工程 181
13.3.2 Maven创建Eclipse工程文件 183
13.3.3 在项目中运行Maven 184
13.4 提高速度搭建私服 186
13.5 本章小结 188
第3篇 项目案例
第14章 科研信息发布平台(JSP+Servlet) 190
14.1 系统概述 190
14.2 需求分析 192
14.3 系统功能预览 192
14.3.1 用户浏览功能 193
14.3.2 管理员登录 194
14.3.3 管理新闻 195
14.3.4 管理在研项目信息 196
14.3.5 管理老师信息 199
14.3.6 管理学生信息 201
14.3.7 管理信息发布平台的管理员信息 201
14.4 系统分析 202
14.4.1 系统功能模块划分 202
14.4.2 系统流程分析 203
14.5 系统设计 204
14.5.1 数据库结构设计与实现 204
14.5.2 目录和包结构 207
14.5.3 定义DataProcess 207
14.6 创建数据层对象 210
14.6.1 创建分页类Pageable 210
14.6.2 创建新闻实体类News 213
14.6.3 创建新闻的数据访问类News_Manager 215
14.6.4 创建项目实体类Project 217
14.6.5 创建项目的数据访问类Project_Manager 218
14.6.6 创建教师实体类Teacher 221
14.6.7 创建教师的数据访问类Teacher_Manager 222
14.6.8 创建学生实体类Student 226
14.6.9 创建Student_Manage类 227
14.6.10 创建管理员实体类Manager 230
14.6.11 创建管理员的数据访问类Admin_Manage 231
14.7 功能实现 234
14.7.1 配置本系统使用到的Servlet 234
14.7.2 管理员登录LoginServlet 237
14.7.3 添加管理员AddManagerServlet 238
14.7.4 修改管理员信息EditManagerServlet 238
14.7.5 添加新闻AddNewServlet 239
14.7.6 编辑新闻EditNewsServlet 240
14.7.7 添加在研项目AddProjectServlet 240
14.7.8 编辑在研项目信息EditProjectServlet 241
14.7.9 添加学生AddStudentServlet 242
14.7.10 编辑学生信息EditStudent 242
14.7.11 添加教师信息AddTeacherServlet 243
14.7.12 编辑教师信息EditTeacherServlet 244
14.8 实现自定义标签.. 244
14.8.1 配置自定义标签 244
14.8.2 创建标签类NewsTag4guest 246
14.8.3 创建标签类News4news 247
14.8.4 创建标签类NewsTag 249
14.9 前台页面的实现 251
14.9.1 平台首页的实现 251
14.9.2 新闻浏览页的实现 253
14.9.3 在研项目页的实现 255
14.9.4 教师信息浏览页的实现 255
14.9.5 学生信息浏览页的实现 258
14.10 后台管理页面的实现 258
14.10.1 后台登录的实现 258
14.10.2 后台首页的实现 260
14.10.3 查看新闻页面的实现 263
14.10.4 添加新闻页面的实现 264
14.10.5 删除新闻页面的实现 266
14.10.6 编辑新闻页面的实现 267
14.11 运行工程 268
14.11.1 开发平台 269
14.11.2 创建工程 269
14.11.3 运行工程 270
14.12 本章小结 271
第15章 公告管理系统(Struts 2) 272
15.1 系统概述 272
15.2 需求分析 272
15.2.1 数据流图 273
15.2.2 UML用例图 273
15.3 系统功能预览 274
15.3.1 后台功能展示 274
15.3.2 前台功能展示 279
15.4 系统设计 286
15.4.1 系统业务实体设计 286
15.4.2 数据库设计 286
15.5 设计自定义标签 287
15.5.1 定义标签处理方法类PagingTag 288
15.5.2 定义标签库描述(TLD)文件mytag.tld 290
15.5.3 配置web.xml文件 290
15.5.4 分页辅助类文件 291
15.6 系统实现前瞻 292
15.7 管理员登录功能 292
15.7.1 实现管理员登录功能的组件 292
15.7.2 视图组件adminlogin.jsp 293
15.7.3 视图组件中所包含的公有文件 294
15.7.4 模型组件User.java 295
15.7.5 控制器组件AdminLoginAction.java 297
15.7.6 本部分程序中用到的辅助类方法 298
15.8 浏览所有用户功能 299
15.8.1 控制器组件UserManagerAction.java 300
15.8.2 视图组件userlist.jsp 300
15.8.3 本部分程序中用到的辅助类方法 302
15.9 新建用户功能 303
15.9.1 实现新建用户功能的各个组件 303
15.9.2 控制器组件AuthenticationInterceptor.java 304
15.9.3 视图组件newUser.jsp 305
15.9.4 模型组件User.java 306
15.9.5 控制器组件UserManagerAction.java 308
15.9.6 本部分程序中用到的辅助类方法 309
15.10 编辑用户功能 310
15.10.1 实现编辑用户功能的各个组件 310
15.10.2 控制器组件AuthenticationInterceptor.java 311
15.10.3 视图组件useredit.jsp 312
15.10.4 模型组件User.java 313
15.10.5 控制器组件UserEditAction.java 316
15.10.6 本部分程序中用到的辅助类方法 316
15.11 删除用户功能 317
15.11.1 控制器组件AuthenticationInterceptor.java 317
15.11.2 控制器组件UserManagerAction.java 318
15.11.3 本部分程序中用到的辅助类方法 318
15.12 模糊查找用户功能 320
15.12.1 控制器组件UserSearchAction.java 320
15.12.2 本部分程序中用到的辅助类方法 320
15.13 管理员注销登录功能 322
15.14 用户登录功能 323
15.14.1 实现用户登录功能的组件 323
15.14.2 视图组件userlogin.jsp 323
15.14.3 模型组件User.java 324
15.14.4 控制器组件UserLoginAction.java 327
15.14.5 本部分程序中用到的辅助类方法 328
15.15 浏览公告功能 329
15.15.1 控制器组件NoticeManagerAction.java 329
15.15.2 视图组件noticelist.jsp 331
15.15.3 本部分程序中用到的辅助类方法 331
15.16 撰写公告功能 333
15.16.1 实现撰写公告功能的各个组件 333
15.16.2 控制器组件AuthenticationInterceptor.java 334
15.16.3 视图组件newnotice.jsp 334
15.16.4 模型组件Notice.java 335
15.16.5 控制器组件NoticeManagerAction.java 337
15.16.6 本部分程序中用到的辅助类方法 340
15.17 编辑公告功能 341
15.17.1 实现编辑公告功能的各个组件 341
15.17.2 控制器组件NoticeManagerAction.java 342
15.17.3 视图组件noticemodify.jsp 342
15.17.4 模型组件Notice.java 343
15.17.5 本部分程序中用到的辅助类方法 345
15.18 删除公告功能 346
15.18.1 控制器组件NoticeManagerAction.java 346
15.18.2 本部分程序中用到的辅助类方法 347
15.19 用户注销登录功能 348
15.20 运行工程 349
15.20.1 开发平台 349
15.20.2 创建工程 349
15.20.3 运行工程 351
15.21 本章小结 352
第16章 学生课程及成绩管理系统(JSF+Hibernate) 353
16.1 系统概述 353
16.2 需求分析 354
16.3 系统功能预览 354
16.3.1 用户登录功能 354
16.3.2 管理员登录后的选择功能 355
16.3.3 管理员管理学生信息的功能 355
16.3.4 管理员管理教师信息的功能 357
16.3.5 管理员管理课程的功能 358
16.3.6 管理员管理班级的功能 360
16.3.7 学生用户登录后的选择功能 361
16.3.8 学生选修课程的功能 361
16.3.9 学生查看成绩的功能 362
16.3.10 学生更新个人信息的功能 362
16.3.11 教师用户登录后的选择功能 363
16.3.12 教师选择学生功能 363
16.3.13 教师录入学生成绩的功能 364
16.4 系统分析 364
16.4.1 系统功能模块划分 364
16.4.2 系统流程分析 365
16.5 系统设计 367
16.5.1 数据库逻辑结构设计 367
16.5.2 创建数据库 368
16.5.3 创建表的脚本文件 370
16.5.4 目录和包结构 371
16.5.5 定义HibernateUtil 372
16.5.6 定义SetCharacterEncoding-Filter 375
16.5.7 数据层设计 376
16.6 页面设计及实现 377
16.6.1 登录页面 377
16.6.2 管理员管理首页 380
16.6.3 管理员管理学生页面 380
16.6.4 管理员管理教师页面 388
16.6.5 管理员管理课程页面 389
16.6.6 管理员管理班级页面 391
16.6.7 学生选课页面 392
16.6.8 学生查看成绩页面 392
16.6.9 教师选择学生页面 393
16.6.10 教师公布成绩页面 394
16.7 数据层代码实现 394
16.7.1 创建对象/关系映射文件 395
16.7.2 创建持久化类 399
16.7.3 创建实现DAO模式的公用部分 408
16.8 功能代码实现概述 411
16.9 登录功能 411
16.9.1 登录功能的逻辑设计 411
16.9.2 配置JSF 412
16.9.3 登录功能 412
16.10 管理员管理学生功能 415
16.10.1 登录功能的逻辑设计 416
16.10.2 配置JSF 416
16.10.3 创建模型StudentBean 417
16.10.4 创建学生的数据访问对象StudentDAOImp 419
16.10.5 查看学生列表功能 421
16.10.6 添加学生功能 421
16.10.7 删除学生功能 422
16.10.8 编辑学生信息功能 423
16.11 管理员管理教师功能 424
16.11.1 登录功能的逻辑设计 425
16.11.2 配置JSF 425
16.11.3 创建模型TeacherBean 426
16.11.4 创建教师的数据访问对象TeacherDAOImp 427
16.11.5 查看教师列表功能 429
16.11.6 添加教师功能 429
16.11.7 删除教师功能 430
16.11.8 编辑教师信息功能 431
16.12 管理员管理课程 432
16.12.1 登录功能的逻辑设计 432
16.12.2 配置JSF 432
16.12.3 创建模型CourseBean 433
16.12.4 创建课程的数据访问对象CourseDAOImp 434
16.12.5 查看课程列表功能 436
16.12.6 添加课程功能 437
16.12.7 删除课程功能 437
16.12.8 编辑课程信息功能 438
16.13 管理员管理班级 439
16.13.1 登录功能的逻辑设计 439
16.13.2 配置JSF 440
16.13.3 创建模型ClassesBean 440
16.13.4 创建班级的数据访问对象ClassesDAOImp 442
16.13.5 查看班级列表功能 443
16.13.6 添加班级功能 444
16.13.7 删除班级功能 445
16.13.8 编辑班级信息功能 446
16.14 运行工程 447
16.14.1 开发平台 448
16.14.2 创建工程 448
16.14.3 运行工程 451
16.15 本章小结 453
第17章 个性化定制系统(Ajax+Spring+Hibernate) 454
17.1 Ajax技术简介 454
17.1.1 什么是Ajax 454
17.1.2 为什么使用Ajax 454
17.1.3 如何使用Ajax 456
17.2 系统概述 456
17.3 需求分析 457
17.4 系统功能预览 457
17.4.1 隐藏或显示页面左侧列表 457
17.4.2 定制列表内容 458
17.4.3 动态的下拉列表 458
17.4.4 向页面右侧添加“小窗口” 459
17.4.5 删除页面右侧的“小窗口” 459
17.4.6 编辑“小窗口” 459
17.4.7 页面右侧“小窗口”的拖动效果 460
17.5 系统设计 460
17.5.1 数据库结构设计与实现 460
17.5.2 目录和包结构 462
17.5.3 数据层设计 463
17.5.4 创建AppContext类 465
17.6 创建持久化类和映射文件 465
17.6.1 Subject的持久化类及映射文件 466
17.6.2 UserOrderInfo的持久化类及映射文件 468
17.6.3 TbUserInfo的持久化类及映射文件 470
17.7 创建数据访问对象DAO类 470
17.7.1 创建分类科目的数据访问对象SubjectDAO 471
17.7.2 创建用户信息的数据访问对象TbUserInfoDAO 472
17.7.3 创建用户定制信息的数据访问对象UserOrderInfoDAO 474
17.8 创建Service类 477
17.8.1 创建SubjectService 477
17.8.2 创建UserOrderInfoService 479
17.8.3 创建TbUserInfoService 480
17.9 实现定制功能 482
17.9.1 创建定制页面order.jsp 482
17.9.2 显示可定制的科目列表 483
17.9.3 创建SaveOrderedSubject 484
17.9.4 在web.xml中进行配置 485
17.10 为实现浏览页面的功能做准备 486
17.10.1 “小窗口”的结构 486
17.10.2 定义样式表 487
17.10.3 页面的结构 489
17.11 Ajax实现动态功能 490
17.11.1 Ajax引擎的实现 490
17.11.2 与Ajax引擎交互的服务器端程序GetSubjectServlet 491
17.11.3 分析服务器端返回的信息 492
17.11.4 显示页面右侧的“小窗口” 493
17.11.5 页面左侧的下拉列表 495
17.11.6 修改“小窗口”的显示数量 496
17.11.7 删除“小窗口” 498
17.12 拖动“小窗口” 499
17.13 运行工程 502
17.13.1 开发平台 502
17.13.2 创建工程 502
17.13.3 运行工程 504
17.14 本章小结 505
第18章 网上书店(Struts 2+Hibernate) 506
18.1 系统概述 506
18.2 需求分析 506
18.2.1 需求概述 507
18.2.2 用例图 507
18.2.3 数据流图 508
18.3 系统功能预览 508
18.4 系统设计 513
18.4.1 系统架构设计 513
18.4.2 业务实体设计 513
18.4.3 设计域模型 514
18.4.4 设计数据模型 515
18.4.5 创建对象/关系映射文件 519
18.5 系统首页设计 524
18.5.1 公有文件 524
18.5.2 取出首页用到的数据 526
18.5.3 用到的JavaScript方法 526
18.5.4 用户信息版块 527
18.5.5 订购信息版块 529
18.5.6 新书推荐版块 529
18.5.7 页面效果 531
18.6 管理员管理图书设计 531
18.6.1 管理员菜单权限控制 531
18.6.2 新增图书 532
18.6.3 修改图书 533
18.6.4 删除图书 534
18.6.5 浏览所有图书 535
18.6.6 页面效果 536
18.7 购物车设计 537
18.7.1 图书放进购物车 537
18.7.2 显示购物车 538
18.7.3 付款并生成订单 538
18.7.4 显示订单 539
18.7.5 页面效果 540
18.8 运行工程 540
18.8.1 开发平台 540
18.8.2 创建工程 540
18.8.3 运行工程 544
18.9 本章小结 545
第19章 Ajax网上聊天系统(Struts 2+Spring+Hibernate) 547
19.1 系统概述 547
19.2 需求分析 548
19.2.1 需求概述 548
19.2.2 用例图 548
19.3 系统功能预览 549
19.3.1 用户功能预览 549
19.3.2 管理员功能预览 552
19.4 系统设计 554
19.4.1 系统架构设计 554
19.4.2 业务实体设计 554
19.4.3 设计域模型 554
19.4.4 设计数据模型 554
19.4.5 创建对象/关系映射文件 557
19.4.6 创建Spring配置文件 559
19.5 网上聊天模块 562
19.5.1 网上聊天模块总览 562
19.5.2 聊天室视图chatroom.jsp 563
19.5.3 Ajax组件 564
19.5.4 保存消息控制器MessageAction.java 566
19.5.5 显示消息列表控制器ChatViewAction.java 568
19.5.6 服务层ImessageService接口 569
19.5.7 数据持久层MessageDaoImpl类 570
19.6 用户模块 571
19.6.1 用户模块总览 571
19.6.2 视图组件registration.jsp 572
19.6.3 控制器组件UserManageAction.java 573
19.6.4 服务层IUserService接口 575
19.6.5 数据持久层UserDaoImpl类 576
19.7 房间模块 577
19.7.1 房间模块总览 577
19.7.2 新增临时房间视图mbroomadd.jsp 578
19.7.3 新建临时房间控制器RoomEnterAction.java 578
19.7.4 服务层IRoomService接口 580
19.7.5 数据持久层RoomDaoImpl类 581
19.8 运行工程 582
19.8.1 开发平台 582
19.8.2 创建工程 582
19.8.3 运行工程 586
19.9 本章小结... 588
第1章 Java Web应用开发简介 2
1.1 Java Web应用概述 2
1.1.1 Java EE概念 2
1.1.2 Java EE的4层模型 2
1.1.3 Java EE组件介绍 3
1.1.4 Java EE结构 4
1.1.5 Web服务器和应用服务器 6
1.2 MVC模式概述 6
1.2.1 MVC设计模式简介 7
1.2.2 MVC的各层定义 7
1.2.3 MVC处理过程 8
1.2.4 MVC的适用范围 8
1.2.5 JSP Model简介 8
1.3 对象持久化概述 9
1.3.1 对象持久化和对象关系映射ORM技术 10
1.3.2 Hibernate简介 11
1.4 常用框架概述 12
1.4.1 Struts 2框架简介 12
1.4.2 Spring框架简介 14
1.5 本章小结 15
第2章 建立开发平台 16
2.1 搭建开发环境 16
2.1.1 安装JDK 16
2.1.2 安装Tomcat 17
2.1.3 设置环境变量 18
2.1.4 获取Eclipse平台所需组件 19
2.1.5 整合获取到的组件 19
2.1.6 配置Eclipse平台 21
2.2 开发一个简单的Java Web实例 23
2.2.1 创建Web Project 23
2.2.2 运行JavaWebTest工程 24
2.3 本章小结 26
第3章 Hibernate起航 27
3.1 建立Hibernate开发环境 27
3.1.1 下载Hibernate 27
3.1.2 下载MySQL 27
3.1.3 安装MySQL 29
3.1.4 配置MySQL 30
3.1.5 验证MySQL的安装 32
3.1.6 下载MySQL驱动 33
3.1.7 下载和安装SQLyog 33
3.2 准备实现Hibernate实例 34
3.2.1 设置用户库 34
3.2.2 设置构建路径 36
3.2.3 创建项目 36
3.2.4 创建数据库及设计数据表 38
3.3 实现Hibernate实例 39
3.3.1 建立可持久化类 40
3.3.2 创建映射文件 42
3.3.3 创建配置文件 42
3.3.4 创建测试类 44
3.3.5 运行 44
3.4 本章小结 45
第4章 Hibernate高级技术 46
4.1 Hibernate核心接口 46
4.2 Hibernate的配置文件应用 47
4.2.1 配置文件中的映射元素 47
4.2.2 组件应用的方法 48
4.2.3 Hibernate的基本配置 48
4.2.4 对象标识符号 50
4.2.5 Hibernate映射类型 50
4.3 Hibernate数据映射 51
4.3.1 一对一映射 51
4.3.2 多对一映射 52
4.4 Hibernate检索方式 53
4.5 本章小结 54
第5章 Java EE基础知识示例解析 55
5.1 JSP示例 55
5.1.1 JSP示例解析 55
5.1.2 会话状态管理 57
5.1.3 引用JavaBean组件 59
5.2 Servlet示例 61
5.3 JDBC示例 62
5.3.1 建立数据库及表 63
5.3.2 使用JDBC操作数据库 63
5.3.3 运行例程 65
5.4 本章小结 66
第6章 初识Struts 2框架 67
6.1 运行用户注册登录系统 67
6.1.1 从Apache官方网站下载Struts 2 67
6.1.2 建立应用Struts 2框架的Web工程 68
6.1.3 建立工程所需用到的数据库 71
6.1.4 部署与运行Web工程 71
6.1.5 编写第1个“Hello您好”页面验证环境 72
6.2 系统功能预览 74
6.3 需求分析 74
6.4 系统设计 75
6.4.1 设计MVC模块 75
6.4.2 设计数据库 76
6.5 创建视图组件 77
6.5.1 创建Struts 2标签视图 77
6.5.2 创建Freemaker模板视图 80
6.6 创建模型组件 81
6.7 创建控制器组件 83
6.7.1 在struts.xml里配置Action映射 83
6.7.2 创建UserAction控制类 84
6.8 添加验证 85
6.9 添加拦截器 87
6.10 本章小结 91
第7章 Struts 2与Ajax 92
7.1 运行用户注册登录系统 92
7.1.1 建立应用Struts 2框架的Web工程 92
7.1.2 建立工程所需用到的数据库 93
7.1.3 运行Web工程 93
7.2 系统重构功能预览 95
7.3 增加注册时验证用户名是否已被注册功能 96
7.4 增加登录时对用户名的自动提示功能 97
7.4.1 使用JSON-plugin工具生成JSON格式 97
7.4.2 使用AutoCompleter标签 99
7.5 本章小结 100
第8章 JSF框架 101
8.1 运行学生管理系统 101
8.1.1 建立应用JSF框架的Web工程 101
8.1.2 运行Web工程 102
8.2 系统功能预览 103
8.3 需求分析 105
8.4 实现各个组件 105
8.4.1 实现视图组件 106
8.4.2 实现模型组件 109
8.4.3 实现导航组件 112
8.4.4 设置配置文件 113
8.4.5 创建视图响应事件 114
8.5 使用MyEclipse提高JSF开发效率 116
8.5.1 为Web工程添加JSF 116
8.5.2 视图配置face-config.xml 117
8.6 本章小结 118
第9章 Spring应用 119
9.1 搭建Spring开发环境 119
9.1.1 下载Spring 119
9.1.2 Eclipse插件Spring IDE的下载与安装 119
9.2 实现Spring实例 121
9.2.1 创建项目 121
9.2.2 创建Spring配置文件 123
9.2.3 创建类 124
9.2.4 添加测试类 125
9.3 实现Spring连接数据库 126
9.3.1 创建数据库 126
9.3.2 创建项目 126
9.3.3 运行测试 129
9.4 本章小结 129
第10章 Spring进阶 130
10.1 Spring IoC和AOP 130
10.1.1 IoC容器 130
10.1.2 AOP(面向方面编程) 131
10.2 Spring对各种服务提供的支持 131
10.3 Spring的视图集成技术 132
10.4 Spring进阶实例 133
10.4.1 创建工程 133
10.4.2 添加验证规则 134
10.4.3 创建数据表 135
10.4.4 创建持久化类 136
10.4.5 配置Spring 138
10.4.6 创建DAO 139
10.4.7 创建Action 141
10.4.8 运行测试 142
10.5 本章小结 144
第2篇 开发工具
第11章 版本控制工具CVS的应用 146
11.1 安装及配置CVSNT 146
11.1.1 获取与安装CVSNT 146
11.1.2 配置CVSNT 147
11.2 创建CVS代码仓库(Repository) 148
11.3 配置CVS账号 149
11.4 配置Eclipse自带的CVS客户端 150
11.4.1 CVS客户端配置过程 150
11.4.2 常见问题解决 150
11.5 CVS的基本操作 151
11.5.1 通过CVS共享项目 151
11.5.2 从CVS中检出项目 153
11.5.3 提交更改的项目 154
11.5.4 冲突及其解决 154
11.6 本地历史记录 156
11.7 本章小结 157
第12章 Java EE下的单元测试 158
12.1 创建JUnit单元测试实例 158
12.1.1 创建JUnitTestProject工程 158
12.1.2 创建JUnit单元测试用例 160
12.1.3 运行JUnit单元测试 161
12.1.4 调试JUnit单元测试 164
12.1.5 创建并运行JUnit测试套件 166
12.2 创建EasyMock模拟对象实例 167
12.2.1 Mock对象原理 167
12.2.2 EasyMock对象类库 167
12.2.3 为Struts 2类添加单元测试代码 168
12.3 DBUnit框架 170
12.3.1 DBUnit原理 170
12.3.2 DAO测试中的脏数据 171
12.3.3 为DAO类添加单元测试代码 172
12.4 本章小结 174
第13章 项目管理Maven 175
13.1 Maven对项目管理的帮助 175
13.1.1 Maven生命周期介绍 175
13.1.2 Maven仓库介绍 176
13.1.3 Maven类库管理介绍 177
13.2 安装Maven与Eclipse插件 177
13.2.1 Maven安装简介 177
13.2.2 M2Eclipse插件简介 178
13.2.3 使用M2Eclipse插件 179
13.3 运行Maven的第1个项目 181
13.3.1 Maven下载Tutorial工程 181
13.3.2 Maven创建Eclipse工程文件 183
13.3.3 在项目中运行Maven 184
13.4 提高速度搭建私服 186
13.5 本章小结 188
第3篇 项目案例
第14章 科研信息发布平台(JSP+Servlet) 190
14.1 系统概述 190
14.2 需求分析 192
14.3 系统功能预览 192
14.3.1 用户浏览功能 193
14.3.2 管理员登录 194
14.3.3 管理新闻 195
14.3.4 管理在研项目信息 196
14.3.5 管理老师信息 199
14.3.6 管理学生信息 201
14.3.7 管理信息发布平台的管理员信息 201
14.4 系统分析 202
14.4.1 系统功能模块划分 202
14.4.2 系统流程分析 203
14.5 系统设计 204
14.5.1 数据库结构设计与实现 204
14.5.2 目录和包结构 207
14.5.3 定义DataProcess 207
14.6 创建数据层对象 210
14.6.1 创建分页类Pageable 210
14.6.2 创建新闻实体类News 213
14.6.3 创建新闻的数据访问类News_Manager 215
14.6.4 创建项目实体类Project 217
14.6.5 创建项目的数据访问类Project_Manager 218
14.6.6 创建教师实体类Teacher 221
14.6.7 创建教师的数据访问类Teacher_Manager 222
14.6.8 创建学生实体类Student 226
14.6.9 创建Student_Manage类 227
14.6.10 创建管理员实体类Manager 230
14.6.11 创建管理员的数据访问类Admin_Manage 231
14.7 功能实现 234
14.7.1 配置本系统使用到的Servlet 234
14.7.2 管理员登录LoginServlet 237
14.7.3 添加管理员AddManagerServlet 238
14.7.4 修改管理员信息EditManagerServlet 238
14.7.5 添加新闻AddNewServlet 239
14.7.6 编辑新闻EditNewsServlet 240
14.7.7 添加在研项目AddProjectServlet 240
14.7.8 编辑在研项目信息EditProjectServlet 241
14.7.9 添加学生AddStudentServlet 242
14.7.10 编辑学生信息EditStudent 242
14.7.11 添加教师信息AddTeacherServlet 243
14.7.12 编辑教师信息EditTeacherServlet 244
14.8 实现自定义标签.. 244
14.8.1 配置自定义标签 244
14.8.2 创建标签类NewsTag4guest 246
14.8.3 创建标签类News4news 247
14.8.4 创建标签类NewsTag 249
14.9 前台页面的实现 251
14.9.1 平台首页的实现 251
14.9.2 新闻浏览页的实现 253
14.9.3 在研项目页的实现 255
14.9.4 教师信息浏览页的实现 255
14.9.5 学生信息浏览页的实现 258
14.10 后台管理页面的实现 258
14.10.1 后台登录的实现 258
14.10.2 后台首页的实现 260
14.10.3 查看新闻页面的实现 263
14.10.4 添加新闻页面的实现 264
14.10.5 删除新闻页面的实现 266
14.10.6 编辑新闻页面的实现 267
14.11 运行工程 268
14.11.1 开发平台 269
14.11.2 创建工程 269
14.11.3 运行工程 270
14.12 本章小结 271
第15章 公告管理系统(Struts 2) 272
15.1 系统概述 272
15.2 需求分析 272
15.2.1 数据流图 273
15.2.2 UML用例图 273
15.3 系统功能预览 274
15.3.1 后台功能展示 274
15.3.2 前台功能展示 279
15.4 系统设计 286
15.4.1 系统业务实体设计 286
15.4.2 数据库设计 286
15.5 设计自定义标签 287
15.5.1 定义标签处理方法类PagingTag 288
15.5.2 定义标签库描述(TLD)文件mytag.tld 290
15.5.3 配置web.xml文件 290
15.5.4 分页辅助类文件 291
15.6 系统实现前瞻 292
15.7 管理员登录功能 292
15.7.1 实现管理员登录功能的组件 292
15.7.2 视图组件adminlogin.jsp 293
15.7.3 视图组件中所包含的公有文件 294
15.7.4 模型组件User.java 295
15.7.5 控制器组件AdminLoginAction.java 297
15.7.6 本部分程序中用到的辅助类方法 298
15.8 浏览所有用户功能 299
15.8.1 控制器组件UserManagerAction.java 300
15.8.2 视图组件userlist.jsp 300
15.8.3 本部分程序中用到的辅助类方法 302
15.9 新建用户功能 303
15.9.1 实现新建用户功能的各个组件 303
15.9.2 控制器组件AuthenticationInterceptor.java 304
15.9.3 视图组件newUser.jsp 305
15.9.4 模型组件User.java 306
15.9.5 控制器组件UserManagerAction.java 308
15.9.6 本部分程序中用到的辅助类方法 309
15.10 编辑用户功能 310
15.10.1 实现编辑用户功能的各个组件 310
15.10.2 控制器组件AuthenticationInterceptor.java 311
15.10.3 视图组件useredit.jsp 312
15.10.4 模型组件User.java 313
15.10.5 控制器组件UserEditAction.java 316
15.10.6 本部分程序中用到的辅助类方法 316
15.11 删除用户功能 317
15.11.1 控制器组件AuthenticationInterceptor.java 317
15.11.2 控制器组件UserManagerAction.java 318
15.11.3 本部分程序中用到的辅助类方法 318
15.12 模糊查找用户功能 320
15.12.1 控制器组件UserSearchAction.java 320
15.12.2 本部分程序中用到的辅助类方法 320
15.13 管理员注销登录功能 322
15.14 用户登录功能 323
15.14.1 实现用户登录功能的组件 323
15.14.2 视图组件userlogin.jsp 323
15.14.3 模型组件User.java 324
15.14.4 控制器组件UserLoginAction.java 327
15.14.5 本部分程序中用到的辅助类方法 328
15.15 浏览公告功能 329
15.15.1 控制器组件NoticeManagerAction.java 329
15.15.2 视图组件noticelist.jsp 331
15.15.3 本部分程序中用到的辅助类方法 331
15.16 撰写公告功能 333
15.16.1 实现撰写公告功能的各个组件 333
15.16.2 控制器组件AuthenticationInterceptor.java 334
15.16.3 视图组件newnotice.jsp 334
15.16.4 模型组件Notice.java 335
15.16.5 控制器组件NoticeManagerAction.java 337
15.16.6 本部分程序中用到的辅助类方法 340
15.17 编辑公告功能 341
15.17.1 实现编辑公告功能的各个组件 341
15.17.2 控制器组件NoticeManagerAction.java 342
15.17.3 视图组件noticemodify.jsp 342
15.17.4 模型组件Notice.java 343
15.17.5 本部分程序中用到的辅助类方法 345
15.18 删除公告功能 346
15.18.1 控制器组件NoticeManagerAction.java 346
15.18.2 本部分程序中用到的辅助类方法 347
15.19 用户注销登录功能 348
15.20 运行工程 349
15.20.1 开发平台 349
15.20.2 创建工程 349
15.20.3 运行工程 351
15.21 本章小结 352
第16章 学生课程及成绩管理系统(JSF+Hibernate) 353
16.1 系统概述 353
16.2 需求分析 354
16.3 系统功能预览 354
16.3.1 用户登录功能 354
16.3.2 管理员登录后的选择功能 355
16.3.3 管理员管理学生信息的功能 355
16.3.4 管理员管理教师信息的功能 357
16.3.5 管理员管理课程的功能 358
16.3.6 管理员管理班级的功能 360
16.3.7 学生用户登录后的选择功能 361
16.3.8 学生选修课程的功能 361
16.3.9 学生查看成绩的功能 362
16.3.10 学生更新个人信息的功能 362
16.3.11 教师用户登录后的选择功能 363
16.3.12 教师选择学生功能 363
16.3.13 教师录入学生成绩的功能 364
16.4 系统分析 364
16.4.1 系统功能模块划分 364
16.4.2 系统流程分析 365
16.5 系统设计 367
16.5.1 数据库逻辑结构设计 367
16.5.2 创建数据库 368
16.5.3 创建表的脚本文件 370
16.5.4 目录和包结构 371
16.5.5 定义HibernateUtil 372
16.5.6 定义SetCharacterEncoding-Filter 375
16.5.7 数据层设计 376
16.6 页面设计及实现 377
16.6.1 登录页面 377
16.6.2 管理员管理首页 380
16.6.3 管理员管理学生页面 380
16.6.4 管理员管理教师页面 388
16.6.5 管理员管理课程页面 389
16.6.6 管理员管理班级页面 391
16.6.7 学生选课页面 392
16.6.8 学生查看成绩页面 392
16.6.9 教师选择学生页面 393
16.6.10 教师公布成绩页面 394
16.7 数据层代码实现 394
16.7.1 创建对象/关系映射文件 395
16.7.2 创建持久化类 399
16.7.3 创建实现DAO模式的公用部分 408
16.8 功能代码实现概述 411
16.9 登录功能 411
16.9.1 登录功能的逻辑设计 411
16.9.2 配置JSF 412
16.9.3 登录功能 412
16.10 管理员管理学生功能 415
16.10.1 登录功能的逻辑设计 416
16.10.2 配置JSF 416
16.10.3 创建模型StudentBean 417
16.10.4 创建学生的数据访问对象StudentDAOImp 419
16.10.5 查看学生列表功能 421
16.10.6 添加学生功能 421
16.10.7 删除学生功能 422
16.10.8 编辑学生信息功能 423
16.11 管理员管理教师功能 424
16.11.1 登录功能的逻辑设计 425
16.11.2 配置JSF 425
16.11.3 创建模型TeacherBean 426
16.11.4 创建教师的数据访问对象TeacherDAOImp 427
16.11.5 查看教师列表功能 429
16.11.6 添加教师功能 429
16.11.7 删除教师功能 430
16.11.8 编辑教师信息功能 431
16.12 管理员管理课程 432
16.12.1 登录功能的逻辑设计 432
16.12.2 配置JSF 432
16.12.3 创建模型CourseBean 433
16.12.4 创建课程的数据访问对象CourseDAOImp 434
16.12.5 查看课程列表功能 436
16.12.6 添加课程功能 437
16.12.7 删除课程功能 437
16.12.8 编辑课程信息功能 438
16.13 管理员管理班级 439
16.13.1 登录功能的逻辑设计 439
16.13.2 配置JSF 440
16.13.3 创建模型ClassesBean 440
16.13.4 创建班级的数据访问对象ClassesDAOImp 442
16.13.5 查看班级列表功能 443
16.13.6 添加班级功能 444
16.13.7 删除班级功能 445
16.13.8 编辑班级信息功能 446
16.14 运行工程 447
16.14.1 开发平台 448
16.14.2 创建工程 448
16.14.3 运行工程 451
16.15 本章小结 453
第17章 个性化定制系统(Ajax+Spring+Hibernate) 454
17.1 Ajax技术简介 454
17.1.1 什么是Ajax 454
17.1.2 为什么使用Ajax 454
17.1.3 如何使用Ajax 456
17.2 系统概述 456
17.3 需求分析 457
17.4 系统功能预览 457
17.4.1 隐藏或显示页面左侧列表 457
17.4.2 定制列表内容 458
17.4.3 动态的下拉列表 458
17.4.4 向页面右侧添加“小窗口” 459
17.4.5 删除页面右侧的“小窗口” 459
17.4.6 编辑“小窗口” 459
17.4.7 页面右侧“小窗口”的拖动效果 460
17.5 系统设计 460
17.5.1 数据库结构设计与实现 460
17.5.2 目录和包结构 462
17.5.3 数据层设计 463
17.5.4 创建AppContext类 465
17.6 创建持久化类和映射文件 465
17.6.1 Subject的持久化类及映射文件 466
17.6.2 UserOrderInfo的持久化类及映射文件 468
17.6.3 TbUserInfo的持久化类及映射文件 470
17.7 创建数据访问对象DAO类 470
17.7.1 创建分类科目的数据访问对象SubjectDAO 471
17.7.2 创建用户信息的数据访问对象TbUserInfoDAO 472
17.7.3 创建用户定制信息的数据访问对象UserOrderInfoDAO 474
17.8 创建Service类 477
17.8.1 创建SubjectService 477
17.8.2 创建UserOrderInfoService 479
17.8.3 创建TbUserInfoService 480
17.9 实现定制功能 482
17.9.1 创建定制页面order.jsp 482
17.9.2 显示可定制的科目列表 483
17.9.3 创建SaveOrderedSubject 484
17.9.4 在web.xml中进行配置 485
17.10 为实现浏览页面的功能做准备 486
17.10.1 “小窗口”的结构 486
17.10.2 定义样式表 487
17.10.3 页面的结构 489
17.11 Ajax实现动态功能 490
17.11.1 Ajax引擎的实现 490
17.11.2 与Ajax引擎交互的服务器端程序GetSubjectServlet 491
17.11.3 分析服务器端返回的信息 492
17.11.4 显示页面右侧的“小窗口” 493
17.11.5 页面左侧的下拉列表 495
17.11.6 修改“小窗口”的显示数量 496
17.11.7 删除“小窗口” 498
17.12 拖动“小窗口” 499
17.13 运行工程 502
17.13.1 开发平台 502
17.13.2 创建工程 502
17.13.3 运行工程 504
17.14 本章小结 505
第18章 网上书店(Struts 2+Hibernate) 506
18.1 系统概述 506
18.2 需求分析 506
18.2.1 需求概述 507
18.2.2 用例图 507
18.2.3 数据流图 508
18.3 系统功能预览 508
18.4 系统设计 513
18.4.1 系统架构设计 513
18.4.2 业务实体设计 513
18.4.3 设计域模型 514
18.4.4 设计数据模型 515
18.4.5 创建对象/关系映射文件 519
18.5 系统首页设计 524
18.5.1 公有文件 524
18.5.2 取出首页用到的数据 526
18.5.3 用到的JavaScript方法 526
18.5.4 用户信息版块 527
18.5.5 订购信息版块 529
18.5.6 新书推荐版块 529
18.5.7 页面效果 531
18.6 管理员管理图书设计 531
18.6.1 管理员菜单权限控制 531
18.6.2 新增图书 532
18.6.3 修改图书 533
18.6.4 删除图书 534
18.6.5 浏览所有图书 535
18.6.6 页面效果 536
18.7 购物车设计 537
18.7.1 图书放进购物车 537
18.7.2 显示购物车 538
18.7.3 付款并生成订单 538
18.7.4 显示订单 539
18.7.5 页面效果 540
18.8 运行工程 540
18.8.1 开发平台 540
18.8.2 创建工程 540
18.8.3 运行工程 544
18.9 本章小结 545
第19章 Ajax网上聊天系统(Struts 2+Spring+Hibernate) 547
19.1 系统概述 547
19.2 需求分析 548
19.2.1 需求概述 548
19.2.2 用例图 548
19.3 系统功能预览 549
19.3.1 用户功能预览 549
19.3.2 管理员功能预览 552
19.4 系统设计 554
19.4.1 系统架构设计 554
19.4.2 业务实体设计 554
19.4.3 设计域模型 554
19.4.4 设计数据模型 554
19.4.5 创建对象/关系映射文件 557
19.4.6 创建Spring配置文件 559
19.5 网上聊天模块 562
19.5.1 网上聊天模块总览 562
19.5.2 聊天室视图chatroom.jsp 563
19.5.3 Ajax组件 564
19.5.4 保存消息控制器MessageAction.java 566
19.5.5 显示消息列表控制器ChatViewAction.java 568
19.5.6 服务层ImessageService接口 569
19.5.7 数据持久层MessageDaoImpl类 570
19.6 用户模块 571
19.6.1 用户模块总览 571
19.6.2 视图组件registration.jsp 572
19.6.3 控制器组件UserManageAction.java 573
19.6.4 服务层IUserService接口 575
19.6.5 数据持久层UserDaoImpl类 576
19.7 房间模块 577
19.7.1 房间模块总览 577
19.7.2 新增临时房间视图mbroomadd.jsp 578
19.7.3 新建临时房间控制器RoomEnterAction.java 578
19.7.4 服务层IRoomService接口 580
19.7.5 数据持久层RoomDaoImpl类 581
19.8 运行工程 582
19.8.1 开发平台 582
19.8.2 创建工程 582
19.8.3 运行工程 586
19.9 本章小结... 588
Eclipse Struts 2 Hibernate Spring整合应用案例
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问
Video Player
×
Audio Player
×
pdf Player
×
亲爱的云图用户,
光盘内的文件都可以直接点击浏览哦
无需下载,在线查阅资料!