第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.0和JavaBean及替代技術 5
1.2.2 Struts 2.2及替代技術 5
1.2.3 Hibernate 3.6及替代技術 6
1.2.4 Spring 3.0及替代技術 6
1.3 Tomcat的下載和安裝 7
1.3.1 安裝Tomcat服務器 8
1.3.2 配置Tomcat的服務端口 9
1.3.3 進入控製颱 10
1.3.4 部署Web應用 12
1.3.5 配置Tomcat的數據源 13
1.4 Eclipse的安裝和使用 15
1.4.1 Eclipse的下載和安裝 15
1.4.2 在綫安裝Eclipse插件 15
1.4.3 從本地壓縮包安裝插件 17
1.4.4 手動安裝Eclipse插件 17
1.4.5 使用Eclipse開發Java EE應用 18
1.4.6 導入Eclipse項目 21
1.4.7 導入非Eclipse項目 22
1.5 Ant的安裝和使用 23
1.5.1 Ant的下載和安裝 23
1.5.2 使用Ant工具 24
1.5.3 定義生成文件 25
1.5.4 Ant的任務(task) 29
1.6 使用CVS進行協作開發 31
1.6.1 安裝CVS服務器 32
1.6.2 配置CVS資源庫 34
1.6.3 安裝CVS客戶端 35
1.6.4 發布項目到服務器 35
1.6.5 從服務器下載項目 37
1.6.6 同步(Update)本地文件 38
1.6.7 提交(Commit)修改 39
1.6.8 添加文件和目錄 39
1.6.9 刪除文件和目錄 40
1.6.10 查看文件的版本變革 41
1.6.11 提取文件以前版本的內容 42
1.6.12 從以前版本重新開始 42
1.6.13 創建標簽 43
1.6.14 創建分支 43
1.6.15 沿著分支開發 44
1.6.16 使用Eclipse作為CVS客戶端 44
1.7 本章小結 46
第2章 JSP/Servlet及相關技術詳解 47
2.1 Web應用和web.xml文件 48
2.1.1 構建Web應用 48
2.1.2 配置描述符web.xml 49
2.2 JSP的基本原理 50
2.3 JSP注釋 54
2.4 JSP聲明 54
2.5 輸齣JSP錶達式 56
2.6 JSP腳本 56
2.7 JSP的3個編譯指令 59
2.7.1 page指令 59
2.7.2 include指令 63
2.8 JSP的7個動作指令 63
2.8.1 forward指令 64
2.8.2 include指令 66
2.8.3 useBean、setProperty、getProperty指令 67
2.8.4 plugin指令 70
2.8.5 param指令 70
2.9 JSP腳本中的9個內置對象 70
2.9.1 application對象 72
2.9.2 config對象 77
2.9.3 exception對象 79
2.9.4 out對象 81
2.9.5 pageContext對象 82
2.9.6 request對象 84
2.9.7 response對象 91
2.9.8 session對象 95
2.10 Servlet介紹 97
2.10.1 Servlet的開發 97
2.10.2 Servlet的配置 99
2.10.3 JSP/Servlet的生命周期 101
2.10.4 load-on-startup Servlet 101
2.10.5 訪問Servlet的配置參數 102
2.10.6 使用Servlet作為控製器 104
2.11 JSP 2的自定義標簽 108
2.11.1 開發自定義標簽類 109
2.11.2 建立TLD文件 109
2.11.3 使用標簽庫 110
2.11.4 帶屬性的標簽 111
2.11.5 帶標簽體的標簽 115
2.11.6 以頁麵片段作為屬性的標簽 117
2.11.7 動態屬性的標簽 118
2.12 Filter介紹 120
2.12.1 創建Filter類 120
2.12.2 配置Filter 121
2.12.3 使用URL Rewrite實現網站僞靜態 125
2.13 Listener介紹 126
2.13.1 實現Listener類 127
2.13.2 配置Listener 128
2.13.3 使用ServletContextAttribute-Listener 129
2.13.4 使用ServletRequestListener和ServletRequestAttributeListener 130
2.13.5 使用HttpSessionListener和HttpSessionAttributeListener 131
2.14 JSP 2特性 136
2.14.1 配置JSP屬性 136
2.14.2 錶達式語言 138
2.14.3 Tag File支持 146
2.15 Servlet 3.0新特性 148
2.15.1 Servlet 3.0的Annotation 148
2.15.2 Servlet 3.0的Web模塊支持 149
2.15.3 Servlet 3.0提供的異步處理 151
2.15.4 改進的Servlet API 154
2.16 本章小結 156
第3章 Struts 2的基本用法 157
3.1 MVC思想概述 158
3.1.1 傳統Model 1和Model 2 158
3.1.2 MVC思想及其優勢 159
3.2 Struts 2的下載和安裝 160
3.2.1 為Web應用增加Struts 2支持 160
3.2.2 在Eclipse中使用Struts 2 161
3.2.3 增加登錄處理 162
3.3 Struts 2的流程 165
3.3.1 Struts 2應用的開發步驟 165
3.3.2 Struts 2的流程 166
3.4 Struts 2的常規配置 167
3.4.1 常量配置 167
3.4.2 包含其他配置文件 173
3.5 實現Action 174
3.5.1 Action接口和ActionSupport基類 175
3.5.2 Action訪問Servlet API 177
3.5.3 Action直接訪問Servlet API 179
3.5.4 使用ServletActionContext訪問Servlet API 181
3.6 配置Action 182
3.6.1 包和命名空間 182
3.6.2 Action的基本配置 185
3.6.3 使用Action的動態方法調用 186
3.6.4 指定method屬性及使用通配符 188
3.6.5 配置默認Action 194
3.6.6 配置Action的默認處理類 194
3.7 配置處理結果 195
3.7.1 理解處理結果 195
3.7.2 配置結果 195
3.7.3 Struts 2支持的結果類型 197
3.7.4 plainText結果類型 198
3.7.5 redirect結果類型 200
3.7.6 redirectAction結果類型 201
3.7.7 動態結果 202
3.7.8 Action屬性值決定物理視圖資源 202
3.7.9 全局結果 204
3.7.10 使用PreResultListener 205
3.8 配置Struts 2的異常處理 206
3.8.1 Struts 2的異常處理機製 207
3.8.2 聲明式異常捕捉 208
3.8.3 輸齣異常信息 210
3.9 Convention插件與“約定”支持 211
3.9.1 Action的搜索和映射約定 211
3.9.2 按約定映射Result 214
3.9.3 Action鏈的約定 216
3.9.4 自動重加載映射 218
3.9.5 Convention插件的相關常量 218
3.9.6 Convention插件相關Annotation 219
3.10 使用Struts 2的國際化 219
3.10.1 Struts 2中加載全局資源文件 219
3.10.2 訪問國際化消息 220
3.10.3 輸齣帶占位符的國際化消息 222
3.10.4 加載資源文件的方式 224
3.10.5 加載資源文件的順序 228
3.11 使用Struts 2的標簽庫 228
3.11.1 Struts 2標簽庫概述 228
3.11.2 使用Struts 2標簽 229
3.11.3 Struts 2的OGNL錶達式語言 230
3.11.4 OGNL中的集閤操作 232
3.11.5 訪問靜態成員 233
3.11.6 Lambda()錶達式 234
3.11.7 控製標簽 234
3.11.8 數據標簽 244
3.11.9 主題和模闆 254
3.11.10 自定義主題 256
3.11.11 錶單標簽 257
3.11.12 非錶單標簽 270
3.12 本章小結 273
第4章 深入使用Struts 2 274
4.1 詳解Struts 2的類型轉換 275
4.1.1 Struts 2內建的類型轉換器 276
4.1.2 基於OGNL的類型轉換 276
4.2.3 指定集閤元素的類型 279
4.1.4 自定義類型轉換器 280
4.1.5 注冊類型轉換器 283
4.1.6 基於Struts 2的自定義類型轉換器 284
4.1.7 處理Set集閤 285
4.1.8 類型轉換中的錯誤處理 288
4.2 使用Struts 2的輸入校驗 293
4.2.1 編寫校驗規則文件 294
4.2.2 國際化提示信息 296
4.2.3 使用客戶端校驗 298
4.2.4 字段校驗器配置風格 300
4.2.5 非字段校驗器配置風格 301
4.2.6 短路校驗器 302
4.2.7 校驗文件的搜索規則 304
4.2.8 校驗順序和短路 305
4.2.9 內建校驗器 306
4.2.10 基於Annotation的輸入校驗 316
4.2.11 手動完成輸入校驗 318
4.3 使用Struts 2控製文件上傳 322
4.3.1 Struts 2的文件上傳 322
4.3.2 實現文件上傳的Action 322
4.3.3 配置文件上傳的Action 325
4.3.4 手動實現文件過濾 326
4.3.5 攔截器實現文件過濾 328
4.3.6 輸齣錯誤提示 329
4.3.7 文件上傳的常量配置 330
4.4 使用Struts 2控製文件下載 330
4.4.1 實現文件下載的Action 330
4.4.2 配置Action 332
4.4.3 下載前的授權控製 332
4.5 詳解Struts 2的攔截器機製 334
4.5.1 攔截器在Struts 2中的作用 334
4.5.2 Struts 2內建的攔截器 334
4.5.3 配置攔截器 336
4.5.4 使用攔截器 338
4.5.5 配置默認攔截器 338
4.5.6 實現攔截器類 340
4.5.7 使用攔截器 342
4.5.8 攔截方法的攔截器 343
4.5.9 攔截器的執行順序 345
4.5.10 攔截結果的監聽器 347
4.5.11 覆蓋攔截器棧裏特定攔截器的參數 348
4.5.12 使用攔截器完成權限控製 349
4.6 使用Struts 2的Ajax支持 351
4.6.1 使用stream類型的Result實現Ajax 352
4.6.2 JSON的基本知識 354
4.6.3 實現Action邏輯 356
4.6.4 JSON插件與json類型的Result 357
4.6.5 實現JSP頁麵 359
4.7 本章小結 361
第5章 Hibernate的基本用法 362
5.1 ORM和Hibernate 363
5.1.1 對象/關係數據庫映射(ORM) 363
5.1.2 基本映射方式 364
5.1.3 流行的ORM框架簡介 365
5.1.4 Hibernate概述 366
5.2 Hibernate入門 366
5.2.1 Hibernate下載和安裝 366
5.2.2 Hibernate的數據庫操作 367
5.2.3 在Eclipse中使用Hibernate 371
5.3 Hibernate的體係結構 376
5.4 深入Hibernate的配置文件 377
5.4.1 創建Configuration對象 377
5.4.2 hibernate.properties文件與hibernate.cfg.xml文件 380
5.4.3 JDBC連接屬性 380
5.4.4 數據庫方言 381
5.4.5 JNDI數據源的連接屬性 382
5.4.6 Hibernate事務屬性 382
5.4.7 二級緩存相關屬性 383
5.4.8 外連接抓取屬性 383
5.4.9 其他常用的配置屬性 383
5.5 深入理解持久化對象 384
5.5.1 持久化類的要求 384
5.5.2 持久化對象的狀態 385
5.5.3 改變持久化對象狀態的方法 386
5.6 深入Hibernate的映射文件 389
5.6.1 映射文件結構 389
5.6.2 映射主鍵 392
5.6.3 映射普通屬性 393
5.6.4 映射集閤屬性 398
5.6.5 集閤屬性的性能分析 407
5.6.6 有序集閤映射 409
5.6.7 映射數據庫對象 411
5.7 映射組件屬性 414
5.7.1 組件屬性為集閤 416
5.7.2 集閤屬性的元素為組件 418
5.7.3 組件作為Map的索引 420
5.7.4 組件作為復閤主鍵 422
5.7.5 多列作為聯閤主鍵 425
5.8 使用JPA Annotation標注實體 426
5.8.1 增加JPA Annotation支持 426
5.8.2 Annotation?還是XML映射文件 429
5.9 本章小結 429
第6章 深入使用Hibernate 430
6.1 Hibernate的關聯映射 431
6.1.1 單嚮N-1關聯 431
6.1.2 單嚮1-1關聯 436
6.1.3 單嚮1-N關聯 439
6.1.4 單嚮N-N關聯 443
6.1.5 雙嚮1-N關聯 443
6.1.6 雙嚮N-N關聯 448
6.1.7 雙嚮1-1關聯 450
6.1.8 組件屬性包含的關聯實體 453
6.1.9 基於復閤主鍵的關聯關係 456
6.1.10 復閤主鍵的成員屬性為關聯實體 458
6.1.11 持久化的傳播性 461
6.2 繼承映射 462
6.2.1 采用subclass元素的繼承映射 466
6.2.2 采用joined-subclass元素的繼承映射 467
6.2.3 采用union-subclass元素的繼承映射 470
6.3 Hibernate的批量處理 472
6.3.1 批量插入 473
6.3.2 批量更新 474
6.3.3 DML風格的批量更新/刪除 474
6.4 使用HQL查詢 476
6.4.1 HQL查詢 476
6.4.2 HQL查詢的from子句 478
6.4.3 關聯和連接 478
6.4.4 HQL查詢的select子句 481
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 命名查詢 488
6.5 條件查詢 488
6.5.1 關聯和動態關聯 491
6.5.2 投影、聚閤和分組 492
6.5.3 離綫查詢和子查詢 495
6.6 SQL查詢 496
6.6.1 標量查詢 496
6.6.2 實體查詢 498
6.6.3 處理關聯和繼承 500
6.6.4 命名SQL查詢 501
6.6.5 調用存儲過程 502
6.6.6 使用定製SQL 503
6.7 數據過濾 505
6.8 事務控製 508
6.8.1 事務的概念 508
6.8.2 Session與事務 509
6.8.3 上下文相關的Session 511
6.9 二級緩存和查詢緩存 511
6.9.1 開啓二級緩存 512
6.9.2 管理緩存和統計緩存 515
6.9.3 使用查詢緩存 516
6.10 事件機製 518
6.10.1 攔截器 519
6.10.2 事件係統 521
6.11 本章小結 525
第7章 Spring的基本用法 526
7.1 Spring簡介和Spring 3.0的變化 527
7.1.1 Spring簡介 527
7.1.2 Spring 3.0的變化 528
7.2 Spring的下載和安裝 528
7.2.1 在Java SE應用中使用Spring 528
7.2.2 在Web應用中使用Spring 529
7.2.3 在Eclipse中開發Spring應用 530
7.3 Spring的核心機製:依賴注入 533
7.3.1 理解依賴注入 533
7.3.2 設值注入 534
7.3.3 構造注入 538
7.3.4 兩種注入方式的對比 539
7.4 使用Spring容器 539
7.4.1 Spring容器 540
7.4.2 使用ApplicationContext 541
7.4.3 ApplicationContext的國際化支持 542
7.4.4 ApplicationContext的事件機製 544
7.4.5 讓Bean獲取Spring容器 546
7.5 Spring容器中的Bean 548
7.5.1 Bean的基本定義 548
7.5.2 容器中Bean的作用域 551
7.5.3 配置依賴 553
7.5.4 設置普通屬性值 555
7.5.5 配置閤作者Bean 557
7.5.6 使用自動裝配注入閤作者Bean 557
7.5.7 注入嵌套Bean 560
7.5.8 注入集閤值 561
7.5.9 組閤屬性名稱 565
7.5.10 Spring的Bean和JavaBean 566
7.6 Spring 3.0提供的Java配置管理 567
7.7 Bean實例的創建方式及依賴配置 570
7.7.1 使用構造器創建Bean實例 570
7.7.2 使用靜態工廠方法創建Bean 572
7.7.3 調用實例工廠方法創建Bean 575
7.8 深入理解容器中的Bean 577
7.8.1 使用抽象Bean 577
7.8.2 使用子Bean 578
7.8.3 Bean繼承與Java繼承的區彆 579
7.8.4 容器中的工廠Bean 580
7.8.5 獲得Bean本身的id 582
7.8.6 強製初始化Bean 583
7.9 容器中Bean的生命周期 583
7.9.1 依賴關係注入之後的行為 584
7.9.2 Bean銷毀之前的行為 585
7.9.3 協調作用域不同步的Bean 588
7.10 深入理解依賴關係配置 591
7.10.1 注入其他Bean的屬性值 592
7.10.2 注入其他Bean的Field值 594
7.10.3 注入其他Bean的方法返迴值 595
7.11 基於XML Schema的簡化配置方式 598
7.11.1 使用p名稱空間配置屬性 599
7.11.2 使用util Schema 600
7.12 Spring 3.0提供的錶達式語言(SpEL) 602
7.12.1 使用Expression接口進行錶達式求值 603
7.12.2 Bean定義中的錶達式語言支持 604
7.12.3 SpEL語法詳述 606
7.13 本章小結 611
第8章 深入使用Spring 612
8.1 兩種後處理器 613
8.1.1 Bean後處理器 613
8.1.2 Bean後處理器的用處 617
8.1.3 容器後處理器 617
8.1.4 屬性占位符配置器 619
8.1.5 重寫占位符配置器 620
8.2 Spring的“零配置”支持 621
8.2.1 搜索Bean類 621
8.2.2 指定Bean的作用域 624
8.2.3 使用@Resource配置依賴 625
8.2.4 使用@PostConstruct和@PreDestroy定製生命周期行為 626
8.2.5 Spring 3.0新增的Annotation 626
8.2.6 自動裝配和精確裝配 627
8.3 資源訪問 629
8.3.1 Resource實現類 630
8.3.2 ResourceLoader接口和ResourceLoaderAware接口 635
8.3.3 使用Resource作為屬性 638
8.3.4 在ApplicationContext中使用資源 639
8.4 Spring的AOP 643
8.4.1 為什麼需要AOP 643
8.4.2 使用AspectJ實現AOP 644
8.4.3 AOP的基本概念 649
8.4.4 Spring的AOP支持 650
8.4.5 基於Annotation的“零配置”方式 651
8.4.6 基於XML配置文件的管理方式 666
8.5 Spring的事務 672
8.5.1 Spring支持的事務策略 673
8.5.2 使用TransactionProxyFactoryBean創建事務代理 678
8.5.3 Spring 2.X的事務配置策略 681
8.5.4 使用@Transactional 685
8.6 Spring整閤Struts 2 686
8.6.1 啓動Spring容器 686
8.6.2 MVC框架與Spring整閤的思考 688
8.6.3 讓Spring管理控製器 689
8.6.4 使用自動裝配 692
8.7 Spring整閤Hibernate 695
8.7.1 Spring提供的DAO支持 695
8.7.2 管理Hibernate的SessionFactory 696
8.7.3 使用HibernateTemplate 697
8.7.4 使用HibernateCallback 701
8.7.5 實現DAO組件 703
8.7.6 使用IoC容器組裝各種組件 705
8.7.7 使用聲明式事務 707
8.8 Spring整閤JPA 708
8.8.1 管理EntityManager 709
8.8.2 使用JpaTemplate 711
8.8.3 使用JpaCallback 713
8.8.4 藉助JpaDaoSupport實現DAO組件 714
8.8.5 使用聲明式事務 714
8.9 本章小結 715
第9章 企業應用開發的思考和策略 716
9.1 企業應用開發麵臨的挑戰 717
9.1.1 可擴展性、可伸縮性 717
9.1.2 快捷、可控的開發 718
9.1.3 穩定性、高效性 719
9.1.4 花費最小化,利益最大化 719
9.2 如何麵對挑戰 719
9.2.1 使用建模工具 719
9.2.2 利用優秀的框架 720
9.2.3 選擇性地擴展 722
9.2.4 使用代碼生成器 722
9.3 常見設計模式精講 722
9.3.1 單例模式 723
9.3.2 簡單工廠 724
9.3.3 工廠方法和抽象工廠 730
9.3.4 代理模式 733
9.3.5 命令模式 739
9.3.6 策略模式 741
9.3.7 門麵模式 743
9.3.8 橋接模式 746
9.3.9 觀察者模式 750
9.4 常見的架構設計策略 753
9.4.1 貧血模型 753
9.4.2 領域對象模型 756
9.4.3 閤並業務邏輯對象與DAO對象 758
9.4.4 閤並業務邏輯對象和Domain Object 759
9.4.5 拋棄業務邏輯層 761
9.5 本章小結 762
第10章 簡單工作流係統 763
10.1 項目背景及係統結構 764
10.1.1 應用背景 764
10.1.2 係統功能介紹 764
10.1.3 相關技術介紹 765
10.1.4 係統結構 766
10.1.5 係統的功能模塊 766
10.2 Hibernate持久層 767
10.2.1 設計持久化實體 767
10.2.2 創建持久化實體類 768
10.2.3 映射持久化實體 772
10.3 實現DAO層 777
10.3.1 DAO組件的定義 778
10.3.2 實現DAO組件 783
10.3.3 部署DAO層 787
10.4 實現Service層 789
10.4.1 業務邏輯組件的設計 789
10.4.2 實現業務邏輯組件 789
10.4.3 事務管理 795
10.4.4 部署業務邏輯組件 795
10.5 實現任務的自動調度 797
10.5.1 使用Quartz 797
10.5.2 在Spring中使用Quartz 802
10.6 實現係統Web層 804
10.6.1 Struts 2和Spring的整閤 804
10.6.2 控製器的處理順序 805
10.6.3 員工登錄 806
10.6.4 進入打卡 808
10.6.5 處理打卡 810
10.6.6 進入申請 811
10.6.7 提交申請 812
10.6.8 使用攔截器完成權限管理 814
10.7 本章小結 816
· · · · · · (
收起)