第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.3及替代技術 5
1.2.3 Hibernate 4.3及替代技術 6
1.2.4 Spring 4.0及替代技術 6
1.3 Tomcat的下載和安裝 7
1.3.1 安裝Tomcat服務器 7
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插件 14
1.4.3 從本地壓縮包安裝插件 16
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的下載和安裝 22
1.5.2 使用Ant工具 23
1.5.3 定義生成文件 24
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文件的元素 44
1.7 使用SVN進行協作開發 44
1.7.1 下載和安裝SVN服務器 45
1.7.2 配置SVN資源庫 46
1.7.3 下載和安裝SVN客戶端 47
1.7.4 將項目發布到服務器 48
1.7.5 從服務器下載項目 48
1.7.6 提交(Commit)修改 49
1.7.7 同步(Update)本地文件 49
1.7.8 添加文件和目錄 50
1.7.9 刪除文件和目錄 50
1.7.10 查看文件或目錄的版本變革 51
1.7.11 從以前版本重新開始 51
1.7.12 創建分支 52
1.7.13 沿著分支開發 52
1.7.14 閤並分支 53
1.7.15 使用Eclipse作為SVN客戶端 54
1.8 本章小結 57
第2章 JSP/Servlet及相關技術詳解 58
2.1 Web應用和web.xml文件 59
2.1.1 構建Web應用 59
2.1.2 配置描述符web.xml 60
2.2 JSP的基本原理 61
2.3 JSP的4種基本語法 65
2.3.1 JSP注釋 65
2.3.2 JSP聲明 66
2.3.3 輸齣JSP錶達式 67
2.3.4 JSP腳本 68
2.4 JSP的3個編譯指令 70
2.4.1 page指令 70
2.4.2 include指令 74
2.5 JSP的7個動作指令 75
2.5.1 forward指令 75
2.5.2 include指令 77
2.5.3 useBean、setProperty、getProperty指令 79
2.5.4 plugin指令 81
2.5.5 param指令 81
2.6 JSP腳本中的9個內置對象 82
2.6.1 application對象 83
2.6.2 config對象 88
2.6.3 exception對象 90
2.6.4 out對象 92
2.6.5 pageContext對象 93
2.6.6 request對象 95
2.6.7 response對象 102
2.6.8 session對象 106
2.7 Servlet介紹 108
2.7.1 Servlet的開發 108
2.7.2 Servlet的配置 110
2.7.3 JSP/Servlet的生命周期 111
2.7.4 load-on-startup Servlet 112
2.7.5 訪問Servlet的配置參數 113
2.7.6 使用Servlet作為控製器 115
2.8 JSP 2的自定義標簽 119
2.8.1 開發自定義標簽類 120
2.8.2 建立TLD文件 120
2.8.3 使用標簽庫 121
2.8.4 帶屬性的標簽 122
2.8.5 帶標簽體的標簽 125
2.8.6 以頁麵片段作為屬性的標簽 128
2.8.7 動態屬性的標簽 129
2.9 Filter介紹 131
2.9.1 創建Filter類 132
2.9.2 配置Filter 133
2.9.3 使用URL Rewrite實現網站僞靜態 136
2.10 Listener介紹 137
2.10.1 實現Listener類 138
2.10.2 配置Listener 139
2.10.3 使用ServletContextAttributeListener 140
2.10.4 使用ServletRequestListener和ServletRequestAttributeListener 141
2.10.5 使用HttpSessionListener和HttpSessionAttributeListener 142
2.11 JSP 2特性 147
2.11.1 配置JSP屬性 147
2.11.2 錶達式語言 149
2.11.3 Tag File支持 157
2.12 Servlet 3.0新特性 159
2.12.1 Servlet 3.0的注解 159
2.12.2 Servlet 3.0的Web模塊支持 160
2.12.3 Servlet 3.0提供的異步處理 162
2.12.4改進的Servlet API 165
2.13 Servlet 3.1新增的非阻塞式IO 167
2.14 Tomcat 8的WebSocket支持 170
2.15 本章小結 174
第3章 Struts 2的基本用法 175
3.1 MVC思想概述 176
3.1.1 傳統Model 1和Model 2 176
3.1.2 MVC思想及其優勢 177
3.2 Struts 2的下載和安裝 178
3.2.1 為Web應用增加Struts 2支持 178
3.2.2 在Eclipse中使用Struts 2 179
3.2.3 增加登錄處理 180
3.3 Struts 2的流程 183
3.3.1 Struts 2應用的開發步驟 183
3.3.2 Struts 2的流程 184
3.4 Struts 2的常規配置 185
3.4.1 常量配置 185
3.4.2 包含其他配置文件 191
3.5 實現Action 191
3.5.1 Action接口和ActionSupport基類 193
3.5.2 Action訪問Servlet API 195
3.5.3 Action直接訪問Servlet API 197
3.5.4 使用ServletActionContext訪問Servlet API 199
3.6 配置Action 200
3.6.1 包和命名空間 200
3.6.2 Action的基本配置 203
3.6.3 使用Action的動態方法調用 204
3.6.4 指定method屬性及使用通配符 205
3.6.5 配置默認Action 211
3.6.6 配置Action的默認處理類 211
3.7 配置處理結果 212
3.7.1 理解處理結果 212
3.7.2 配置結果 213
3.7.3 Struts 2支持的結果類型 214
3.7.4 plainText結果類型 215
3.7.5 redirect結果類型 217
3.7.6 redirectAction結果類型 218
3.7.7 動態結果 219
3.7.8 Action屬性值決定物理視圖資源 219
3.7.9 全局結果 221
3.7.10 使用PreResultListener 222
3.8 配置Struts 2的異常處理 223
3.8.1 Struts 2的異常處理機製 223
3.8.2 聲明式異常捕捉 225
3.8.3 輸齣異常信息 226
3.9 Convention插件與“約定”支持 227
3.9.1 Action的搜索和映射約定 228
3.9.2 按約定映射Result 230
3.9.3 Action鏈的約定 233
3.9.4 自動重加載映射 234
3.9.5 Convention插件的相關常量 234
3.9.6 Convention插件相關Annotation 235
3.10 使用Struts 2的國際化 235
3.10.1 視圖頁麵的國際化 235
3.10.2 Action的國際化 236
3.10.3 使用包範圍的國際化資源 238
3.10.4 使用全局國際化資源 239
3.10.5 輸齣帶占位符的國際化消息 241
3.10.6 加載資源文件的順序 243
3.11 使用Struts 2的標簽庫 243
3.11.1 Struts 2標簽庫概述 243
3.11.2 使用Struts 2標簽 244
3.11.3 Struts 2的OGNL錶達式語言 245
3.11.4 OGNL中的集閤操作 247
3.11.5 訪問靜態成員 248
3.11.6 Lambda()錶達式 248
3.11.7 控製標簽 249
3.11.8 數據標簽 259
3.11.9 主題和模闆 268
3.11.10 自定義主題 270
3.11.11 錶單標簽 271
3.11.12 非錶單標簽 284
3.12 本章小結 287
第4章 深入使用Struts 2 288
4.1 詳解Struts 2的類型轉換 289
4.1.1 Struts 2內建的類型轉換器 290
4.1.2 基於OGNL的類型轉換 290
4.1.3 指定集閤元素的類型 292
4.1.4 自定義類型轉換器 294
4.1.5 注冊類型轉換器 297
4.1.6 基於Struts 2的自定義類型轉換器 298
4.1.7 處理Set集閤 299
4.1.8 類型轉換中的錯誤處理 301
4.2 使用Struts 2的輸入校驗 307
4.2.1 編寫校驗規則文件 307
4.2.2 國際化提示信息 310
4.2.3 使用客戶端校驗 311
4.2.4 字段校驗器配置風格 312
4.2.5 非字段校驗器配置風格 313
4.2.6 短路校驗器 315
4.2.7 校驗文件的搜索規則 316
4.2.8 校驗順序和短路 318
4.2.9 內建校驗器 318
4.2.10 基於注解的輸入校驗 329
4.2.11 手動完成輸入校驗 330
4.3 使用Struts 2控製文件上傳 334
4.3.1 Struts 2的文件上傳 334
4.3.2 實現文件上傳的Action 335
4.3.3 配置文件上傳的Action 337
4.3.4 手動實現文件過濾 338
4.3.5 攔截器實現文件過濾 340
4.3.6 輸齣錯誤提示 341
4.3.7 文件上傳的常量配置 342
4.4 使用Struts 2控製文件下載 343
4.4.1 實現文件下載的Action 343
4.4.2 配置Action 343
4.4.3 下載前的授權控製 344
4.5 詳解Struts 2的攔截器機製 345
4.5.1 攔截器在Struts 2中的作用 346
4.5.2 Struts 2內建的攔截器 346
4.5.3 配置攔截器 348
4.5.4 使用攔截器的配置語法 349
4.5.5 配置默認攔截器 350
4.5.6 實現攔截器類 351
4.5.7 使用攔截器 353
4.5.8 攔截方法的攔截器 354
4.5.9 攔截器的執行順序 356
4.5.10 攔截結果的監聽器 358
4.5.11 覆蓋攔截器棧裏特定攔截器的參數 359
4.5.12 使用攔截器完成權限控製 360
4.6 使用Struts 2的Ajax支持 362
4.6.1 使用stream類型的Result實現Ajax 363
4.6.2 JSON的基本知識 365
4.6.3 實現Action邏輯 367
4.6.4 JSON插件與json類型的Result 368
4.6.5 實現JSP頁麵 370
4.7 本章小結 371
第5章 Hibernate的基本用法 372
5.1 ORM和Hibernate 373
5.1.1 對象/關係數據庫映射(ORM) 373
5.1.2 基本映射方式 374
5.1.3 流行的ORM框架簡介 375
5.1.4 Hibernate概述 376
5.2 Hibernate入門 376
5.2.1 Hibernate下載和安裝 376
5.2.2 Hibernate的數據庫操作 377
5.2.3 在Eclipse中使用Hibernate 381
5.3 Hibernate的體係結構 386
5.4 深入Hibernate配置文件 388
5.4.1 創建Configuration對象 388
5.4.2 hibernate.properties文件與hibernate.cfg.xml文件 390
5.4.3 JDBC連接屬性 390
5.4.4 數據庫方言 391
5.4.5 JNDI數據源的連接屬性 393
5.4.6 Hibernate事務屬性 393
5.4.7 二級緩存相關屬性 393
5.4.8 外連接抓取屬性 394
5.4.9 其他常用的配置屬性 394
5.5 深入理解持久化對象 394
5.5.1 持久化類的要求 395
5.5.2 持久化對象的狀態 396
5.5.3 改變持久化對象狀態的方法 397
5.6 深入Hibernate映射 399
5.6.1 映射屬性 402
5.6.2 映射主鍵 409
5.6.3 使用Hibernate的主鍵生成策略 411
5.6.4 映射集閤屬性 412
5.6.5 集閤屬性的性能分析 419
5.6.6 有序集閤映射 420
5.6.7 映射數據庫對象 422
5.7 映射組件屬性 424
5.7.1 組件屬性為集閤 426
5.7.2 集閤屬性的元素為組件 427
5.7.3 組件作為Map的索引 429
5.7.4 組件作為復閤主鍵 430
5.7.5 多列作為聯閤主鍵 432
5.8 使用傳統的映射文件 433
5.8.1 增加XML映射文件 433
5.8.2 注解,還是XML映射文件 436
5.9 本章小結 436
第6章 深入使用Hibernate 437
6.1 Hibernate的關聯映射 438
6.1.1 單嚮N-1關聯 438
6.1.2 單嚮1-1關聯 443
6.1.3 單嚮1-N關聯 444
6.1.4 單嚮N-N關聯 448
6.1.5 雙嚮1-N關聯 449
6.1.6 雙嚮N-N關聯 452
6.1.7 雙嚮1-1關聯 454
6.1.8 組件屬性包含的關聯實體 456
6.1.9 基於復閤主鍵的關聯關係 458
6.1.10 復閤主鍵的成員屬性為關聯實體 460
6.1.11 持久化的傳播性 463
6.2 繼承映射 464
6.2.1 整個類層次對應一個錶的映射策略 466
6.2.2 連接子類的映射策略 468
6.2.3 每個具體類對應一個錶的映射策略 471
6.3 Hibernate的批量處理 473
6.3.1 批量插入 473
6.3.2 批量更新 474
6.3.3 DML風格的批量更新/刪除 475
6.4 使用HQL查詢 476
6.4.1 HQL查詢 476
6.4.2 HQL查詢的from子句 478
6.4.3 關聯和連接 479
6.4.4 HQL查詢的select子句 482
6.4.5 HQL查詢的聚集函數 482
6.4.6 多態查詢 483
6.4.7 HQL查詢的where子句 483
6.4.8 錶達式 484
6.4.9 order by子句 486
6.4.10 group by子句 486
6.4.11 子查詢 487
6.4.12 命名查詢 487
6.5 條件查詢 489
6.5.1 關聯和動態關聯 491
6.5.2 投影、聚閤和分組 493
6.5.3 離綫查詢和子查詢 496
6.6 SQL查詢 497
6.6.1 標量查詢 497
6.6.2 實體查詢 499
6.6.3 處理關聯和繼承 501
6.6.4 命名SQL查詢 502
6.6.5 調用存儲過程 504
6.6.6 使用定製SQL 505
6.7 數據過濾 507
6.8 事務控製 510
6.8.1 事務的概念 510
6.8.2 Session與事務 511
6.8.3 上下文相關的Session 513
6.9 二級緩存和查詢緩存 514
6.9.1 開啓二級緩存 514
6.9.2 管理緩存和統計緩存 517
6.9.3 使用查詢緩存 518
6.10 事件機製 520
6.10.1 攔截器 521
6.10.2 事件係統 523
6.11 本章小結 525
第7章 Spring的基本用法 526
7.1 Spring簡介和Spring 4.0的變化 527
7.1.1 Spring簡介 527
7.1.2 Spring 4.0的變化 528
7.2 Spring入門 528
7.2.1 Spring下載和安裝 528
7.2.2 使用Spring管理Bean 529
7.2.3 在Eclipse中使用Spring 532
7.3 Spring的核心機製:依賴注入 535
7.3.1 理解依賴注入 536
7.3.2 設值注入 538
7.3.3 構造注入 541
7.3.4 兩種注入方式的對比 543
7.4 使用Spring容器 543
7.4.1 Spring容器 544
7.4.2 使用ApplicationContext 545
7.4.3 ApplicationContext的國際化支持 546
7.4.4 ApplicationContext的事件機製 548
7.4.5 讓Bean獲取Spring容器 551
7.5 Spring容器中的Bean 552
7.5.1 Bean的基本定義和Bean彆名 553
7.5.2 容器中Bean的作用域 554
7.5.3 配置依賴 557
7.5.4 設置普通屬性值 559
7.5.5 配置閤作者Bean 560
7.5.6 使用自動裝配注入閤作者Bean 561
7.5.7 注入嵌套Bean 563
7.5.8 注入集閤值 564
7.5.9 組閤屬性 568
7.5.10 Spring的Bean和JavaBean 569
7.6 Spring 3.0提供的Java配置管理 571
7.7 創建Bean的3種方式 573
7.7.1 使用構造器創建Bean實例 574
7.7.2 使用靜態工廠方法創建Bean 574
7.7.3 調用實例工廠方法創建Bean 576
7.8 深入理解容器中的Bean 578
7.8.1 抽象Bean與子Bean 578
7.8.2 Bean繼承與Java繼承的區彆 580
7.8.3 容器中的工廠Bean 580
7.8.4 獲得Bean本身的id 582
7.8.5 強製初始化Bean 583
7.9 容器中Bean的生命周期 584
7.9.1 依賴關係注入之後的行為 584
7.9.2 Bean銷毀之前的行為 586
7.9.3 協調作用域不同步的Bean 589
7.10 高級依賴關係配置 592
7.10.1 獲取其他Bean的屬性值 592
7.10.2 獲取Field值 595
7.10.3 獲取方法返迴值 596
7.11 基於XML Schema的簡化配置方式 599
7.11.1 使用p:命名空間簡化配置 599
7.11.2 使用c:命名空間簡化配置 601
7.11.3 使用util:命名空間簡化配置 602
7.12 Spring 3.0提供的錶達式語言(SpEL) 604
7.12.1 使用Expression接口進行錶達式求值 604
7.12.2 Bean定義中的錶達式語言支持 606
7.12.3 SpEL語法詳述 607
7.13 本章小結 612
第8章 深入使用Spring 613
8.1 兩種後處理器 614
8.1.1 Bean後處理器 614
8.1.2 Bean後處理器的用處 617
8.1.3 容器後處理器 618
8.1.4 屬性占位符配置器 619
8.1.5 重寫占位符配置器 620
8.2 Spring的“零配置”支持 622
8.2.1 搜索Bean類 622
8.2.2 指定Bean的作用域 625
8.2.3 使用@Resource配置依賴 625
8.2.4 使用@PostConstruct和@PreDestroy定製生命周期行為 626
8.2.5 Spring 3.0新增的注解 627
8.2.6 Spring 4.0增強的自動裝配和精確裝配 627
8.3 資源訪問 631
8.3.1 Resource實現類 632
8.3.2 ResourceLoader接口和ResourceLoaderAware接口 636
8.3.3 使用Resource作為屬性 639
8.3.4 在ApplicationContext中使用資源 640
8.4 Spring的AOP 643
8.4.1 為什麼需要AOP 643
8.4.2 使用AspectJ實現AOP 644
8.4.3 AOP的基本概念 651
8.4.4 Spring的AOP支持 652
8.4.5 基於注解的“零配置”方式 653
8.4.6 基於XML配置文件的管理方式 667
8.5 Spring 3.1新增的緩存機製 673
8.5.1 啓用Spring緩存 674
8.5.2 使用@Cacheable執行緩存 676
8.5.3 使用@CacheEvict清除緩存 680
8.6 Spring的事務 681
8.6.1 Spring支持的事務策略 681
8.6.2 使用XML Schema配置事務策略 686
8.6.3 使用@Transactional 692
8.7 Spring整閤Struts 2 693
8.7.1 啓動Spring容器 693
8.7.2 MVC框架與Spring整閤的思考 694
8.7.3 讓Spring管理控製器 695
8.7.4 使用自動裝配 699
8.8 Spring整閤Hibernate 701
8.8.1 Spring提供的DAO支持 701
8.8.2 管理Hibernate的SessionFactory 702
8.8.3 實現DAO組件的基類 703
8.8.4 傳統的HibernateTemplate和HibernateDaoSupport 706
8.8.5 實現DAO組件 709
8.8.6 使用IoC容器組裝各種組件 709
8.8.7 使用聲明式事務 712
8.9 Spring整閤JPA 713
8.9.1 管理EntityManagerFactory 713
8.9.2 實現DAO組件基類 715
8.9.3 使用聲明式事務 718
8.10 本章小結 719
第9章 企業應用開發的思考和策略 720
9.1 企業應用開發麵臨的挑戰 721
9.1.1 可擴展性、可伸縮性 721
9.1.2 快捷、可控的開發 722
9.1.3 穩定性、高效性 722
9.1.4 花費最小化,利益最大化 723
9.2 如何麵對挑戰 723
9.2.1 使用建模工具 723
9.2.2 利用優秀的框架 723
9.2.3 選擇性地擴展 725
9.2.4 使用代碼生成器 726
9.3 常見設計模式精講 726
9.3.1 單例模式 727
9.3.2 簡單工廠 728
9.3.3 工廠方法和抽象工廠 734
9.3.4 代理模式 737
9.3.5 命令模式 742
9.3.6 策略模式 745
9.3.7 門麵模式 748
9.3.8 橋接模式 750
9.3.9 觀察者模式 754
9.4 常見的架構設計策略 757
9.4.1 貧血模型 757
9.4.2 領域對象模型 760
9.4.3 閤並業務邏輯對象與DAO對象 762
9.4.4 閤並業務邏輯對象和Domain Object 763
9.4.5 拋棄業務邏輯層 764
9.5 本章小結 765
第10章 簡單工作流係統 766
10.1 項目背景及係統結構 767
10.1.1 應用背景 767
10.1.2 係統功能介紹 767
10.1.3 相關技術介紹 768
10.1.4 係統結構 768
10.1.5 係統的功能模塊 769
10.2 Hibernate持久層 770
10.2.1 設計持久化實體 770
10.2.2 創建持久化實體類 771
10.3 實現DAO層 777
10.3.1 DAO組件的定義 778
10.3.2 實現DAO組件 780
10.3.3 部署DAO層 783
10.4 實現Service層 784
10.4.1 業務邏輯組件的設計 785
10.4.2 實現業務邏輯組件 785
10.4.3 事務管理 790
10.4.4 部署業務邏輯組件 791
10.5 實現任務的自動調度 791
10.5.1 使用Quartz 791
10.5.2 在Spring中使用Quartz 795
10.6 實現係統Web層 798
10.6.1 Struts 2和Spring的整閤 798
10.6.2 控製器的處理順序圖 799
10.6.3 員工登錄 799
10.6.4 進入打卡 802
10.6.5 處理打卡 803
10.6.6 進入申請 805
10.6.7 提交申請 806
10.6.8 使用攔截器完成權限管理 808
10.7 本章小結 809
· · · · · · (
收起)