第1篇 Web开发基础篇 2
第1章 搭建开发环境(教学视频:23分钟) 2
1.1 各种软件和框架的版本 2
1.2 下载与安装JDK 7 2
1.3 下载与安装Eclipse 4 3
1.4 下载与安装MyEclipse 10 4
1.5 下载与安装Eclipse IDE for Java EE Developers 5
1.6 下载与安装Tomcat 7 5
1.7 在MyEclipse 中配置Tomcat 7
1.8 在Eclipse IDE for Java EE Developers 中配置Tomcat 8
1.9 下载与安装MySQL5数据库 8
1.10 下载与安装数据库客户端软件SQLyog 9
1.11 小结 10
1.12 实战练习 10
第2章 Java Web应用开发基础(教学视频:14分钟) 11
2.1 Web技术的发展 11
2.2 了解Java Web技术 14
2.2.1 认识Java Web程序的基本组成 14
2.2.2 认识Java Web程序的目录结构 14
2.2.3 了解Java Web程序的配置文件 15
2.3 了解MVC模式与MVC框架 15
2.3.1 认识JSP模型1和JSP模型2 15
2.3.2 认识Web应用程序的基础服务 16
2.3.3 MVC模式概述 17
2.3.4 了解常用的MVC框架 18
2.4 小结 19
2.5 实战练习 19
第3章 Web开发必会的客户端技术(教学视频:82分钟) 20
3.1 学习客户端技术的开发工具 20
3.1.1 在MyEclipse中使用HTML技术 20
3.1.2 在MyEclipse中使用JavaScript技术 21
3.1.3 在MyEclipse中使用CSS技术 22
3.2 学习超文本标签语言HTML 23
3.2.1 HTML基本构成 24
3.2.2 HTML基本标签——段落格式设置标签 25
3.2.3 HTML基本标签——超级链接标签 26
3.2.4 HTML基本标签——图像标签 27
3.2.5 HTML基本标签——表格标签 29
3.2.6 HTML基本标签——框架标签 30
3.2.7 HTML基本标签——表单标签 32
3.3 学习JavaScript技术 34
3.3.1 实例:编写第一个JavaScript程序:Greet 34
3.3.2 学习变量 35
3.3.3 学习原始类型 36
3.3.4 掌握类型转换 40
3.3.5 学习函数与函数调用 42
3.3.6 学习类和对象 44
3.4 其他客户端技术 46
3.4.1 了解DOM 46
3.4.2 获得HTML元素的3种方法 48
3.4.3 实例:图像自动切换 50
3.4.4 了解正则表达式 52
3.4.5 实例:表格排序 53
3.5 学习CSS技术 56
3.5.1 了解CSS 56
3.5.2 在Style属性中定义样式 57
3.5.3 在HTML中定义样式 57
3.5.4 在外部文件中定义样式 58
3.5.5 实现样式的继承 59
3.6 学习AJAX技术 59
3.6.1 了解AJAX技术 59
3.6.2 实例:使用XMLHttpRequest获得Web资源 60
3.6.3 实例:使用XMLHttpRequest跨域访问Web资源 61
3.6.4 实例:AJAX的3种交换数据方法 62
3.7 小结 64
3.8 实战练习 65
第4章 Java Web的核心技术——Servlet(教学视频:79分钟) 66
4.1 编写Servlet的Helloworld程序 66
4.1.1 实例:用MyEclipse工具编写第一个Servlet程序——Helloworld 66
4.1.2 实例:手工编写第一个Servlet程序——Helloworld 70
4.2 学习Servlet技术 72
4.2.1 配置Tomcat7服务器的数据库连接池 72
4.2.2 实例:通过数据库连接池连接MySQL数据库 74
4.2.3 实例:处理客户端HTTP GET请求——doGet方法 76
4.2.4 实例:处理客户端HTTP POST请求——doPost方法 77
4.2.5 实例:处理客户端各种请求——service方法 78
4.2.6 实例:初始化(init)和销毁(destroy)Servlet 80
4.2.7 实例:输出字符流响应消息——PrintWriter类 82
4.2.8 实例:输出字节流响应消息——ServletOutputStream类 83
4.2.9 实例:包含Web资源——RequestDispatcher.include方法 84
4.2.10 实例:转发Web资源——RequestDispatcher.forward方法 86
4.3 掌握HttpServletResponse类 88
4.3.1 产生状态响应码 88
4.3.2 设置响应消息头 89
4.3.3 实例:验证响应消息头设置情况 91
4.4 掌握HttpServletRequest类 92
4.4.1 获取请求行消息 92
4.4.2 获取网络连接消息 93
4.4.3 获取请求头消息 94
4.5 处理Cookie 94
4.5.1 什么是Cookie 94
4.5.2 认识操作Cookie的方法 95
4.5.3 实例:通过Cookie技术读写客户端信息 96
4.5.4 实例:通过Cookie技术读写复杂数据 98
4.6 处理Session 100
4.6.1 什么是Session 100
4.6.2 认识操作Session的方法 101
4.6.3 创建Session对象 102
4.6.4 实例:通过Cookie跟踪Session 103
4.6.5 实例:通过重写URL跟踪Session 104
4.7 解决Web开发的乱码问题 106
4.7.1 认识Java语言编码原理 106
4.7.2 实例:解决输出乱码问题 108
4.7.3 实例:解决服务端程序读取中文请求消息的乱码问题 110
4.7.4 实例:用AJAX技术发送和接收中文信息 112
4.7.5 实例:实现请求消息头和响应消息头中转输中文 115
4.8 小结 116
4.9 实战练习 117
第5章 JSP技术(教学视频:62分钟) 119
5.1 通过MyEclipse工具编写第一个JSP程序 119
5.1.1 实例:编写显示服务器当前时间的JSP程序 119
5.1.2 调试JSP程序 122
5.1.3 改变JSP的访问路径和扩展名 123
5.1.4 手动发布JSP程序 124
5.2 了解JSP的运行原理 124
5.2.1 了解Tomcat处理JSP页过程 124
5.2.2 分析由JSP生成的Servlet代码 127
5.3 学习JSP基本语法 130
5.3.1 学习JSP表达式 131
5.3.2 实现在JSP中嵌入Java代码 131
5.3.3 学习JSP声明 133
5.3.4 学习JSP表达式语言(EL) 135
5.3.5 实例:利用EL函数替换HTML中的特殊字符 137
5.3.6 学习JSP页面中的注释 140
5.4 学习JSP指令 140
5.4.1 了解JSP指令 140
5.4.2 JSP指令page 141
5.4.3 JSP指令include 147
5.5 学习JSP内置对象 149
5.5.1 内置对象out 149
5.5.2 内置对象pageContext 151
5.5.3 其他内置对象 152
5.6 学习JSP标签 154
5.6.1 包含标签<jsp:include> 155
5.6.2 转发标签<jsp:forward> 157
5.6.3 传参标签<jsp:param> 157
5.6.4 创建Bean标签<jsp:useBean> 158
5.6.5 设置属性值标签<jsp:setProperty> 160
5.6.6 获取属性值标签<jsp:getProperty> 162
5.7 学习JSP的标准标签库(JSTL) 163
5.7.1 了解JSTL 163
5.7.2 JSTL中的条件标签 165
5.7.3 JSTL中的循环标签 167
5.8 小结 170
5.9 实战练习 170
第6章 用Servlet和JSP实现注册登录系统(教学视频:28分钟) 172
6.1 系统概述 172
6.1.1 系统功能简介 172
6.1.2 系统总体结构 173
6.2 设计数据库 173
6.3 实现系统的基础类 174
6.3.1 实现访问数据库的DBServlet类 174
6.3.2 实现MD5加密 176
6.3.3 实现图形验证码 177
6.4 实现注册系统 179
6.4.1 实现注册Servlet类 179
6.4.2 实现注册系统的主页面 181
6.4.3 实现结果JSP页面 184
6.5 实现登录系统 185
6.5.1 实现登录Servlet 185
6.5.2 实现登录系统主页面 187
6.6 小结 188
6.7 实战练习 188
第2篇 Struts 2篇 192
第7章 编写Struts 2第一个程序(教学视频:28分钟) 192
7.1 Struts 2的MVC模式 192
7.2 Struts 2的体系结构 193
7.2.1 工作流程 193
7.2.2 配置文件 193
7.2.3 控制器 195
7.3 Struts 2实例:图书查询系统 196
7.3.1 下载和安装Struts 2 196
7.3.2 编写数据处理类 197
7.3.3 编写和配置Action类 198
7.3.4 编写显示查询结果的JSP页面 200
7.3.5 编写输入查询信息的JSP页面 202
7.4 小结 203
7.5 实战练习 203
第8章 Struts 2进阶(教学视频:72分钟) 205
8.1 认识Struts 2的基本配置 205
8.1.1 配置web.xml 205
8.1.2 配置struts.xml 207
8.1.3 配置struts.properties 210
8.1.4 学习Struts 2的DTD 213
8.2 深入认识Struts 2的配置元素 215
8.2.1 配置Bean 216
8.2.2 配置常量(constant) 217
8.2.3 配置包含(include) 219
8.2.4 配置包(package) 219
8.2.5 配置命名空间 220
8.2.6 配置拦截器 222
8.3 掌握Struts 2注释(Annotation) 223
8.3.1 设置当前包的父包——ParentPackage注释 223
8.3.2 指定当前包的命名空间——Namespace注释 224
8.3.3 指定当前Action结果——Results与Result注释 224
8.3.4 实例:通过注释配置Action 225
8.4 掌握Struts 2的Action 228
8.4.1 了解Action类的getter和setter方法 228
8.4.2 实现Action接口 229
8.4.3 继承ActionSupport类 231
8.4.4 实例:用ActionContext访问Servlet API 232
8.4.5 实例:通过aware拦截器访问Servlet API 237
8.4.6 实例:利用动态方法处理多个提交请求 239
8.4.7 实例:利用method属性处理多个提交请求 241
8.4.8 使用通配符 242
8.4.9 设置默认的Action 245
8.5 配置跳转结果 246
8.5.1 了解Struts 2的配置结果 246
8.5.2 Struts 2支持的处理结果类型 247
8.5.3 配置带有通配符的结果 249
8.5.4 通过请求参数指定结果 250
8.6 掌握模型驱动 252
8.6.1 了解模型驱动——ModelDriven 252
8.6.2 实例:使用模型驱动改进登录程序 254
8.7 处理Struts 2中的异常 256
8.7.1 了解Struts 2处理异常的原理 257
8.7.2 实例:登录系统的异常处理 258
8.8 小结 261
8.9 实战练习 261
第9章 Struts 2的拦截器(教学视频:32分钟) 262
9.1 理解拦截器 262
9.1.1 掌握拦截器的实现原理 262
9.1.2 实例:模拟Struts 2实现一个拦截器系统 265
9.2 配置Struts 2拦截器 270
9.2.1 配置拦截器 270
9.2.2 使用拦截器 272
9.2.3 设置默认拦截器 273
9.3 实例:自定义拦截器 275
9.3.1 编写拦截器类 276
9.3.2 配置自定义拦截器 277
9.4 理解拦截器的高级技术 279
9.4.1 过滤指定的方法 279
9.4.2 拦截器的执行顺序 282
9.4.3 应用结果监听器 284
9.5 理解Struts 2内建的拦截器 287
9.5.1 认识内建拦截器 287
9.5.2 掌握内建拦截器的配置 288
9.6 实例:编写权限验证拦截器 291
9.6.1 编写权限验证拦截器类 291
9.6.2 配置权限控制拦截器 292
9.7 小结 294
9.8 实战练习 294
第10章 Struts 2的类型转换(教学视频:48分钟) 295
10.1 为什么要进行类型转换 295
10.1.1 了解客户端和服务端之间的数据处理过程 295
10.1.2 了解传统的类型转换 296
10.2 使用Struts 2类型转换器 299
10.2.1 了解Struts 2内建的类型转换器 300
10.2.2 实例:实现基于OGNL的类型转换器 303
10.2.3 配置全局类型转换器 307
10.2.4 实例:实现基于Struts 2的类型转换器 309
10.2.5 实例:实现数组类型转换器 311
10.2.6 实例:实现集合类型转换器 314
10.3 实例:使用OGNL表达式进行类型转换 316
10.4 Struts 2对Collection和Map的支持 319
10.4.1 指定集合元素的类型 319
10.4.2 掌握Set和索引属性 321
10.5 掌握类型转换的错误处理 322
10.6 小结 323
10.7 实战练习 324
第11章 Struts 2的输入校验(教学视频:39分钟) 326
11.1 了解传统的数据校验方法 326
11.1.1 用JavaScript进行客户端校验 326
11.1.2 手工进行服务端校验 331
11.2 了解Struts 2所支持的数据校验 334
11.2.1 了解使用validate方法校验数据的原理 334
11.2.2 实例:使用validate方法进行输入校验 336
11.2.3 实例:使用validateXxx方法进行输入校验 340
11.2.4 掌握Struts 2的输入校验流程 342
11.3 使用Validation框架进行输入校验 344
11.3.1 实例:服务端校验 344
11.3.2 使用字段校验器和非字段校验器 346
11.3.3 实现国际化错误提示信息 348
11.3.4 实例:客户端校验 350
11.3.5 了解校验文件的命名规则 354
11.3.6 了解短路校验器 356
11.4 Validation框架的内建校验器 358
11.4.1 使用注册和引用校验器 358
11.4.2 使用转换(conversion)校验器 359
11.4.3 使用日期(date)校验器 360
11.4.4 使用双精度浮点数(double)校验器 361
11.4.5 使用邮件地址(email)校验器 362
11.4.6 使用表达式(expression)校验器 363
11.4.7 使用字段表达式(fieldexpression)校验器 363
11.4.8 使用整数(int)校验器 364
11.4.9 使用正则表达式(regex)校验器 365
11.4.10 使用必填(required)校验器 366
11.4.11 使用必填字符串(requiredstring)校验器 366
11.4.12 使用字符串长度(stringlength)校验器 367
11.4.13 使用网址(URL)校验器 368
11.4.14 使用visitor校验器 368
11.5 小结 372
11.6 实战练习 372
第12章 文件的上传和下载(教学视频:44分钟) 374
12.1 了解文件上传原理 374
12.1.1 掌握表单数据的编码方式 374
12.1.2 掌握applicaiton/x-www.form-urlencoded编码方式 375
12.1.3 掌握multipart/form-data编码方式 378
12.2 使用Commons-FileUpload上传文件 380
12.2.1 下载和安装Commons-FileUpload组件 381
12.2.2 实例:上传单个文件 381
12.2.3 实例:上传任意多个文件 384
12.3 实例:通过Struts 2实现文件上传 387
12.3.1 了解Struts 2对上传文件组件的支持 387
12.3.2 编写上传文件的JSP页 388
12.3.3 编写上传文件的Action类 388
12.3.4 配置上传文件的Action类 390
12.3.5 手工过滤上传文件的类型 391
12.3.6 用fileUpload拦截器过滤上传文件的类型 394
12.4 实例:通过Struts 2实现上传多个文件 395
12.4.1 实例:用数组上传固定数目的文件 395
12.4.2 实例:用List上传任意数目的文件 399
12.5 学习文件下载 400
12.5.1 解决下载文件的中文问题 401
12.5.2 通过stream结果下载文件 401
12.5.3 控制下载文件的授权 404
12.6 小结 405
12.7 实战练习 405
第13章 程序的国际化(教学视频:27分钟) 407
13.1 了解国际化基础 407
13.1.1 程序为什么需要国际化 407
13.1.2 学习编写Java国际化中的资源文件 408
13.1.3 了解Java支持的语言和国家 409
13.1.4 实现资源文件的中文支持 410
13.1.5 编写国际化程序 411
13.1.6 编写带占位符的国际化信息 413
13.1.7 实例:使用资源文件编写国际化程序 415
13.1.8 掌握Java国际化中的资源类 417
13.1.9 实例:使用资源类编写国际化程序 418
13.2 了解Struts 2的国际化基础 420
13.2.1 学习Struts 2中的全局资源文件 420
13.2.2 实现在Struts 2中访问国际化信息 420
13.2.3 实现在Struts 2中输出带占位符的国际化信息 423
13.3 学习资源文件的作用范围和加载顺序 426
13.3.1 掌握包范围资源文件 426
13.3.2 掌握接口范围资源文件 428
13.3.3 掌握Action基类范围资源文件 429
13.3.4 掌握Action范围资源文件 431
13.3.5 掌握临时资源文件 432
13.3.6 掌握加载资源文件的顺序 433
13.4 实例:编写支持多国语言的Web应用程序 434
13.4.1 通过i18n拦截器实现国际化 435
13.4.2 为register.jsp页面增加语言选择列表 436
13.4.3 将register.jsp页面映射成Action 438
13.5 小结 439
13.6 实战练习 439
第14章 Struts 2的标签库(教学视频:67分钟) 441
14.1 认识Struts 2标签基础 441
14.1.1 了解Struts 2标签的分类 441
14.1.2 使用Struts 2标签 442
14.1.3 掌握Struts 2中的OGNL表达式 444
14.1.4 通过OGNL表达式访问内置对象 447
14.1.5 通过OGNL表达式操作集合 448
14.1.6 掌握Lamdba(λ)表达式 450
14.2 控制标签 451
14.2.1 条件逻辑控制标签if/elseif/else 451
14.2.2 数组、集合迭代标签iterator 454
14.2.3 将集合以追加方式合并为新集合的标签append 458
14.2.4 实现字符串分割成多个子串的标签generator 460
14.2.5 实现将集合以交替方式合并为新集合的标签merge 463
14.2.6 获得集合子集标签的subset 464
14.2.7 对集合进行排序的标签sort 466
14.3 数据标签 468
14.3.1 在JSP页面中直接访问Action的标签action 468
14.3.2 创建JavaBean的对象实例标签bean 470
14.3.3 格式化日期/时间的标签date 472
14.3.4 显示调试信息的标签debug 474
14.3.5 包含Web资源的标签include 475
14.3.6 为其他的标签提供参数的标签param 476
14.3.7 输出指定值的标签property 476
14.3.8 将指定值放到ValueStack栈顶的标签push 477
14.3.9 将某个值保存在指定范围的标签set 478
14.3.10 生成URL地址的标签url 480
14.4 学习表单标签 482
14.4.1 了解表单标签的通用属性 482
14.4.2 掌握表单标签的name和value属性 483
14.4.3 与表单相关的标签:form、submit和reset标签 485
14.4.4 生成多个复选框的标签checkboxlist 485
14.4.5 实现组合单行文本框和下拉列表框的标签combobox 488
14.4.6 实现组合文本框和日期、时间选择框的标签datetimespicker 490
14.4.7 生成级联列表框的标签doubleselect 493
14.4.8 添加CSS和JavaScript的标签head 495
14.4.9 生成可交互的两个列表框的标签optiontransferselect 495
14.4.10 生成列表框的标签select 497
14.4.11 生成下拉列表框选项组的标签optgroup 498
14.4.12 生成多个单选框的标签radio 500
14.4.13 防止多次提交表单的标签token 501
14.4.14 生成高级列表框列表的标签updownselect 501
14.4.15 其他常见的表单标签 503
14.5 学习非表单标签 503
14.5.1 显示字段错误信息的标签fielderror 503
14.5.2 显示动作错误和动作消息的标签actionerror和actionmessage 504
14.5.3 调用模板的标签component 505
14.6 小结 507
14.7 实战练习 507
第15章 Struts 2对AJAX的支持(教学视频:56分钟) 508
15.1 了解Struts 2的AJAX主题 508
15.2 基于AJAX的输入校验 510
15.2.1 下载和安装DWR框架 510
15.2.2 编写具有AJAX校验功能的注册页面 511
15.2.3 编写Action类 512
15.2.4 设置校验规则 513
15.3 在表单中使用AJAX 515
15.3.1 实现可异步提交的表单 515
15.3.2 实现Action类 515
15.3.3 实现结果处理页面 516
15.3.4 执行JavaScript代码 517
15.4 发布-订阅(pub-sub)事件模型 519
15.4.1 了解pub-sub事件模型的原理 519
15.4.2 实现pub-sub事件模型 520
15.4.3 阻止请求服务端资源 523
15.5 使用Struts 2中的AJAX标签 524
15.5.1 掌握div标签的基本应用 524
15.5.2 通过div标签执行JavaScript 527
15.5.3 手动控制div标签的更新 529
15.5.4 发送异步请求的标签submit标签 532
15.5.5 异步提交请求的链接a标签 534
15.5.6 自运完成功能的文本框autocompleter标签 537
15.5.7 生成Tab页的标签tabbedPanel标签 543
15.5.8 实现树节点和树的组件:treenode和tree标签 547
15.6 使用JSON插件实现AJAX 549
15.6.1 下载和安装JSON插件 549
15.6.2 下载和安装prototype.js 549
15.6.3 实现Action类 550
15.6.4 在JSP页面中通过Prototype请求Action 551
15.7 小结 553
15.8 实战练习 553
第16章 用Struts 2实现注册登录系统(教学视频:26分钟) 555
16.1 系统总体结构 555
16.2 实现DAO层 555
16.2.1 实现DAOSupport类 556
16.2.2 实现UserDAO接口 557
16.2.3 实现UserDAOImpI类 557
16.3 实现Action类 559
16.3.1 实现模型类(User) 559
16.3.2 实现LoginAction类 560
16.3.3 实现RegisterAction类 562
16.4 实现输入校验 563
16.4.1 校验登录页面 563
16.4.2 校验注册页面 564
16.5 实现表现层页面 565
16.5.1 实现登录页面(login.jsp) 565
16.5.2 实现注册页面(register.jsp) 567
16.5.3 实现主页面(main.jsp) 569
16.6 实现其他的功能 569
16.6.1 使用Action类生成验证码图像 569
16.6.2 使用拦截器验证页面访问权限 572
16.7 小结 573
16.8 实战练习 574
第3篇 Hibernate篇 578
第17章 Hibernate的Helloworld程序(教学视频:33分钟) 578
17.1 关于Hibernate概述 578
17.1.1 为什么要使用ORM 578
17.1.2 Hibernate和EJB的关系 579
17.2 在应用程序中使用Hibernate 4 579
17.2.1 MyEclipse对Hibernate 4的支持 580
17.2.2 下载和安装新版本的Hibernate 4 582
17.3 实现第1个Hibernate程序 583
17.3.1 开发Hibernate程序的基本步骤 583
17.3.2 建立数据表 584
17.3.3 建立Hibernate配置文件 584
17.3.4 建立会话工厂(SessionFactory)类 585
17.3.5 建立实体Bean和Struts 2的模型类 588
17.3.6 建立映射文件 588
17.3.7 建立添加记录的Action类 589
17.3.8 建立录入信息的JSP页面 591
17.4 小结 593
17.5 实战练习 593
第18章 实现Hibernate基本配置(教学视频:32分钟) 595
18.1 用传统的方法配置Hibernate 595
18.1.1 用XML文件配置Hibernate 595
18.1.2 用属性文件配置Hibernate 598
18.1.3 用编程的方式配置Hibernate 598
18.1.4 学习Hibernate框架的配置属性 599
18.1.5 掌握SQL方言(Dialect) 603
18.1.6 使用JNDI数据源 604
18.1.7 掌握配置映射文件 605
18.2 使用注释(Annotations)配置Hibernate 606
18.2.1 了解Hibernate注释 606
18.2.2 安装Hibernate注释 606
18.2.3 使用@Entity注释实体Bean 606
18.2.4 使用@Table注释实体Bean 607
18.2.5 使用@Id注释主键 607
18.2.6 使用@GenericGenerator注释产生主键值 609
18.2.7 使用@Basic和@Transient注释 609
18.2.8 更高级的Hibernate注释 610
18.3 使用注释重新实现添加信息程序 610
18.3.1 使用注释配置实体Bean 610
18.3.2 在Hibernate配置文件中指定实体Bean的位置 611
18.3.3 使用AnnotationConfiguration类处理annotation.cfg.xml文件 612
18.3.4 通过AnnotationSessionFactory类获得Session对象 613
18.4 小结 614
18.5 实战练习 614
第19章 Hibernate的会话与O/R映射(教学视频:61分钟) 616
19.1 会话(Session)的基本应用 616
19.1.1 保存持久化对象 616
19.1.2 判断持久化对象之间的关系 617
19.1.3 装载持久化对象 618
19.1.4 刷新持久化对象 620
19.1.5 更新持久化对象 621
19.1.6 删除持久化对象 622
19.2 建立O/R映射 622
19.2.1 映射主键 623
19.2.2 映射复合主键 623
19.2.3 实例:主键和复合主键的查询和更新 624
19.2.4 映射普通属性 630
19.2.5 建立组件(Component)映射 630
19.2.6 实例:组件映射的应用 631
19.2.7 基于注释的组件映射 635
19.2.8 建立多对一(many-to-one)单向关联关系 636
19.2.9 实例:多对一关系的演示 637
19.2.10 基于注释的多对一关系映射 641
19.2.11 建立一对多(one-to-many)的双向关联关系 641
19.2.12 实例:一对多双向关联的演示 642
19.2.13 基于注释的一对多映射 645
19.2.14 建立基于外键的一对一(one-to-one)的关系映射 646
19.2.15 实例:基于外键的一对一关系演示 646
19.2.16 建立基于主键的一对一的关系映射 650
19.2.17 实例:基于主键的一对一关系映射 650
19.3 小结 654
19.4 实战练习 654
第20章 Hibernate的查询与更新技术(教学视频:43分钟) 657
20.1 学习标准(Criteria)查询API 657
20.1.1 实例:一个简单的例子 657
20.1.2 设置查询的约束条件 658
20.1.3 对查询结果进行分页 661
20.1.4 实例:实现Web分页功能 662
20.1.5 实现只获得一个持久化对象 665
20.1.6 对查询结果进行排序 666
20.1.7 实现多个Criteria之间的关联 666
20.1.8 实现聚合和分组查询 667
20.1.9 使用QBE(Query By Example) 669
20.2 掌握HQL和SQL技术 671
20.2.1 实例:使用HQL的第一个例子 671
20.2.2 使用From子句简化实体Bean类名 672
20.2.3 使用Select子句选择返回属性 673
20.2.4 使用Where子句指定条件 674
20.2.5 使用命名参数 675
20.2.6 使用Query进行分页 677
20.2.7 实例:使用HQL实现Web分页功能 677
20.2.8 使用HQL进行排序和分组 678
20.2.9 实现关联查询 679
20.2.10 实现聚合函数查询 681
20.2.11 使用Update和Delete语句更新持久化对象 682
20.2.12 使用Insert语句插入记录 683
20.2.13 掌握命名查询 684
20.2.14 使用SQL查询 685
20.3 小结 687
20.4 实战练习 687
第21章 Hibernate的高级技术(教学视频:40分钟) 689
21.1 什么是事务 689
21.1.1 事务的特性 689
21.1.2 认识事务的隔离等级 690
21.1.3 Hibernate所支持的事务管理 691
21.1.4 基于JDBC的事务管理 691
21.1.5 基于JTA的事务管理 692
21.2 学习锁(Locking) 692
21.2.1 认识悲观锁(Pessimistic Locking) 693
21.2.2 认识乐观锁(Optimistic Locking) 694
21.3 应用查询缓存(Query Cache) 696
21.4 学习拦截器和事件 697
21.4.1 了解拦截器(Interceptors) 697
21.4.2 实例:编写一个Hibernate拦截器 698
21.4.3 了解事件(Events) 702
21.4.4 实例:编写和注册事件类 703
21.5 学习过滤器 705
21.6 小结 706
21.7 实战练习 707
第4篇 Sping篇 710
第22章 Spring的第一个Helloworld程序(教学视频:16分钟) 710
22.1 Spring简介 710
22.1.1 了解Spring的主要特性 710
22.1.2 学习Spring的核心技术 711
22.2 在应用程序中使用Spring 712
22.2.1 MyEclipse 10.6对Spring的支持 712
22.2.2 载和安装Spring 713
22.3 实例:开发一个Helloworld程序 714
22.3.1 编写HelloService接口 714
22.3.2 编写HelloServiceImpl类 715
22.3.3 装配HelloServiceImpl类 715
22.3.4 通过装配Bean的方式获得HelloService对象 716
22.4 小结 716
22.5 实战练习 717
第23章 反向控制(Ioc)与装配JavaBean(教学视频:30分钟) 718
23.1 为什么要使用反向控制(Ioc) 718
23.1.1 什么是依赖注入 718
23.1.2 传统解决方案的缺陷 719
23.1.3 通过Ioc降低耦合度 720
23.2 手动装配JavaBean 721
23.2.1 掌握装配Bean的方法 721
23.2.2 掌握与Bean相关的接口 722
23.2.3 了解<bean>标签的常用属性 723
23.2.4 装配普通属性 724
23.2.5 装配集合属性 727
23.2.6 设置属性值为null 731
23.2.7 装配构造方法 731
23.3 自动装配JavaBean 734
23.4 分散配置 736
23.5 定制属性编辑器 738
23.6 小结 742
23.7 实战练习 742
第24章 Spring中的数据库技术(教学视频:25分钟) 744
24.1 获得DataSource 744
24.1.1 通过JNDI获得DataSource 744
24.1.2 从第三方的连接池获得DataSource 745
24.1.3 使用DriverManagerDataSource 746
24.2 在Spring中使用JDBC 746
24.2.1 装配JdbcTemplate类 746
24.2.2 向数据库中写数据 747
24.2.3 从数据库中读数据 749
24.2.4 调用存储过程 752
24.3 实现自增键 753
24.4 Spring的异常处理 754
24.5 在Spring中使用Hibernate 755
24.5.1 集成Spring和Hibernate 755
24.5.2 使用HibernateTemplate 757
24.6 小结 758
24.7 实战练习 758
第25章 Spring的其他高级技术(教学视频:39分钟) 760
25.1 Spring AOP 760
25.1.1 了解AOP基本概念 760
25.1.2 了解AOP术语 761
25.1.3 掌握4种通知(Advice)的作用 762
25.1.4 通过Advisor指定切入点 768
25.1.5 使用控制流切入点 771
25.2 学习Spring的事务管理 773
25.2.1 实例:使用程序控制事务 773
25.2.2 掌握声明式事务 775
25.2.3 了解事务属性的种类 778
25.2.4 设置事务属性 779
25.2.5 设置特定方法的事务属性 780
25.3 实例:建立和访问RMI服务 782
25.4 实例:发送E-mail 784
25.5 调度任务 786
25.6 小结 788
25.7 实战练习 788
第5篇 综合实例篇 792
第26章 Struts 2与Hibernate、Spring的整合(教学视频:12分钟) 792
26.1 整合Struts 2和Hibernate框架 792
26.1.1 整合的思路 792
26.1.2 整合后的系统层次 793
26.1.3 实现数据访问层 793
26.1.4 实现业务逻辑层 795
26.1.5 实现Struts 2和Hibernate共享实体Bean 797
26.2 整合Spring框架 798
26.2.1 装配数据访问层 799
26.2.2 装配业务逻辑层 800
26.2.3 使用Struts 2的Spring插件 801
26.3 小结 802
26.4 实战练习 802
第27章 网络硬盘(教学视频:57分钟) 804
27.1 了解系统功能 804
27.1.1 系统功能简介 804
27.1.2 系统架构设计 806
27.2 实现数据库设计 806
27.3 实现持久对象层 808
27.3.1 实现用户实体Bean 809
27.3.2 实现目录实体Bean 810
27.3.3 实现文件实体Bean 811
27.3.4 映射MySQL存储过程 812
27.3.5 配置hibernate.cfg.xml 813
27.4 实现数据访问层 814
27.4.1 实现DAOSupport类 814
27.4.2 实现UserDAO接口和UserDAOImpl类 814
27.4.3 实现DirectoryDAO接口和DirectoryDAOImpl类 816
27.4.4 实现FileDAO接口和FileDAOImpl类 817
27.5 实现业务逻辑层 819
27.5.1 实现UserService接口和UserServiceImpl类 819
27.5.2 实现DirectoryService接口和DirectoryServiceImpl类 820
27.5.3 实现FileService接口和FileServiceImpl类 822
27.5.4 实现服务管理类 825
27.5.5 配置applicationContext.xml 826
27.6 实现Web表现层 828
27.6.1 实现基础动作类(BaseAction) 829
27.6.2 实现用户登录页面和处理登录的Action类 830
27.6.3 实现注册登录页面和处理注册的Action类 832
27.6.4 网络硬盘主页 833
27.6.5 建立目录 834
27.6.6 文件上传 836
27.6.7 文件和目录下载 836
27.6.8 使用拦截器控制页面访问权限 841
27.6.9 其他的功能 842
27.7 小结 842
第28章 论坛系统(教学视频:50分钟) 843
28.1 系统功能设计 843
28.2 实现数据库设计 844
28.3 实现持久对象层 846
28.3.1 实现主题实体Bean 846
28.3.2 实现回复实体Bean 848
28.3.3 配置hibernate.cfg.xml 849
28.4 实现数据访问层 850
28.4.1 实现TopicDAO接口和TopicDAOImpl类 850
28.4.2 实现ReviewDAO接口和ReviewDAOImpl类 851
28.5 实现业务逻辑层 852
28.5.1 实现TopicService接口和TopicServiceImpl类 852
28.5.2 实现ReviewService接口和ReviewServiceImpl类 855
28.5.3 实现服务管理类 857
28.5.4 配置applicationContext.xml 857
28.6 整合FCKEditor内容编辑组件 858
28.6.1 安装FCKEditor 858
28.6.2 配置FCKEditor 858
28.6.3 修改FCKEditor自带的Servlet 862
28.6.4 生成FCKEditor的客户端脚本 862
28.7 实现Web表现层 863
28.7.1 浏览主题列表 863
28.7.2 发布新主题 866
28.7.3 浏览某个主题和它的回复内容 867
28.7.4 回复当前主题 868
28.8 小结 869