第1章 初入Struts2 1
1.1 Struts2 1
1.1.1 Struts2概述 1
1.1.2 官方网站 1
1.2 Struts2——从登录开始 2
1.2.1 新建Web项目 2
1.2.2 添加Struts2框架支持文件 2
1.2.3 新建3个JSP页面 3
1.2.4 新建业务(控制)组件 4
1.2.5 在XML文件中加入过滤器 5
1.2.6 新建中心配置文件 6
1.2.7 在配置文件中注册Action和result 6
1.2.8 部署项目 8
1.2.9 实例总结 9
第2章 控制层Action与配置文件struts.xml 10
2.1 实现Action接口 10
2.1.1 Action接口的实现目的 10
2.1.2 Action接口的定义 10
2.1.3 新建一个Action接口实例的项目 11
2.1.4 Action接口的实现类 13
2.2 用ActionSupport类验证提交表单 13
2.2.1 ActionSupport类的结构 13
2.2.2 Validateable接口的作用 13
2.2.3 ValidationAware接口的作用 14
2.2.4 实现ActionSupport类的实例与加入validate验证方法 15
2.3 将JSP提交的表单封装为一个JavaBean 18
2.3.1 属性驱动的适用场合 18
2.3.2 新建一个封装URL参数的实体类 18
2.3.3 新建持有实体类引用的控制层 19
2.3.4 运行结果 21
2.4 由Action转发到JSP页面 21
2.4.1 在JSP页面中的转发操作 21
2.4.2 创建转发的控制层组件 22
2.4.3 更改配置文件中的result对象 22
2.4.4 使用EL和Struts2的标签输出数据 23
2.4.5 运行结果 23
2.4.6 result对象的种类 24
2.5 由Action重定向到Action——无参数 25
2.5.1 创建起始控制层Login.java 25
2.5.2 创建目的控制层List.java 25
2.5.3 在配置文件中配置重定向的重点 26
2.5.4 创建显示列表的JSP页面 27
2.6 由Action重定向到Action——有参数 27
2.6.1 需要重定向传递参数场合 27
2.6.2 创建起始控制层Login.java 28
2.6.3 更改配置文件struts.xml 28
2.6.4 创建目的控制层List.java 29
2.6.5 使用JSTL和EL在JSP页面中输出数据 30
2.7 多模块多配置文件开发 31
2.7.1 创建模块的控制层 31
2.7.2 创建模块的配置文件 33
2.7.3 使用include标记导入多个配置文件 34
2.7.4 创建各模块使用的JSP页面 35
2.7.5 运行各模块的效果 35
2.8 多业务方法时的处理 36
2.8.1 第一种实现方式——通过URL叹号参数 36
2.8.2 第二种实现方式——在Action标记中加入method属性 38
2.9 自定义全局result 41
2.9.1 创建全局result实例和控制层代码 41
2.9.2 声明全局的result对象 42
2.9.3 运行结果 42
2.10 在Action中使用Servlet的API(紧耦版) 43
2.10.1 将数据放到不同的作用域中 43
2.10.2 从不同作用域中取值 44
2.11 在Action中使用Servlet的API(松耦版) 45
2.11.1 创建控制层 45
2.11.2 创建JSP视图 46
第3章 Struts2文件的上传与下载 48
3.1 使用Struts2进行单文件上传 48
3.1.1 Struts2上传功能的底层依赖 48
3.1.2 新建上传文件的JSP页面 48
3.1.3 设计上传文件的控制层代码 49
3.1.4 Action中File实例的命名规则 50
3.1.5 设置上传文件的大小 50
3.1.6 设计配置文件 51
3.1.7 成功上传单个文件 51
3.2 使用Struts2进行多文件上传 52
3.2.1 创建上传多个文件的JSP页面 52
3.2.2 设计上传的控制层代码 52
3.2.3 成功上传多个文件 54
3.3 使用属性驱动的形式上传文件 55
3.3.1 创建上传多个文件的JSP页面 55
3.3.2 设计上传文件的控制层代码 56
3.3.3 新建上传文件的封装类 57
3.3.4 更改JSP页面中s:file标签的name属性 58
3.3.5 以属性驱动方式成功上传多个文件 59
3.4 使用Struts2实现带上传进度的实例 60
3.4.1 上传文件带进度的原理 60
3.4.2 设计上传的JSP页面 60
3.4.3 设计上传文件的控制层代码 66
3.4.4 设计上传文件的工具类 67
3.4.5 实现ProgressListener接口取得上传进度 68
3.4.6 将上传进度类与Struts2关联 69
3.4.7 替换Struts2默认的上传关联类 70
3.4.8 设计提供上传进度基本信息的控制层代码 70
3.4.9 设计通过Ajax调用返回上传进度信息的XML文本实现类 71
3.4.10 成功上传并且显示进度 72
3.5 使用Struts2实现下载文件的功能 74
3.5.1 新建下载文件的JSP页面 74
3.5.2 设计下载文件的控制层代码 74
3.5.3 更改配置文件 76
3.5.4 成功下载中文文件名的文件 76
第4章 Struts2的数据校验与国际化 77
4.1 前面验证实现的缺点 77
4.1.1 旧版本的JSP页面代码 77
4.1.2 旧版本控制层代码 77
4.1.3 旧版本配置文件 78
4.1.4 旧版本的运行结果 78
4.2 加入新标签 80
4.2.1 新版本的JSP页面 80
4.2.2 新版本控制层代码 80
4.2.3 新版本配置文件 82
4.2.4 新版本不显示label属性值 83
4.2.5 去掉label属性加入普通文本 83
4.2.6 生成简洁的HTML代码 84
4.2.7 显示出错信息 84
4.3 显示局部出错信息 85
4.3.1 在JSP页面中加入调试标签 85
4.3.2 查看值栈中的数据 86
4.3.3 取出出错信息并显示到JSP页面 86
4.3.4 正确显示出错信息 87
4.4 显示全局出错信息 87
4.4.1 添加s:actionerror标签 87
4.4.2 处理出错信息的Action 88
4.4.3 设计配置文件 89
4.5 对出错信息的参数化 90
4.5.1 创建两种语言文本的资源文件 90
4.5.2 使用s:text标签显示资源文件中的文本 91
4.5.3 在控制层对资源文本参数化 92
4.5.4 部署项目运行程序 94
4.5.5 在配置文件中注册资源文件 94
第5章 JSON与Struts2和Ajax联合使用 96
5.1 JSON概述 96
5.2 用JSON创建对象 96
5.2.1 创建对象的语法格式 96
5.2.2 在JSP中用JSON创建一个对象 97
5.2.3 运行结果 97
5.3 用JSON创建字符串的限制 97
5.3.1 需要转义的特殊字符 98
5.3.2 在JSP中对JSON特殊字符进行转义 98
5.3.3 运行结果 98
5.4 用JSON创建数字类型的语法格式 99
5.4.1 在JSP中用JSON创建数字类型 99
5.4.2 运行结果 100
5.5 用JSON创建数组对象的语法格式 100
5.5.1 在JSP中用JSON创建一个数组对象 100
5.5.2 运行结果 101
5.6 用JSON创建嵌套的对象类型 101
5.7 将对象转换为JSON字符串 102
5.7.1 需要转换的场合 102
5.7.2 实现转换 102
5.8 将JSON字符串提交到Action并解析(POST方式) 103
5.8.1 在JSP中创建JSON和Ajax对象 104
5.8.2 创建接收JSON字符串的Action控制层 105
5.8.3 运行结果 105
5.8.4 控制台输出结果 106
5.9 将JSON字符串提交到Action并解析(GET方式) 106
5.9.1 在JSP中创建JSON字符串和Ajax对象 106
5.9.2 创建接收JSON字符串的Action控制层 107
5.9.3 运行结果 108
5.10 将JSON字符串提交到Action并解析(GET和POST方式) 109
5.10.1 在服务器端用GET方法解析JSON字符串 111
5.10.2 在服务器端用POST方法解析JSON字符串 111
5.10.3 运行结果 112
5.10.4 控制台输出结果 112
5.11 使用Ajax调用Action并生成JSON再传递到客户端(GET和POST方式) 113
5.11.1 新建具有Ajax提交功能的JSP页面 113
5.11.2 在Action控制层创建List对象并存储元素类型为String 116
5.11.3 在Action控制层创建List对象并存储元素类型为JavaBean 117
5.11.4 在Action控制层创建Map对象并存储元素类型为String 118
5.11.5 在Action控制层创建Map对象并存储元素类型为JavaBean 118
5.11.6 调用不同的Action 120
第6章 OGNL语言的应用 121
6.1 OGNL语言概述 121
6.2 OGNL表达式的测试 121
6.2.1 创建测试用Action控制层 121
6.2.2 使用Java脚本输出结果 122
6.2.3 运行结果 122
6.2.4 struts.valueStack对象的结构 123
6.3 使用OGNL语言输出String类型 123
6.4 输出ArrayList中String类型变量的实例 124
6.4.1 向List存储字符串 124
6.4.2 输出集合数组中的数据 124
6.4.3 运行结果 125
6.5 输出ArrayList中Bean类型变量的实例 125
6.5.1 向List存储JavaBean类型的数据 125
6.5.2 在JSP页面中输出List中JavaBean的属性值 126
6.5.3 运行结果 127
6.6 输出HashMap中String类型变量的实例 127
6.6.1 向Map存储String类型的数据 127
6.6.2 在JSP页面中输出Map中String的属性值 128
6.6.3 运行结果 128
6.7 输出HashMap中Bean类型变量的实例 129
6.7.1 向Map存储JavaBean类型的数据 129
6.7.2 在JSP页面中输出Map中JavaBean的属性值 130
6.7.3 运行结果 130
第7章 JQuery与JSON和Ajax联合开发 131
7.1 JQuery概述 131
7.2 JQuery框架的Ajax功能简介 131
7.3 使用JQuery的Ajax功能调用远程Action(无返回结果) 132
7.4 JQuery的Ajax方法结构 133
7.5 使用JQuery的Ajax功能调用远程Action(有返回结果) 134
7.6 调用远程Action并且传递JSON格式参数(有返回值) 136
7.7 返回List中存String的JSON字符串 138
第8章 Struts2控制标签库 141
8.1 Struts2标签库的分类 141
8.2 s:if、s:elseif和s:else标签的应用 141
8.2.1 s:if和s:elseif标签概述 141
8.2.2 创建传递城市ID的Action 142
8.2.3 在JSP中使用s:if标签输出中文的城市名 143
8.2.4 运行结果 143
8.3 输出String[]中的内容 144
8.3.1 s:iterator标签概述 144
8.3.2 在Action中向String[]数组保存数据 144
8.3.3 使用s:iterator标签输出数组 145
8.3.4 运行结果 146
8.4 输出集合中的内容 146
8.4.1 输出List中的String字符串内容 146
8.4.2 输出List中JavaBean的属性内容 147
8.4.3 输出Map中的String字符串内容 150
8.4.4 使用s:iterator标签输出Map中JavaBean类型属性值 152
8.5 输出隔行不同颜色的效果 155
8.5.1 向List中添加BBS模拟数据 155
8.5.2 创建BBS的实体类 156
8.5.3 实现隔行变色的效果 157
8.5.4 运行结果 159
8.6 将多个集合对象拼成一个集合对象 159
8.6.1 s:append标签概述 159
8.6.2 在Action中填充List集合对象 160
8.6.3 新建实体类 161
8.6.4 合并集合对象 162
8.6.5 集合合并后的效果 163
8.7 将多个集合对象拼成一个集合对象 164
8.7.1 s:merge标签概述 164
8.7.2 在Action中填充List集合对象 164
8.7.3 新建实体类 165
8.7.4 使用s:merge标签合并集合对象 166
8.7.5 运行结果 167
8.8 取集合中的部分元素为子集合 168
8.8.1 s:subset标签概述 168
8.8.2 在Action中对List集合对象进行数据填充 168
8.8.3 创建填充进集合对象中的实体类 169
8.8.4 对集合取子集 169
8.8.5 运行结果 170
8.9 按自定义的条件取集合中的匹配元素为子集合 171
8.9.1 在Action中对List进行数据填充 171
8.9.2 创建List中填充的实体类 172
8.9.3 自定义取子集过滤的条件类 172
8.9.4 对集合对象List取子集 173
8.9.5 运行结果 173
8.10 按集合中的个人体重进行排序 174
8.10.1 s:sort标签概述 174
8.10.2 在Action中创建并填充要排序的List集合对象 174
8.10.3 创建List集合对象中的实体类 175
8.10.4 创建排序策略实现Comparator接口的工具类 175
8.10.5 对集合对象List进行排序 176
8.10.6 运行结果 176
8.11 分割字符串 177
8.11.1 s:generator标签概述 177
8.11.2 在Action中声明并初始化要分隔的字符串变量 177
8.11.3 使用s:generator标签对字符串String进行分隔 178
8.11.4 运行结果 178
第9章 Struts2数据标签库 179
9.1 在JSP页面访问Action类中数据 179
9.1.1 s:action标签概述 179
9.1.2 创建Action控制层 179
9.1.3 在JSP页面中使用s:action标签 180
9.1.4 返回结果的JSP页面 180
9.1.5 运行结果 181
9.2 输出转义的HTML格式 181
9.2.1 s:property标签概述 181
9.2.2 将要转义输出的String数据封装到Action中 182
9.2.3 在JSP页面中对HTML字符串进行输出 182
9.2.4 运行结果 183
9.3 在JSP页面中实例化一个JavaBean 183
9.3.1 s:bean和s:param标签概述 183
9.3.2 创建工具实体类 184
9.3.3 使用s:bean标签创建一个类 184
9.3.4 运行结果 185
9.4 s:param标签的3种赋值方法 185
9.4.1 带参数的Action 185
9.4.2 对s:bean标签创建的类使用s:param标签传递参数 186
9.4.3 运行结果 186
9.5 输出日期和时间 187
9.5.1 s:date标签概述 187
9.5.2 创建日期工具类 187
9.5.3 使用s:date标签输出并格式化日期 187
9.5.4 运行结果 188
9.6 查看值栈或上下文中的信息 188
9.6.1 创建测试用Action控制层 188
9.6.2 在JSP页面中加入s:debug标签 189
9.6.3 查看valueStack值栈中的数据 190
9.7 导入JSP文件或Servlet资源 190
9.7.1 s:include标签概述 190
9.7.2 导入JSP文件 190
9.7.3 创建导入的目标文件 191
9.7.4 运行结果 191
9.8 将数据放入作用域中 191
9.8.1 s:set标签概述 191
9.8.2 使用s:set标签在JSP页面中创建变量 192
9.8.3 s:set的运行结果 192
9.9 生成分页导航超链接 192
9.9.1 s:url标签概述 192
9.9.2 创建测试用分页Action 193
9.9.3 在JSP页面中使用s:url标签生成URL 195
9.9.4 运行结果 196
9.10 将数据放到值栈顶端 196
9.10.1 s:push标签概述 196
9.10.2 在JSP页面中将数据压入值栈 197
9.10.3 运行结果 197
9.11 实现国际化 197
9.11.1 s:i18n和s:text标签概述 197
9.11.2 在JSP页面显示资源文件中的文本 198
9.11.3 运行结果 198
第10章 Struts2表单标签 199
10.1 s:checkbox标签的应用 199
10.1.1 s:checkbox标签概述 199
10.1.2 创建取得checkbox值的Action 199
10.1.3 在JSP页面中使用s:checkbox标签 200
10.1.4 创建显示s:checkbox结果的JSP页面 200
10.1.5 运行结果 201
10.2 通过Action设置s:checkbox标签默认选中状态 201
10.2.1 创建初始化s:checkbox标签的Action 201
10.2.2 创建显示s:checkbox标签的JSP页面 202
10.2.3 创建取得s:checkbox标签最新值的Action 202
10.2.4 将最新值显示到JSP页面 203
10.2.5 运行结果 204
10.3 使用List静态创建s:checkboxlist标签 204
10.3.1 s:checkboxlist标签概述 204
10.3.2 创建包含爱好数组String[]的Action 205
10.3.3 在JSP页面中使用s:checkboxlist标签 205
10.3.4 创建显示爱好的JSP页面 206
10.3.5 运行结果 206
10.4 使用Map静态创建s:checkboxlist标签 207
10.4.1 在JSP页面中创建Map类型的对象 207
10.4.2 创建显示爱好的JSP页面 208
10.4.3 运行结果 208
10.5 动态生成同组checkbox且默认为checked状态 209
10.5.1 在Action中生成s:checkboxlist标签的条目 209
10.5.2 创建爱好实体类 210
10.5.3 在JSP页面中显示s:checkboxlist标签以及初始条目 211
10.5.4 运行结果 212
10.6 使用动态和静态方式生成s:combobox标签 212
10.6.1 s:combobox标签概述 212
10.6.2 创建Action控制层 212
10.6.3 创建爱好实体类 213
10.6.4 生成s:combobox标签的条目 214
10.6.5 运行结果 215
10.7 s:doubleselect标签的应用 215
10.7.1 s:doubleselect标签概述 215
10.7.2 创建省实体类 216
10.7.3 创建市实体类 217
10.7.4 创建控制层Action 217
10.7.5 创建接收提交结果的Action 220
10.7.6 创建显示省市二级联动的JSP页面 221
10.7.7 创建显示提交后省市值的JSP页面 222
10.7.8 运行结果 223
10.8 s:hidden标签的应用 224
10.8.1 s:hidden标签概述 224
10.8.2 创建Action控制层 224
10.8.3 在JSP页面中使用s:hidden标签 225
10.8.4 创建显示提交表单的Action 225
10.8.5 创建显示最终结果值的JSP页面 226
10.8.6 创建测试实体类 226
10.8.7 运行结果 227
10.9 s:optiontransferselect标签的应用 228
10.9.1 s:optiontransferselect标签概述 228
10.9.2 创建用于生成条目的Action 228
10.9.3 生成双向选择表单的JSP代码 230
10.9.4 表单控件所在s:form的属性 231
10.9.5 运行结果 231
10.9.6 提交表单的目标Action 232
10.10 s:select和s:optgroup标签的应用 234
10.10.1 创建生成s:select条目的Action 234
10.10.2 在JSP页面中使用s:select标签 235
10.10.3 创建城市实体类 236
10.10.4 运行结果 237
10.10.5 生成的HTML代码 238
10.11 s:textfield、s:password和s:textarea标签的应用 240
10.11.1 s:textfield、s:password和s:textarea标签概述 240
10.11.2 创建Action 241
10.11.3 创建显示标签的JSP页面 242
10.11.4 运行结果 242
10.11.5 创建提交后的目标Action 243
10.11.6 调试提交的表单值 243
10.12 静态和动态生成内容条目 244
10.12.1 s:updownselect标签概述 244
10.12.2 创建生成表单条目的Action 245
10.12.3 创建显示表单的JSP页面 245
10.12.4 创建提交后的目标Action 246
10.12.5 查看最新提交的值 247
10.12.6 运行结果 247
10.13 动态生成同组复选框 248
10.13.1 创建实体类 248
10.13.2 新建同组s:checkbox标签的Action 249
10.13.3 在JSP页面中显示同组复选框 250
10.13.4 创建显示结果值的Action 251
10.13.5 配置文件 251
10.13.6 运行结果 252
10.14 设置s:select标签的默认值 252
10.14.1 创建设置s:select默认值的Action 252
10.14.2 获取默认值List的JSP页面 255
10.14.3 运行结果 256
第11章 初入Hibernate 257
11.1 Hibernate概述 257
11.2 持久层、持久化与ORM 258
11.3 用MyEclipse开发第一个Hibernate实例 259
11.3.1 安装Oracle 11g数据库 260
11.3.2 登录Oracle数据库 261
11.3.3 创建表空间和数据文件 262
11.3.4 创建用户及与表空间关联 264
11.3.5 为用户授予权限 265
11.3.6 创建数据表 268
11.3.7 创建主键生成器——Oracle序列 270
11.3.8 使用MyEclipse Database Explorer工具连接Oracle 11g数据库 271
11.3.9 创建一个支持Struts和Hibernate的Web Project 273
11.3.10 对数据表进行Hibernate逆向工程 275
11.3.11 逆向工程后的项目ORM结构 276
11.3.12 使用Hibernate进行持久化 279
第12章 Hibernate核心技能 281
12.1 Configuration概述 281
12.2 SessionFactory概述 281
12.3 Session概述 282
12.4 使用Session实现CURD功能 282
12.4.1 在Oracle 11g中创建示例数据表 282
12.4.2 逆向工程后的项目结构 283
12.4.3 创建create.action 285
12.4.4 创建read.action 286
12.4.5 创建路径为update.action的Action 288
12.4.6 创建delete.action 289
12.5 在Hibernate中使用JNDI技术 290
12.5.1 备份配置文件 290
12.5.2 更改配置文件context.xml 290
12.5.3 更改配置文件web.xml 291
12.5.4 添加Hibernate框架配置 291
12.5.5 逆向工程 292
12.5.6 支持JNDI的hibernate.cfg.xml配置文件 292
12.5.7 添加控制层show.action 293
12.5.8 部署项目验证结果 293
12.6 掌握Hibernate必备的要点 294
12.6.1 Hibernate的OID与缓存 294
12.6.2 Hibernate中的对象状态 296
12.7 双向一对多在MyEclipse中的实现 296
12.7.1 创建主表main 296
12.7.2 创建子表sub 297
12.7.3 创建主表main与从表sub的关联对象 297
12.7.4 成功关联的提示 298
12.7.5 逆向主从表外键关系 298
12.7.6 集合set与many-to-one 299
12.7.7 新建主表main的数据 300
12.7.8 新建子表sub的数据 301
12.7.9 删除子表sub的数据 303
12.7.10 删除主表main的数据 304
12.8 Hibernate备忘知识点 306
12.9 对主从表结构中的HashSet进行排序 307
12.10 Hibernate中延迟加载的调试实例 307
12.10.1 主从表表结构的设计 307
12.10.2 主从表表内容的填充 308
12.10.3 逆向工程 308
12.10.4 创建test.action 308
12.10.5 lazy属性的默认值 308
12.10.6 使用Expressions面板进行辅助调试 309
12.11 对Oracle中CLOB字段类型的读处理 310
第13章 Hibernate的检索 312
13.1 Hibernate的检索方式 312
13.1.1 创建数据库表和外联对象 312
13.1.2 检索实例 313
13.2 HQL表别名 315
13.3 对结果集进行排序 316
13.4 HQL索引参数绑定 316
13.5 HQL命名参数绑定与安全性 317
13.6 HQL方法链的应用 317
13.7 HQL中uniqueResult方法的应用 318
13.8 HQL中的where子句与查询条件 318
13.9 HQL中的迫切左外连接与调试 321
13.10 HQL中的左外连接与调试 325
13.11 HQL中的迫切左外连接/左外连接主从不匹配的情况 329
13.12 HQL中的迫切内连接与调试 330
13.13 HQL中的内连接与调试 333
13.14 HQL中的聚集函数distinct、count、min、max、sum、avg 336
13.15 HQL中的分组查询 338
第14章 Spring基础 340
14.1 Spring概述 340
14.2 Spring的架构 340
14.3 IOC概述 341
14.4 AOP概述 342
14.5 IOC容器 342
14.6 一个使用传统方式保存数据功能的实例 342
14.7 使用Spring的IOC方式保存数据 343
14.8 BeanFactory与ApplicationContext 349
14.9 Spring的IOC容器注入类型 350
14.9.1 通过IOC容器注入基本数据类型 350
14.9.2 通过IOC容器注入引用数据类型 354
14.9.3 通过IOC容器注入null类型 354
14.9.4 通过IOC容器注入泛型List列表和数组类型 356
14.9.5 通过IOC容器注入泛型Set列表和数组类型 360
14.9.6 通过IOC容器注入泛型Map列表和数组类型 365
14.9.7 通过IOC容器注入Properties类型 371
14.9.8 通过IOC容器对构造方法进行注入 373
14.10 Spring中Bean在Singleton和Prototype的作用域 375
14.11 Spring中注入外部属性文件的属性值 377
14.12 Spring中多个配置文件的应用 380
14.13 AOP概述 382
14.13.1 静态代理的实现 383
14.13.2 动态代理的实现 385
14.14 方法执行前增强 387
14.15 方法执行后增强 390
14.16 方法前后环绕增强 391
第15章 Struts2+Hibernate+Spring整合 394
15.1 整合目的 394
15.2 创建数据表 394
15.2.1 新建Oracle数据表sshtable 394
15.2.2 新建主键约束 395
15.3 新建Web项目 395
15.4 创建Struts2框架支持环境 396
15.4.1 添加Struts2框架支持文件 396
15.4.2 在web.xml文件中注册Struts2的过滤器 396
15.4.3 在项目的src目录下创建配置文件struts.xml 397
15.5 添加Hibernate Database Explorer数据库连接 398
15.5.1 创建数据库连接对象 398
15.5.2 选择目的数据库 398
15.6 添加Hibernate3.1框架支持文件 398
15.7 添加Spring2.0框架支持文件 399
15.8 自动创建的配置文件 400
15.9 在web.xml文件中加入Spring的utf-8编码过滤器和Spring监听 400
15.10 在配置文件中定义struts.objectFactory常量 402
15.11 对Oracle 11g数据表sshtable进行Hibernate 逆向工程 402
15.12 了解继承自HibernateDaoSupport类DAO 403
15.13 创建All_DAO对象 407
15.14 创建Table1_Service对象 408
15.15 创建AllService对象 409
15.16 在配置文件中配置DAO和service的关系 410
15.17 新建自定义Action的父类BaseAction 411
15.18 创建一个操作sshtable表数据的Action 412
15.19 在配置文件中配置/base和/test路径和注释事务 413
15.20 部署到WebLogic10.3中间件容器 416
15.20.1 在WebLogic10.3中创建一个域 416
15.20.2 将MyEclipse与WebLogic进行关联 418
15.20.3 启动WebLogic服务并部暑项目 419
15.21 执行带数据库插入的Action 421
第16章 有状态/无状态SessionBean和消息驱动Bean 424
16.1 EJB3概述 424
16.1.1 Java EE体系结构 425
16.1.2 容器的概念 425
16.2 有状态SessionBean和无状态SessionBean 426
16.2.1 SessionBean的作用 426
16.2.2 SessionBean的种类 426
16.2.3 在MyEclipse中无状态SessionBean的创建 427
16.2.4 用Web方式调用本地SayHello接口 440
16.2.5 无状态SessionBean类型为Local和Remote的区别 444
16.2.6 EJB组件接口无注解时的默认情况 445
16.2.7 调用远程Remote类型的Stateless SessionBean无状态实验 446
16.2.8 无状态SessionBean的回调函数和生命周期 451
16.2.9 无状态SessionBean实例变量值保留的问题与无状态SessionBean
实例池 454
16.2.10 什么是有状态SessionBean 459
16.2.11 在MyEclipse中有状态SessionBean的创建与有状态性实验 459
16.2.12 将Remote远程无状态SessonBean共享的服务重命名 465
16.2.13 使用注解声明SessionBean的第2种写法 468
16.2.14 有状态SessionBean的钝化与激活 469
16.2.15 有状态SessionBean的回调函数和生命周期 470
16.2.16 有状态SessionBean的@Remove回调函数的使用 476
16.2.17 注入其他Local类型的EJB对象 479
16.3 消息驱动JavaBean(MDB)和在Weblogic中创建消息目的 481
16.3.1 创建持久性存储对象 483
16.3.2 创建JMS服务器 484
16.3.3 创建JMS模块 486
16.3.4 在JMS模块中创建子部署 488
16.3.5 在JMS模块中创建资源 489
16.3.6 点到点式消息驱动JavaBean 491
16.3.7 发布-订阅式消息驱动JavaBean 495
16.4 在EJB3中创建基于Web Service的业务服务 500
16.5 计时器与作业调度 509
第17章 实体Bean 512
17.1 实体Bean概述 512
17.2 持久层、持久化与ORM 512
17.2.1 在Weblogic的JNDI树中创建节点与对象 515
17.2.2 在Weblogic的JNDI树中创建子节点 523
17.2.3 在Weblogic的JNDI树中查找lookup节点 524
17.2.4 在Weblogic的JNDI树中删除节点 525
17.3 从保存1条记录开始 526
17.3.1 安装Oracle11g数据库 526
17.3.2 使用Toad管理Oracle数据库 528
17.3.3 用MyEclipse Database Explorer工具连接Oracle11g数据库 535
17.3.4 用EJB项目直联数据库 538
17.3.5 改成JNDI连接池的实例 543
17.4 解析实体类所使用的注解 548
17.5 在SQL Server 2005数据库中插入记录的实验 549
17.6 在MySQL数据库中插入记录的实验 551
17.7 使用table表在Oracle数据库中生成主键的实验 553
17.8 用EJB3在Oracle中插入Date时间类型 556
17.9 处理CLOB数据类型 558
17.10 在Weblogic中实现JDBC+JNDI全局性分布式事务实验 559
17.10.1 JTA和2PC的概述 559
17.10.2 全局性事务处理的案例 559
第18章 JPA核心技能 570
18.1 EntityManager类的概述 570
18.1.1 实体类的状态 571
18.1.2 EJB3中的事务 571
18.2 EntityManager类的方法 571
18.2.1 persist(Object)方法 574
18.2.2 merge(T)方法和find(Class, Object)方法 575
18.2.3 remove(Object)方法 577
18.2.4 getReference(Class, Object)方法 579
18.2.5 createNativeQuery()方法 583
18.2.6 close()和isOpen()方法 589
18.2.7 refresh(Object)方法 589
18.2.8 clear()和contains(Object)方法 592
18.2.9 createQuery(String)方法 593
18.2.10 createNamedQuery(String)方法 594
18.3 EntityManagerFactory对象介绍 596
18.4 用Java SE客户端调用远程EJB3组件(使用逆向DAO) 597
18.5 在Java SE客户端使用EntityManagerFactory实现持久化(手动配置) 600
18.6 在Java SE客户端使用EntityManagerFactory实现持久化(自动配置) 603
18.7 在会话Bean中生成EntityManagerFactory 608
18.8 双向一对多的增删改查CURD实战 610
18.8.1 基本环境设置 610
18.8.2 功能的实现 616
第19章 JPQL语言必备技能 625
19.1 JPQL语言介绍 625
19.2 命名参数和索引式参数及实体参数式查询 625
19.2.1 索引式参数查询 626
19.2.2 命名式参数查询 628
19.2.3 为实现主从关联实验创建数据表Sheng和Shi 628
19.2.4 Sheng表和Shi表2种关联查询的方式 629
19.3 JPQL语言支持的运算符 630
19.3.1 +、-、*、/、=、>=、>、<、<=、<>、between、like和in的使用631
19.3.2 not取反运算符的使用 634
19.3.3 is null为空运算符的使用 635
19.3.4 is empty主表关联的子表集合为空运算符的使用 635
19.4 order by的使用 636
19.5 查询指定字段的示例 637
19.6 聚合函数avg、count、max、min和sum的使用 639
19.7 group by和having的使用 641
19.8 left join的使用 642
19.9 distinct去除重复记录 644
19.10 JPQL语言的字符串操作函数 644
19.11 用JPQL语言取得当前的日期和日期时间数据 649
19.12 JPQL语言对日期的判断 650
19.13 JPQL语言的数学函数 652
19.14 JPQL语言中的分页功能 654