《Seam实战》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:(美)艾伦著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2010
  • ISBN:9787115224644
  • 页数:485 页
图书介绍:本书深入讲解了JBoss Seam,介绍了Seam如何消除了不必要的层和配置,解决了JSF最常见的难点,建立了JSF、EJB 3和JavaBean组件间缺少的链接。

第一部分 了解Seam 2

第1章 Seam使Java EE一体化 2

1.1 我该选用哪种框架 3

1.2 选择Seam 3

1.2.1 完整的应用程序栈 4

1.2.2 开发Seam的原因 4

1.2.3 “厂商垄断”传闻真相 5

1.2.4 Seam用例 6

1.3 Seam的统一方法 7

1.3.1 Seam整合了JSF、JPA和POJO组件 7

1.3.2 上下文组件模型 9

1.4 牛刀小试 12

1.4.1 充当Backing Bean的实体类 12

1.4.2 全能的组件 13

1.4.3 将组件绑定到视图上 14

1.4.4 按需获取数据 16

1.4.5 可点击列表 16

1.4.6 为JSF设计的集成测试 17

1.5 Seam的核心竞争力 18

1.5.1 让JSF变成能手 19

1.5.2 让你快速构建“富”应用 21

1.5.3 构建敏捷的开发环境 22

1.6 小结 23

第2章 seam-gen实践 25

2.1 Open 18原型 25

2.1.1 整装待发 26

2.1.2 将实体映射到数据库Schema 27

2.2 让seam-gen完成初始工作 30

2.2.1 seam-gen的特点 30

2.2.2 seam-gen提供的特性 31

2.3 用seam-gen启动项目 32

2.3.1 seam-gen命令一览 32

2.3.2 与seam-gen的针锋对话 34

2.3.3 创建基础项目结构 37

2.3.4 生成CRUD 38

2.4 将项目部署到JBoss应用服务器 40

2.4.1 部署 40

2.4.2 展开 41

2.4.3 切换环境 42

2.4.4 启动JBoss应用服务器 43

2.5 展示与讲述、改变和重复 45

2.5.1 球场漫步 45

2.5.2 反向工程的过程 50

2.5.3 探讨生成项目的结构 53

2.6 快速开发seam-gen项目 56

2.6.1 增量热部署 57

2.6.2 用IDE加速开发 60

2.7 小结 69

第二部分 Seam基础知识 72

第3章 Seam的生命周期 72

3.1 Seam如何参与请求 73

3.1.1 Seam的开关 73

3.1.2 JSF Servlet:Seam的动力 74

3.1.3 通过Seam的资源Servlet访问资源 79

3.1.4 Seam的Servlet过滤器链 80

3.1.5 Seam的阶段监听器 82

3.2 没有Seam的JSF生命周期 83

3.2.1 JSF生命周期阶段 84

3.2.2 初始请求 85

3.2.3 回传 87

3.2.4 JSF生命周期的缺点 88

3.3 Seam面向页面生命周期的附加功能 90

3.3.1 pages.xml的高级编排 90

3.3.2 智能导航 92

3.3.3 Seam UI命令组件 95

3.3.4 页面参数 96

3.3.5 页面动作:先执行我 100

3.4 页面动作与导航的结合 101

3.4.1 对请求进行完整性检查 102

3.4.2 内建的页面视图 103

3.4.3 对搜索引擎友好的URL 104

3.5 Seam的JSF生命周期 106

3.5.1 阶段监听器和Servlet过滤器 106

3.5.2 概览增强的生命周期 106

3.6 用try-catch块包围生命周期 109

3.6.1 以优雅的方式处理失败 109

3.6.2 注册异常处理器 109

3.6.3 将异常扼杀在萌芽中 110

3.7 小结 111

第4章 组件及其上下文 113

4.1 Seam的上下文命名容器 113

4.1.1 Seam的上下文模型 114

4.1.2 统一了Java的Servlet上下文 114

4.1.3 Seam中新的有状态上下文 115

4.1.4 Seam中增强的Servlet上下文 116

4.2 组件的分类 117

4.2.1 组件与组件实例 117

4.2.2 Seam管理组件 118

4.3 用注解定义组件 119

4.3.1 给组件取个名称 120

4.3.2 给组件一个作用域 121

4.4 完整的组件范例 122

4.4.1 创建实体组件 122

4.4.2 准备动作Bean组件 126

4.4.3 集成测试组件 127

4.4.4 让组件“钩进”JSF 128

4.5 组件的一生 131

4.5.1 加载组件定义 131

4.5.2 何时安装组件 132

4.5.3 给一个组件多个角色 134

4.5.4 在启动时实例化组件 135

4.5.5 组件生命周期回调 136

4.5.6 将组件组装起来 138

4.5.7 所有组件在哪里结束生命周期 139

4.6 在Seam中使用EJB 3会话Bean 139

4.6.1 到底是谁的组件 140

4.6.2 Seam会话Bean组件的生成 141

4.6.3 整合机制 142

4.7 访问组件 146

4.7.1 访问模式 146

4.7.2 访问策略 147

4.8 小结 153

第5章 Seam组件描述符 155

5.1 利用XML定义组件 156

5.1.1 描述符的选择策略 156

5.1.2 组件描述符的结构 157

5.1.3 细粒度组件描述符 159

5.2 组件描述符中的XML命名空间 160

5.2.1 XML命名空间声明的作用 160

5.2.2 为包中的组件定义XML命名空间 163

5.2.3 如何转译XML命名空间 164

5.2.4 引入上下文变量前缀 167

5.3 配置组件属性 168

5.3.1 将组件定义成对象原型 168

5.3.2 在何处定义组件属性 169

5.3.3 属性值类型 175

5.3.4 组装组件 180

5.4 组件定义和组件配置 182

5.4.1 避免与现有定义相冲突 183

5.4.2 混和使用注解和XML 184

5.5 配置和启用内建组件 184

5.5.1 用组件描述符控制Seam 184

5.5.2 配置Seam的国际化支持 185

5.6 小结 187

第6章 IoC 189

6.1 bijection:依赖注入的演变 190

6.1.1 引入bijection 190

6.1.2 高尔夫球场上的bijection 191

6.1.3 激活bijection 191

6.2 动态的依赖注入 193

6.2.1 声明注入点 193

6.2.2 注入流程 195

6.2.3 混合作用域和可序列化的能力 197

6.2.4 注入变体 198

6.3 注出上下文变量 200

6.3.1 注出流程 200

6.3.2 注出用例 202

6.3.3 内建的数据模型支持 204

6.4 避开bijection 211

6.4.1 内部方法调用 211

6.4.2 方法上下文探秘 213

6.4.3 重入(Reentrant)方法调用 213

6.4.4 通过关闭拦截器来关闭bijection 215

6.5 组件事件 216

6.5.1 通过组件触发事件 216

6.5.2 定义事件观察者 218

6.5.3 在页面转换中触发事件 219

6.5.4 内建事件 220

6.6 自定义的方法拦截器 221

6.6.1 拦截器的利与弊 221

6.6.2 定义Seam拦截器 223

6.7 工厂和管理器组件 224

6.7.1 上下文变量@Factory 224

6.7.2 @Unwrap组件 230

6.8 小结 233

第三部分 Seam的状态管理第7章 Seam的工作单元:对话 236

7.1 学会辨别对话的状态 236

7.1.1 重新定义工作单元 237

7.1.2 管理状态的压力 238

7.2 对话上下文 240

7.2.1 从HTTP会话中划出工作空间 240

7.2.2 可以在对话中保存什么数据 242

7.3 建立对话范围 243

7.3.1 对话的状态 243

7.3.2 启动长期对话 246

7.3.3 让对话继续 252

7.3.4 将对象收集到对话中 253

7.3.5 终止长期对话 256

7.4 将对话搁置 258

7.4.1 放弃对话 258

7.4.2 创建嵌套对话 259

7.5 对话转换 262

7.5.1 用对话作为工作空间 262

7.5.2 给对话一个说明 264

7.5.3 利用内建的对话转换器 265

7.6 用页面流驱动对话 270

7.6.1 构建页面流 270

7.6.2 了解页面流 271

7.6.3 推进页面流 273

7.6.4 处理返回按钮 275

7.7 特定的对话 276

7.7.1 生意开张 276

7.7.2 展示结果 277

7.8 小结 278

第8章 了解Java持久化 279

8.1 Java持久化原理 280

8.1.1 建立期望值 280

8.1.2 Java持久化的四大要素 280

8.2 实体和关系 281

8.2.1 映射元数据 282

8.2.2 传递性持久化 282

8.2.3 在持久层中引入注解 283

8.3 持久化单元 284

8.3.1 定义JCA数据源 284

8.3.2 持久化单元描述符 285

8.3.3 持久化管理器工厂 287

8.4 持久化管理器 287

8.4.1 获得持久化管理器 287

8.4.2 持久化管理器的管理功能 288

8.4.3 设置持久化上下文的作用域 289

8.5 事务 289

8.5.1 事务API的分类 289

8.5.2 原子工作单元 290

8.5.3 ACID缩写 291

8.6 管理企业中的持久化 292

8.6.1 扩展持久化上下文简介 292

8.6.2 扩展持久化上下文的好处 293

8.7 在JPA或Hibernate中做出选择 298

8.7.1 Hibernate和JPA之间的关系 298

8.7.2 Hibernate和JPA之间的区别 299

8.7.3 Seam的合成方法 299

8.8 小结 300

第9章 受Seam管理的持久化和事务 301

9.1 正确管理持久化上下文 301

9.1.1 尊重持久化管理器 302

9.1.2 管理扩展的持久化上下文 303

9.2 强化持久化管理器的能力 304

9.2.1 Seam的标准强化功能 304

9.2.2 让Hibernate充分发挥 307

9.3 在Seam中构建持久化单元 309

9.3.1 Seam的持久化管理器工厂 309

9.3.2 受Seam管理的持久化上下文 311

9.3.3 通过JNDI共用持久化管理器工厂 313

9.3.4 在启动时验证持久化上下文 315

9.4 Seam的事务支持 316

9.4.1 全局事务 316

9.4.2 Seam的事务抽象层 317

9.4.3 控制受Seam管理的事务 319

9.4.4 应用程序事务 321

9.5 小结 324

第10章 快速开发Seam应用程序 325

10.1 框架中的框架 325

10.1.1 持久化API的包装 326

10.1.2 持久化控制器 327

10.1.3 两种用途 329

10.2 采用Home组件的有状态CRUD 330

10.2.1 弥补Anemic Domain Model的不足 330

10.2.2 领域对象中引入Home 330

10.2.3 Home的应用 334

10.2.4 离开Home的风险 344

10.2.5 CRUD XML 349

10.3 提供反馈 351

10.3.1 自定义状态消息 351

10.3.2 创建与i18n兼容的消息 352

10.3.3 事务成功事件 353

10.4 用Query组件进行更智能的查询 354

10.4.1 创建结果集列表 355

10.4.2 对结果集分页 357

10.4.3 同时删除多个记录 359

10.4.4 对结果集排序 360

10.4.5 对结果集添加限制 362

10.5 小结 367

第四部分 深入业务需求 370

第11章 保护Seam应用程序安全 370

11.1 启动验证 371

11.1.1 给用户一个id 371

11.1.2 用3个步骤实现验证 372

11.1.3 概览Seam的id管理 378

11.1.4 更“基础的”验证 379

11.2 保护页面安全 381

11.2.1 JSF安全的挑战 381

11.2.2 请求验证 383

11.2.3 安全地服务页面 387

11.3 基于角色的授权 388

11.3.1 表达限制 389

11.3.2 声明基于角色的限制 391

11.4 利用Drools进行基于规则的授权 394

11.4.1 规则与角色 394

11.4.2 配置Drools 394

11.4.3 用Drools创建规则 396

11.4.4 自动侦测上下文 401

11.5 人机分离 403

11.5.1 CAPTCHA概览 403

11.5.2 在表单中添加一个CAPTCHA问讯 403

11.6 小结 404

第12章 Ajax和JavaScript远程处理 405

12.1 结合JSF使用Ajax 406

12.1.1 采用server-centric应用程序模型 406

12.1.2 Ajax4jsf和ICEfaces向JSF开启了通信渠道 406

12.1.3 Seam在基于Ajax的JSF请求中的作用 410

12.2 部分提交表单 412

12.2.1 即时校验 412

12.2.2 精通业务的校验 414

12.2.3 协助用户填写表单 415

12.3 ICEfaces的Ajax Push 416

12.4 JavaScript与Seam的远程处理 418

12.4.1 透明的Ajax 418

12.4.2 让浏览器访问Seam组件 420

12.4.3 调用服务器端组件 423

12.4.4 本地存根 426

12.5 对话的远程处理调用 429

12.5.1 加入正在进行的对话 429

12.5.2 启动对话 430

12.5.3 成批发送请求 431

12.6 响应GWT远程调用 432

12.6.1 GWT整合简介 432

12.6.2 准备远程处理服务 432

12.6.3 通过Seam远程处理GWT服务调用 433

12.7 小结 434

第13章 文件、丰富渲染和电子邮件支持 436

13.1 加载文件并渲染动态图像 436

13.1.1 接受文件加载 437

13.1.2 从原始数据渲染图像 439

13.2 用iText生成PDF 441

13.2.1 用UI组件对PDF进行排版 441

13.2.2 处理表格和单元格 445

13.2.3 添加颜色 448

13.2.4 优雅的失败和友好的文件扩展名 448

13.2.5 提供动态文件 449

13.3 用JFreeChart轻松绘制图表 451

13.3.1 图表基础知识 451

13.3.2 柱状图 452

13.3.3 线图 453

13.3.4 饼状图 454

13.4 用Seam的方式构建电子邮件 455

13.4.1 发出第一条消息 455

13.4.2 在消息中附加其他因素 458

13.4.3 在Seam中构建JavaMail 461

13.4.4 发布动态消息 464

13.5 用resource bundle定制UI 465

13.5.1 让Seam使用正确的语言 465

13.5.2 主题 468

13.6 小结 470

附录A Seam的准备工作 471

A.1 准备工作 471

A.1.1 与Java 5的兼容性 472

A.1.2 JavaEE 5应用服务器 472

A.1.3 没有(JavaServer)Faces 474

A.2 下载Seam发行包 475

A.2.1 Seam的模块 475

A.2.2 诸多文件和范例 476

A.2.3 在杂乱中寻找seam-gen 476

A.3 seam-gen和Open 18范例应用程序 476

A.3.1 源代码 476

A.3.2 H2数据库 477

A.3.3 Apache Ant带动了seam-gen 477

A.3.4 随意选用RichFaces或ICEfaces 477

A.4 管理seam-gen工程中的类库 478

A.5 添加Seam作为Maven 2依赖 478

参考文献 480