第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与配置文件strutsxml 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创建目的控制层Listjava 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创建目的控制层Listjava 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与Stnuts2和Ajax联合使用 96
5.1 JSON概述 96
5.2用JSON创建对象 97
5.2.1创建对象的语法格式 97
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
510.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中Java Bean的属性值 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章JQue与JSON和Ajax联合开发 131
7.1 JQue概述 131
7.2 JQue框架的Ajax功能简介 131
7.3使用JQue的Ajax功能调用远程Action(无返回结果) 132
7.4 JQue的Ajax方法结构 133
7.5使用JQue的Ajax功能调用远程Action(有返回结果) 134
7.6调用远程Action并且传递JSON格式参数(有返回值) 136
7.7返回List中存Striyng的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 smerge标签概述 164
8.7.2在Action中填充List集合对象 164
8.7.3新建实体类 165
8.7.4使用smerge标签合并集合对象 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:il8n和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 stextfield、 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 Hibeate概述 257
11.2持久层、持久化与ORM 258
11.3用MyEclipse开发第一个Hibeate实例 259
11.3.1安装Oracle llg数据库 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 llg数据库 271
11.3.9创建一个支持Struts和Hibeate的Web Project 273
11.3.10对数据表进行Hibeate逆向工程 275
11.3.11逆向工程后的项目ORM结构 276
11.3.12使用Hibeate进行持久化 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 11 g中创建示例数据表 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在Hibeate中使用JNDI技术 290
12.5.1备份配置文件 290
12.5.2更改配置文件context.xml 290
12.5.3更改配置文件web.xml 291
12.5.4添加Hibeate框架配置 291
12.5.5逆向工程 292
12.5.6支持JNDI的hibeate.cfg.xml配置文件 292
12.5.7添加控制层show.action 293
12.5.8部署项目验证结果 293
12.6掌握Hibeate必备的要点 294
12.6.1 Hibeate的OID与缓存 294
12.6.2 Hibeate中的对象状态 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 Hibeate备忘知识点 306
12.9对主从表结构中的HashSet进行排序 307
12.10 Hibeate中延迟加载的调试实例 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 Hibeate的检索方式 312
13.1.1创建数据库表和外联对象 312
13.12检索实例 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 BeanFacto与AppcationContext 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添加Hibeate Database Explorer数据库连接 398
15.5.1创建数据库连接对象 398
15.5.2选择目的数据库 398
15.6 添加Hibemate3.1框架支持文件 398
15.7添加Spring2.0框架支持文件 399
15.8自动创建的配置文件 400
15.9在web.xml文件中加入Spring的utf-8编码过滤器和Spring监听 400
15.10在配置文件中定义struts.obj ectFacto常量 402
15.11对Oracle 11g数据表sshtable进行Hibeate逆向工程 402
15.12了解继承自HibeateDaoSuppo类DAO 403
15.13创建All_ DAO对象 407
15.14创建Tablel_ 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部署到WebLogic 10.3中间件容器 416
15.20.1在WebLogic 10.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在EJB 3中创建基于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安装Oracle 11g数据库 526
17.3.2使用Toad管理Oracle数据库 528
17.3.3用MyEclipse Database Explorer工具连接Oracle 11 g数据库 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章J PA核心技能 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﹤T>, Object)方法 575
18.2.3 remove(Object)方法 577
18.2.4 getReference(Class﹤T>, Object)方法 579
18.2.5 createNativeQueQ方法 583
18.2.6 close()和isOpen()方法 589
18.2.7 refresh(Object)方法 589
18.2.8 clear()和contains(Object)方法 592
18.2.9 createQue(String)方法 593
18.2.10 createNamedQue(String)方法 594
18.3 EntiManagerFacto对象介绍 596
18.4用Java SE客户端调用远程EJB3组件(使用逆向DAO) 597
18.5在Java SE客户端使用EntityManagerFacto实现持久化(手动配置) 600
18.6在Java SE客户端使用EntityManagerFacto实现持久化(自动配置) 603
18.7在会话Bean中生成EntityManagerFacto 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 nu为空运算符的使用 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.10JpQL语言的字符串操作函数 644
19.11用JPQL语言取得当前的日期和日期时间数据 649
19.12 JPQL语言对日期的判断 650
19.13 JPQL语言的数学函数 652
19.14 JPQL语言中的分页功能 654