《轻量级Java EE企业应用实战 Struts 2+Spring 5+Hiberna 第5版》PDF下载

  • 购买积分:22 如何计算积分?
  • 作  者:李刚编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2018
  • ISBN:9787121337161
  • 页数:824 页
图书介绍:重点介绍如何整合Struts 2+Spring 5+Hibernate 5/JPA 2进行Java EE开发,主要包括三部分。第一部分介绍了Java EE开发的基础知识,以及如何搭建开发环境。第二部分详细讲解了Struts 2、Spring 5和Hibernate 5三个框架的用法,介绍三个框架时,以Eclipse IDE的使用来上手,一步步带领读者深入三个框架的核心。这部分内容是笔者讲授”疯狂Java实训”的培训讲义,因此是本书的重点部分。这部分内容既包含了笔者多年开发经历的领悟,也融入了丰富的授课经验。第三部分示范开发了一个包含7个表,表之间具有复杂的关联映射、继承映射等关系,且业务也相对复杂的工作流案例,希望让读者理论联系实际,将三个框架真正运用到实际开发中去。该案例采用目前*流行、规范的Java EE架构,整个应用分为领域对象层、DAO层、业务逻辑层、MVC层和视图层,各层之间分层清晰,层与层之间以松耦合的方法组织在一起。该案例既提供了IDE关的、基于Ant管理的项目源码,也提供了基于Eclipse IDE的项目源码,大限度地满足读者的需求。

第1章 Java EE应用和开发环境 1

1.1 Java EE应用概述 2

1.1.1 Java EE应用的分层模型 2

1.1.2 Java EE应用的组件 3

1.1.3 Java EE应用的结构和优势 4

1.1.4常用的Java EE服务器 4

1.2轻量级Java EE应用相关技术 5

1.2.1 JSP、 Servlet 3.x和JavaBean及替代技术 5

1.2.2 Struts 2.5及替代技术 5

1.2.3 Hibermate 5.2及替代技术 6

1.2.4 Spring 5.0及替代技术 6

1.3 Tomcat的下载和安装 7

1.3.1安装Tomcat服务器 8

1.3.2配置Tomcat的服务端口 9

1.3.3进入控制台 9

1.3.4部署Web应用 12

1.3.5配置Tomcat的数据源 12

1.4 Eclipse的安装和使用 14

1.4.1 Eclipse的下载和安装 14

1.4.2在线安装Eclipse插件 15

1.4.3从本地压缩包安装插件 17

1.4.4手动安装Eclipse插件 17

1.4.5使用Eclipse开发Java EE应用 17

1.4.6导入Eclipse项目 20

1.4.7导入非 Eclipse项目 21

1.5 Ant的安装和使用 22

1.5.1 Ant的下载和安装 23

1.5.2使用Ant工具 23

1.5.3定义生成文件 25

1.5.4 Ant的任务(task) 29

1.6 Maven的安装和使用 31

1.6.1下载和安装Maven 31

1.6.2设置Maven 32

1.6.3创建、构建简单的项目 33

1.6.4 Maven的核心概念 36

1.6.5依赖管理 41

1.6.6 POM文件的元素 43

1.7使用SVN进行协作开发 44

1.7.1下载和安装SVN服务器 45

1.7.2配置SVN资源库 45

1.7.3下载和安装SVN客户端 47

1.7.4将项目发布到服务器 47

1.7.5从服务器下载项目 48

1.7.6提交(Commit)修改 48

1.7.7同步(Update)本地文件 48

1.7.8添加文件和目录 49

1.7.9删除文件和目录 50

1.7.10查看文件或目录的版本变革 50

1.7.11从以前版本重新开始 50

1.7.12创建分支 51

1.7.13沿着分支开发 51

1.7.14合并分支 52

1.7.15 使用Eclipse作为SVN客户端 52

1.8使用Git进行软件配置管理(SCM) 55

1.8.1下载和安装Git、 TortoiseGit 56

1.8.2创建本地资源库 58

1.8.3添加(Add)文件和目录 59

1.8.4提交(Commit)修改 60

1.8.5查看文件或目录的版本变更 61

1.8.6删除文件和目录 62

1.8.7从以前版本重新开始 62

1.8.8克隆(Clone)项目 63

1.8.9创建分支 64

1.8.10沿着分支开发 64

1.8.11合并分支 65

1.8.12使用Eclipse作为Git客户端 65

1.8.13配置远程中央资源库 67

1.8.14推送(Push)项目 69

1.8.15获取(Fetch)项目和拉取(Pull)项目 70

1.9本章小结 72

第2章 JSP/Servlet及相关技术详解 73

2.1 Web应用和web.xml文件 74

2.1.1构建Web应用 74

2.1.2配置描述符web.xml 75

2.2 JSP的基本原理 76

2.3 JSP的4种基本语法 80

2.3.1 JSP注释 80

2.3.2 JSP声明 81

2.3.3 JSP输出表达式 82

2.3.4 JSP小脚本 83

2.4 JSP的3个编译指令 85

2.4.1 page指令 85

2.4.2 include指令 89

2.5 JSP的7个动作指令 90

2.5.1 forward指令 90

2.5.2 include指令 92

2.5.3 useBean、 setProper、 getProper指令 93

2.5.4 plugin指令 96

2.5.5 param指令 96

2.6 JSP脚本中的9个内置对象 96

2.6.1 application对象 98

2.6.2 confiig对象 103

2.6.3 exception对象 105

2.6.4 out对象 107

2.6.5 pageContext对象 108

2.6.6 request对象 109

2.6.7 response对象 116

2.6.8 session对象 120

2.7 Servlet介绍 122

2.7.1 Servlet的开发 122

2.7.2 Servlet的配置 124

2.7.3 JSP/Servlet的生命周期 125

2.7.4 load.on.startup Servlet 126

2.7.5访问Servlet的配置参数 127

2.7.6使用Servlet作为控制器 129

2.8 JSP 2的自定义标签 133

2.8.1开发自定义标签类 133

2.8.2建立TLD文件 134

2.8.3使用标签库 135

2.8.4带属性的标签 136

2.8.5带标签体的标签 139

2.8.6以页面片段作为属性的标签 141

2.8.7动态属性的标签 143

2.9 Filter介绍 144

2.9.1创建Filter类 145

2.9.2配置Filter 146

2.9.3使用URL Rewrite实现网站伪静态 149

2.10 Listener介绍 150

2.10.1实现Listener类 151

2.10.2配置Listener 152

2.10.3使用ServletContextAttributeListener 153

2.10.4使用ServletRequestListener和ServletRequestAttributeListener 154

2.10.5使用HttpSessionListener和HttpSessionAttributeListener 155

2.11 JSP 2特性 160

2.11.1配置JSP属性 160

2.11.2表达式语言 162

2.11.3 Tag File支持 170

2.12 Servlet 3新特性 172

2.12.1 Servlet 3的注解 172

2.12.2 Servlet 3的Web模块支持 172

2.12.3 Servlet 3提供的异步处理 174

2.12.4改进的Servlet API 177

2.13 Servlet 3.1新增的非阻塞式IO 180

2.14 Tomcat 8.5的WebSocket支持 182

2.15 本章小结 187

第3章 Struts 2的基本用法 188

3.1 MVC思想概述 189

3.1.1传统Model 1和Model 2 189

3.1.2 MVC思想及其优势 190

3.2 Struts 2的下载和安装 191

3.2.1为Web应用增加Struts 2支持 191

3.2.2在Eclipse中使用Struts 2 192

3.2.3增加登录处理 193

3.3 Struts 2的流程 196

3.3.1 Struts 2应用的开发步骤 196

3.3.2 Struts 2的运行流程 197

3.4 Struts 2的常规配置 198

3.4.1常量配置 198

3.4.2包含其他配置文件 204

3.5实现Action 204

3.5.1 Action接口和ActionSupport基类 206

3.5.2 Action访问Servlet API 208

3.5.3 Action直接访问Servlet API 210

3.5.4使用ServletActionContext访问Servlet API 212

3.6配置Action 212

3.6.1包和命名空间 213

3.6.2 Action的基本配置 216

3.6.3使用Action的动态方法调用 217

3.6.4指定method属性及使用通配符 219

3.6.5配置默认Action 224

3.6.6配置Action的默认处理类 225

3.7配置处理结果 225

3.7.1理解处理结果 225

3.7.2配置结果 226

3.7.3 Struts 2支持的结果类型 227

3.7.4 plainText结果类型 229

3.7.5 redirect结果类型 230

3.7.6 redirectAction结果类型 231

3.7.7动态结果 232

3.7.8 Action属性值决定物理视图资源 232

3.7.9全局结果 234

3.7.10使用PreResultListener 235

3.8配置Struts 2的异常处理 236

3.8.1 Struts 2的异常处理机制 236

3.8.2声明式异常捕捉 238

3.8.3输出异常信息 239

3.9 Convention插件与“约定”支持 240

3.9.1 Action的搜索和映射约定 241

3.9.2按约定映射Result 243

3.9.3 Action链的约定 246

3.9.4自动重加载映射 247

3.9.5 Convention插件的相关常量 247

3.9.6 Convention插件相关注解 248

3.10使用Struts 2的国际化 248

3.10.1视图页面的国际化 249

3.10.2 Action的国际化 250

3.10.3使用包范围的国际化资源 251

3.10.4使用全局国际化资源 252

3.10.5输出带占位符的国际化消息 254

3.10.6 加载资源文件的顺序 256

3.11使用Struts 2的标签库 256

3.11.1 Struts 2标签库概述 256

3.11.2使用Struts 2标签 257

3.11.3 Struts 2的OGNL表达式语言 258

3.11.4 OGNL中的集合操作 260

3.11.5访问静态成员 261

3.11.6 Lambda (λ)表达式 261

3.11.7控制标签 262

3.11.8数据标签 271

3.11.9主题和模板 279

3.11.10自定义主题 281

3.11.11表单标签 282

3.11.12非表单标签 294

3.12本章小结 297

第4章 深入使用Struts 2 298

4.1详解Struts 2的类型转换 299

4.1.1 Struts 2内建的类型转换器 299

4.1.2基于OGNL的类型转换 300

4.1.3指定集合元素的类型 302

4.1.4自定义类型转换器 304

4.1.5注册类型转换器 306

4.1.6基于Struts 2的自定义类型转换器 308

4.1.7处理Set集合 308

4.1.8类型转换中的错误处理 311

4.2使用Struts 2的输入校验 316

4.2.1编写校验规则文件 316

4.2.2国际化提示信息 319

4.2.3使用客户端校验 320

4.2.4字段校验器配置风格 321

4.2.5非字段校验器配置风格 322

4.2.6短路校验器 324

4.2.7校验文件的搜索规则 325

4.2.8校验顺序和短路 327

4.2.9内建校验器 327

4.2.10基于注解的输入校验 337

4.2.11手动完成输入校验 339

4.3使用Struts 2控制文件上传 342

4.3.1 Struts 2的文件上传 342

4.3.2实现文件上传的Action 343

4.3.3配置文件上传的Action 345

4.3.4手动实现文件过滤 347

4.3.5拦截器实现文件过滤 348

4.3.6输出错误提示 349

4.3.7文件上传的常量配置 350

4.4使用Struts 2控制文件下载 351

4.4.1实现文件下载的Action 351

4.4.2配置Action 352

4.4.3下载前的授权控制 352

4.5详解Struts 2的拦截器机制 353

4.5.1拦截器在Struts 2中的作用 354

4.5.2 Struts 2内建的拦截器 354

4.5.3配置拦截器 356

4.5.4使用拦截器的配置语法 357

4.5.5配置默认拦截器 358

4.5.6实现拦截器类 360

4.5.7使用拦截器 361

4.5.8拦截方法的拦截器 362

4.5.9拦截器的执行顺序 365

4.5.10拦截结果的监听器 366

4.5.11覆盖拦截器栈里特定拦截器的参数 367

4.5.12使用拦截器完成权限控制 368

4.6使用Struts 2的Ajax支持 370

4.6.1使用stream类型的Result实现Ajax 370

4.6.2 JSON的基本知识 372

4.6.3实现Action逻辑 375

4.6.4 JSON插件与json类型的Result 376

4.6.5实现JSP页面 377

4.7本章小结 378

第5章 Hibernate的基本用法 380

5.1 ORM和Hibernate 381

5.1.1对象/关系数据库映射(ORM) 381

5.1.2基本映射方式 382

5.1.3流行的ORM框架简介 383

5.1.4 Hibernate概述 383

5.2 Hibernate入门 384

5.2.1 Hibernate下载和安装 384

5.2.2 Hibernate的数据库操作 385

5.2.3在Eclipse中使用Hibernate 389

5.3 Hibernate的体系结构 392

5.4深入Hibernate配置文件 393

5.4.1创建Confiiguration对象 393

5.4.2 hibernate.properties文件与hibernate.cfg.xml文件 396

5.4.3 JDBC连接属性 396

5.4.4数据库方言 397

5.4.5 JNDI数据源的连接属性 398

5.4.6 Hibernate事务属性 399

5.4.7二级缓存相关属性 399

5.4.8外连接抓取属性 399

5.4.9其他常用的配置属性 400

5.5深入理解持久化对象 400

5.5.1持久化类的要求 400

5.5.2持久化对象的状态 401

5.5.3改变持久化对象状态的方法 402

5.6深入Hibernate映射 405

5.6.1映射属性 407

5.6.2映射主键 415

5.6.3使用Hibernate的主键生成器 417

5.6.4映射集合属性 418

5.6.5集合属性的性能分析 424

5.6.6有序集合映射 426

5.6.7映射数据库对象 427

5.7映射组件属性 430

5.7.1组件属性为集合 432

5.7.2集合属性的元素为组件 433

5.7.3组件作为Map的索引 434

5.7.4组件作为复合主键 436

5.7.5多列作为联合主键 438

5.8使用传统的映射文件 439

5.8.1增加XML映射文件 439

5.8.2注解,还是XML映射文件 441

5.9本章小结 442

第6章 深入使用Hibernate与JPA 443

6.1 Hibernate的关联映射 444

6.1.1单向N-1关联 444

6.1.2单向1—1关联 449

6.1.3单向1-N关联 450

6.1.4单向N-N关联 453

6.1.5双向1-N关联 455

6.1.6双向N-N关联 458

6.1.7双向1—1关联 459

6.1.8组件属性包含的关联实体 461

6.1.9基于复合主键的关联关系 463

6.1.10复合主键的成员属性为关联实体 464

6.1.11持久化的传播性 467

6.2继承映射 468

6.2.1整个类层次对应一个表的映射策略 470

6.2.2连接子类的映射策略 472

6.2.3每个具体类对应一个表的映射策略 475

6.3批量处理策略 477

6.3.1批量插入 477

6.3.2 JPA与Hibernate 478

6.3.3 JPA的批量插入 479

6.3.4批量更新 481

6.3.5 DML风格的批量更新/删除 481

6.3.6 JPA的DML支持 482

6.4 HQL查询和JPQL查询 483

6.4.1 HQL查询 483

6.4.2 JPQL查询 485

6.4.3 from子句 487

6.4.4关联和连接 487

6.4.5查询的select子句 490

6.4.6 HQL查询的聚集函数 491

6.4.7多态查询 491

6.4.8 HQL查询的where子句 492

6.4.9表达式 493

6.4.10 order by子句 495

6.4.11 group by子句 495

6.4.12子查询 495

6.4.13命名查询 496

6.5动态条件查询 497

6.5.1执行DML语句 501

6.5.2 select的用法 502

6.5.3元组查询 503

6.5.4多Root查询 504

6.5.5关联和动态关联 505

6.5.6分组、聚集和排序 508

6.6原生SQL查询 510

6.6.1标量查询 510

6.6.2实体查询 511

6.6.3处理关联和继承 514

6.6.4命名SQL查询 515

6.6.5调用存储过程 517

6.6.6使用定制SQL 518

6.6.7 JPA的原生SQL查询 520

6.7数据过滤 524

6.8事务控制 526

6.8.1事务的概念 527

6.8.2 Session与事务 527

6.8.3上下文相关的Session 529

6.9二级缓存和查询缓存 530

6.9.1开启二级缓存 530

6.9.2管理缓存和统计缓存 533

6.9.3使用查询缓存 534

6.10事件机制 537

6.10.1拦截器 537

6.10.2事件系统 539

6.11本章小结 541

第7章 Spring的基本用法 542

7.1 Spring简介和Spring 5.0的变化 543

7.1.1 Spring简介 543

7.1.2 Spring 5.0的变化 544

7.2 Spring入门 544

7.2.1 Spring下载和安装 544

7.2.2使用Spring管理Bean 545

7.2.3在Eclipse中使用Spring 548

7.3 Spring的核心机制:依赖注入 551

7.3.1理解依赖注入 552

7.3.2设值注入 553

7.3.3构造注入 557

7.3.4两种注入方式的对比 558

7.4使用Spring容器 559

7.4.1 Spring容器 559

7.4.2使用ApplicationContext 560

7.4.3 ApplicationContext的国际化支持 562

7.4.4 ApplicationContext的事件机制 563

7.4.5让Bean获取Spring容器 566

7.5 Spring容器中的Bean 568

7.5.1 Bean的基本定义和Bean别名 568

7.5.2容器中Bean的作用域 569

7.5.3配置依赖 572

7.5.4设置普通属性值 574

7.5.5配置合作者Bean 575

7.5.6使用自动装配注入合作者Bean 575

7.5.7注入嵌套Bean 578

7.5.8注入集合值 579

7.5.9组合属性 583

7.5.10 Spring的Bean和JavaBean 584

7.6 Spring提供的Java配置管理 585

7.7创建Bean的3种方式 588

7.7.1使用构造器创建Bean实例 588

7.7.2使用静态工厂方法创建Bean 589

7.7.3调用实例工厂方法创建Bean 591

7.8深入理解容器中的Bean 593

7.8.1抽象Bean与子Bean 593

7.8.2 Bean继承与Java继承的区别 595

7.8.3容器中的工厂Bean 595

7.8.4获得Bean本身的id 597

7.8.5强制初始化Bean 598

7.9容器中Bean的生命周期 598

7.9.1依赖关系注入之后的行为 599

7.9.2 Bean销毁之前的行为 601

7.9.3协调作用域不同步的Bean 603

7.10高级依赖关系配置 606

7.10.1获取其他Bean的属性值 607

7.10.2获取Field值 609

7.10.3获取方法返回值 611

7.11基于XML Schema的简化配置方式 614

7.11.1使用P:命名空间简化配置 614

7.11.2使用c:命名空间简化配置 615

7.11.3使用util:命名空间简化配置 617

7.12 Spring提供的表达式语言(SpEL) 619

7.12.1使用Expression接口进行表达式求值 619

7.12.2 Bean定义中的表达式语言支持 621

7.12.3 SpEL语法详述 622

7.13本章小结 627

第8章 深入使用Spring 628

8.1两种后处理器 629

8.1.1 Bean后处理器 629

8.1.2 Bean后处理器的用处 633

8.1.3容器后处理器 633

8.1.4属性占位符配置器 634

8.1.5重写占位符配置器 636

8.2 Spring的“零配置”支持 637

8.2.1搜索Bean类 637

8.2.2指定Bean的作用域 640

8.2.3使用@Resource和@Value配置依赖 640

8.2.4使用@PostConstruct和@PreDestroy定制生命周期行为 641

8.2.5使用@DependsOn和@Lazy改变初始化行为 642

8.2.6自动装配和精确装配 643

8.2.7 Spring 5新增的注解 647

8.2.8使用@Required检查注入 648

8.3资源访问 648

8.3.1 Resource实现类 649

8.3.2 ResourceLoader接口和ResourceLoaderAware接口 653

8.3.3使用Resource作为属性 655

8.3.4在ApplicationContext中使用资源 656

8.4 Spring的AOP 660

8.4.1为什么需要AOP 660

8.4.2使用AspectJ实现AOP 661

8.4.3 AOP的基本概念 667

8.4.4 Spring的AOP支持 668

8.4.5基于注解的“零配置”方式 669

8.4.6 基于XML配置文件的管理方式 684

8.5 Spring的缓存机制 690

8.5.1启用Spring缓存 690

8.5.2使用@Cacheable执行缓存 693

8.5.3使用@CacheEvict清除缓存 696

8.6 Spring的事务 698

8.6.1 Spring支持的事务策略 698

8.6.2使用XML Schema配置事务策略 702

8.6.3使用@Transactional 708

8.7 Spring整合Struts 2 709

8.7.1启动Spring容器 709

8.7.2 MVC框架与Spring整合的思考 710

8.7.3让Spring管理控制器 711

8.7.4使用自动装配 715

8.8 Spring整合Hibernate 717

8.8.1 Spring提供的DAO支持 717

8.8.2管理Hibernate的SessionFactory 718

8.8.3实现DAO组件的基类 719

8.8.4 HibernateTemplate和HibernateDaoSupport 722

8.8.5实现DAO组件 725

8.8.6使用IoC容器组装各种组件 725

8.8.7使用声明式事务 728

8.9 Spring整合JPA 729

8.9.1管理EntityManagerFactory 729

8.9.2实现DAO组件基类 732

8.9.3使用声明式事务 734

8.10本章小结 735

第9章 企业应用开发的思考和策略 736

9.1企业应用开发面临的挑战 737

9.1.1可扩展性、可伸缩性 737

9.1.2快捷、可控的开发 738

9.1.3稳定性、高效性 738

9.1.4花费最小化,利益最大化 739

9.2如何面对挑战 739

9.2.1使用建模工具 739

9.2.2利用优秀的框架 739

9.2.3选择性地扩展 741

9.2.4使用代码生成器 742

9.3常见设计模式精讲 742

9.3.1单例模式 743

9.3.2简单工厂 744

9.3.3工厂方法和抽象工厂 750

9.3.4代理模式 753

9.3.5命令模式 758

9.3.6策略模式 761

9.3.7门面模式 763

9.3.8桥接模式 766

9.3.9观察者模式 769

9.4常见的架构设计策略 773

9.4.1贫血模型 773

9.4.2领域对象模型 776

9.4.3合并业务逻辑组件与DAO组件 778

9.4.4合并业务逻辑组件和Domain Object 779

9.4.5抛弃业务逻辑层 780

9.5本章小结 781

第10章 简单工作流系统 782

10.1项目背景及系统结构 783

10.1.1应用背景 783

10.1.2系统功能介绍 783

10.1.3相关技术介绍 784

10.1.4系统结构 785

10.1.5系统的功能模块 785

10.2 Hibernate持久层 786

10.2.1设计持久化实体 786

10.2.2创建持久化实体类 787

10.3实现DAO层 792

10.3.1 DAO组件的定义 792

10.3.2实现DAO组件 795

10.3.3部署DAO层 797

10.4实现Service层 799

10.4.1业务逻辑组件的设计 799

10.4.2实现业务逻辑组件 800

10.4.3事务管理 805

10.4.4部署业务逻辑组件 806

10.5实现任务的自动调度 806

10.5.1使用Quartz 806

10.5.2在Spring中使用Quartz 810

10.6实现系统Web层 813

10.6.1 Struts 2和Spring的整合 813

10.6.2控制器的处理顺序图 814

10.6.3员工登录 814

10.6.4进入打卡 816

10.6.5处理打卡 818

10.6.6进入申请 819

10.6.7提交申请 821

10.6.8使用拦截器完成权限管理 823

10.7本章小结 824