第Ⅰ部分 創建企業級應用程序
第1章 介紹Java EE平颱 3
1.1 Java平颱時間綫 3
1.1.1 起始 3
1.1.2 企業級Java的誕生 4
1.1.3 Java SE和Java EE共同發展 5
1.1.4 瞭解最新的平颱特性 7
1.1.5 持續發展 11
1.2 瞭解基本的Web應用程序結構 11
1.2.1 Servlet、過濾器、監聽器和JSP 11
1.2.2 目錄結構和WAR文件 12
1.2.3 部署描述符 13
1.2.4 類加載器架構 14
1.2.5 企業級應用程序歸檔文件 14
1.3 小結 15
第2章 使用Web容器 17
2.1 選擇Web容器 17
2.1.1 Apache Tomcat 18
2.1.2 GlassFish 19
2.1.3 JBoss和WildFly 19
2.1.4 其他容器和應用服務器 20
2.1.5 本書使用Tomcat的原因 20
2.2 在個人計算機中安裝Tomcat 21
2.2.1 將Tomcat安裝為Windows服務 21
2.2.2 將Tomcat安裝為命令行應用程序 21
2.2.3 配置自定義的JSP編譯器 23
2.3 在Tomcat中部署和卸載應用程序 24
2.3.1 手動部署和卸載 24
2.3.2 使用Tomcat管理器 25
2.4 通過IDE調試Tomcat 26
2.4.1 使用IntelliJ IDEA 27
2.4.2 使用Eclipse 30
2.5 小結 34
第3章 創建第一個Servlet 35
3.1 創建Servlet類 36
3.1.1 選擇要繼承的Servlet類 36
3.1.2 使用初始化方法和銷毀方法 38
3.2 配置可部署的Servlet 39
3.2.1 嚮描述符中添加Servlet 39
3.2.2 將Servlet映射到URL 40
3.2.3 運行和調試Servlet 42
3.3 瞭解doGet、doPost和其他方法 44
3.3.1 在service方法執行的過程中 44
3.3.2 使用HttpServletRequest 44
3.3.3 使用HttpServletResponse 47
3.4 使用參數和接受錶單提交 49
3.5 使用初始化參數配置應用程序 53
3.5.1 使用上下文初始化參數 53
3.5.2 使用Servlet初始化參數 54
3.6 通過錶單上傳文件 56
3.6.1 介紹客戶支持項目 56
3.6.2 配置Servlet支持文件上傳 56
3.6.3 接受文件上傳 59
3.7 編寫多綫程安全的應用程序 60
3.7.1 理解請求、綫程和方法執行 60
3.7.2 保護共享資源 61
3.8 小結 62
第4章 使用JSP顯示頁麵內容 63
4.1 使用
替代output.println("
") 64
4.1.1 使用JSP的原因 65
4.1.2 JSP在運行時的處理 66
4.2 創建第一個JSP 67
4.2.1 瞭解文件結構 67
4.2.2 指令、聲明、腳本和錶達式 69
4.2.3 注釋代碼 70
4.2.4 在JSP中導入類 71
4.2.5 使用指令 72
4.2.6 使用標簽 75
4.3 在JSP中使用Java(以及不鼓勵使用Java的原因) 76
4.3.1 使用JSP中隱式的變量 76
4.3.2 不應該在JSP中使用Java的原因 82
4.4 結閤使用Servlet和JSP 82
4.4.1 配置部署描述符中的JSP屬性 82
4.4.2 將Servlet中的請求轉發給JSP 85
4.5 關於JSP文檔(JSPX)的注意事項 89
4.6 小結 91
第5章 使用會話維持狀態 93
5.1 需要會話的原因 93
5.1.1 維持狀態 94
5.1.2 記住用戶 94
5.1.3 啓動應用程序工作流 94
5.2 使用會話cookie和URL重寫 95
5.2.1 瞭解會話cookie 96
5.2.2 URL中的會話ID 98
5.2.3 會話的漏洞 100
5.3 在會話中存儲數據 102
5.3.1 在部署描述符中配置會話 103
5.3.2 存儲和獲取數據 105
5.3.3 刪除數據 109
5.3.4 在會話中存儲更復雜的數據 111
5.4 使用會話 114
5.4.1 為客戶支持應用程序添加登錄功能 114
5.4.2 使用監聽器檢測會話的變化 118
5.4.3 維護活躍會話列錶 120
5.5 將使用會話的應用程序群集化 124
5.5.1 在群集中使用會話ID 124
5.5.2 瞭解會話復製和故障恢復 126
5.6 小結 127
第6章 在JSP中使用錶達式語言 129
6.1 瞭解錶達式語言 129
6.1.1 錶達式語言的用途 130
6.1.2 瞭解基本語法 130
6.1.3 添加EL錶達式 132
6.2 使用EL語法 133
6.2.1 保留關鍵字 133
6.2.2 操作符優先級 134
6.2.3 對象屬性和方法 139
6.2.4 EL函數 140
6.2.5 靜態字段和方法訪問 141
6.2.6 枚舉 142
6.2.7 lambda錶達式 142
6.2.8 集閤 143
6.3 在EL錶達式中使用作用域變量 144
6.3.1 使用隱式的EL作用域 145
6.3.2 使用隱式的EL變量 148
6.4 使用流API訪問集閤 151
6.4.1 瞭解中間操作 151
6.4.2 使用終結操作 153
6.4.3 使用流API 154
6.5 使用錶達式語言替換Java代碼 155
6.6 小結 157
第7章 使用Java標準標簽庫 159
7.1 JSP標簽和JSTL簡介 159
7.2 使用核心標簽庫(C命名空間) 163
7.2.1 163
7.2.2 164
7.2.3 165
7.2.4 、和 166
7.2.5 167
7.2.6 168
7.2.7 168
7.2.8 169
7.2.9 和 170
7.2.10 使用核心庫標簽 170
7.3 使用國際化和格式化標簽庫(FMT命名空間) 173
7.3.1 國際化和本地化組件 173
7.3.2 175
7.3.3 176
7.3.4 和 176
7.3.5 177
7.3.6 和 177
7.3.7 和 178
7.3.8 和 179
7.3.9 使用i18n和格式化庫標簽 180
7.4 使用數據庫訪問標簽庫(SQL命名空間) 182
7.5 使用XML處理標簽庫(X命名空間) 184
7.6 使用JSP標簽替換Java代碼 184
7.7 小結 186
第8章 編寫自定義標簽和函數庫 189
8.1 瞭解TLD、標簽文件和標簽處理器 189
8.1.1 讀取Java標準標簽庫TLD 190
8.1.2 比較JSP指令和標簽文件指令 196
8.2 創建標簽文件用作HTML模闆 198
8.3 創建日期格式化標簽處理器 199
8.4 創建EL函數簡寫字符串 203
8.5 使用自定義JSP標簽替換Java代碼 204
8.6 小結 210
第9章 使用過濾器改進應用程序 211
9.1 瞭解過濾器的目的 211
9.1.1 日誌過濾器 212
9.1.2 驗證過濾器 212
9.1.3 壓縮和加密過濾器 212
9.1.4 錯誤處理過濾器 212
9.2 創建、聲明和映射過濾器 213
9.2.1 瞭解過濾器鏈 213
9.2.2 映射到URL模式和Servlet名稱 213
9.2.3 映射到不同的請求派發器類型 214
9.2.4 使用部署描述符 214
9.2.5 使用注解 215
9.2.6 使用編程式配置 215
9.3 過濾器排序 216
9.3.1 URL模式映射和Servlet名稱映射 217
9.3.2 演示過濾器順序 218
9.3.3 使用過濾器處理異步請求 220
9.4 調查過濾器的實際用例 224
9.4.1 添加簡單的日誌過濾器 225
9.4.2 使用過濾器壓縮響應內容 226
9.5 使用過濾器簡化認證 230
9.6 小結 231
第10章 在應用程序中使用WebSocket進行交互 233
10.1 演變:從AJAX到WEBSOCKET 234
10.1.1 問題:從服務器獲得新數據到瀏覽器 234
10.1.2 解決方案1:頻繁輪詢 235
10.1.3 解決方案2:長輪詢 236
10.1.4 解決方案3:分塊編碼 237
10.1.5 解決方案4:Applet和Adobe Flash 238
10.1.6 WebSocket:一種無人知道但已經存在的解決方案 239
10.2 瞭解WebSocket API 242
10.2.1 HTML5(JavaScript)客戶端API 243
10.2.2 Java WebSocket API 245
10.3 使用WebSocket創建多人遊戲 247
10.3.1 實現基本的三連棋遊戲策略 247
10.3.2 創建服務器終端 248
10.3.3 編寫JavaScript遊戲控製颱 252
10.3.4 WebSocket三連棋遊戲試玩 256
10.4 在群集中使用WebSocket進行通信 257
10.4.1 使用兩個Servlet實例模擬簡單的群集 257
10.4.2 發送和接收二進製消息 259
10.4.3 測試模擬群集應用程序 261
10.5 在客戶支持應用程序中添加"支持與客戶聊天"功能 262
10.5.1 使用編碼器和解碼器轉換消息 262
10.5.2 創建聊天服務器終端 264
10.5.3 編寫JavaScript聊天應用程序 267
10.6 小結 269
第11章 使用日誌監控應用程序 271
11.1 瞭解日誌的概念 272
11.1.1 記錄日誌的原因 272
11.1.2 在日誌中記錄的內容 273
11.1.3 日誌的寫入方式 274
11.2 使用日誌級彆和分類 276
11.2.1 使用不同日誌級彆的原因 276
11.2.2 定義的日誌級彆 276
11.2.3 日誌分類的工作方式 277
11.2.4 篩選的工作方式 277
11.3 選擇日誌框架 277
11.3.1 API和實現 278
11.3.2 性能 278
11.3.3 Apache Commons Logging和SLF4J 279
11.3.4 Log4j 2簡介 280
11.4 在應用程序中集成日誌 283
11.4.1 創建Log4j 2配置文件 284
11.4.2 在Web過濾器中使用魚標簽 287
11.4.3 在Java代碼中編寫日誌語句 288
11.4.4 在JSP中使用日誌標簽庫 290
11.4.5 客戶支持應用程序中的日誌 290
11.5 小結 291
第Ⅱ部分 添加Spring Framework
第12章 介紹Spring Framework 295
12.1 Spring Framework簡介 296
12.1.1 反轉控製和依賴注入 296
12.1.2 麵嚮切麵編程 297
12.1.3 數據訪問和事務管理 297
12.1.4 應用程序消息 297
12.1.5 Web應用程序的模型-視圖-控製器模式 298
12.2 使用Spring Framework的原因 298
12.2.1 邏輯代碼分組 298
12.2.2 使用同一代碼庫的多個用戶界麵 298
12.3 瞭解應用上下文 299
12.4 啓動Spring Framework 300
12.4.1 使用部署描述符啓動Spring 301
12.4.2 在初始化器中使用編程的方式啓動Spring 303
12.5 配置Spring Framework 306
12.5.1 創建XML配置 308
12.5.2 創建混閤配置 310
12.5.3 使用@Configuration配置Spring 314
12.6 使用bean definition profile 318
12.6.1 瞭解profile的工作原理 319
12.6.2 考慮反模式和安全問題 321
12.7 小結 322
第13章 使用控製器替代Servlet 323
13.1 瞭解@RequestMapping 323
13.1.1 使用@RequestMapping特性
縮小請求匹配的範圍 324
13.1.2 指定控製器方法參數 328
13.1.3 為控製器方法選擇有效的返迴類型 335
13.2 使用Spring Framework的模型和視圖模式 337
13.2.1 使用顯式的視圖和視圖名稱 338
13.2.2 使用含有模型特性的隱式視圖 340
13.2.3 返迴響應實體 341
13.3 使用錶單對象簡化開發 346
13.3.1 在模型中添加錶單對象 347
13.3.2 使用Spring Framework 標簽 347
13.3.3 獲得被提交的錶單數據 349
13.4 更新客戶支持應用程序 350
13.4.1 啓用Multipart支持 350
13.4.2 將Servlet轉換成Spring MVC控製器 351
13.4.3 創建自定義下載視圖 352
13.5 小結 353
第14章 使用服務和倉庫支持控製器 355
14.1 瞭解模型-視圖-控製器模式與控製器-服務-倉庫模式 355
14.1.1 識彆程序邏輯的不同類型 356
14.1.2 使用倉庫提供持久化邏輯 357
14.1.3 使用服務提供業務邏輯 357
14.1.4 使用控製器提供用戶界麵邏輯 358
14.2 使用根應用上下文替代Web應用上下文 359
14.2.1 在多用戶界麵中重用根應用上下文 359
14.2.2 將業務邏輯從控製器移動到服務 360
14.2.3 使用倉庫存儲數據 364
14.3 使用異步和計劃執行改進服務 368
14.3.1 瞭解執行器和調度器 369
14.3.2 配置調度器和異步支持 369
14.3.3 創建和使用@Async方法 371
14.3.4 創建和使用@Scheduled方法 372
14.4 使用WebSocket實現邏輯層分離 373
14.4.1 在Spring應用上下文中添加由容器管理的對象 373
14.4.2 使用Spring WebSocket配置器 375
14.4.3 記住:WebSocket隻是業務邏輯的另一個界麵 376
14.5 小結 380
第15章 使用Spring Framework i18n國際化應用程序 381
15.1 使用Spring Framework i18n的原因 381
15.1.1 使國際化變得更容易 382
15.1.2 直接本地化錯誤消息 382
15.2 使用基本的國際化和本地化API 382
15.2.1 瞭解資源包和消息格式 383
15.2.2 使用消息源進行挽救 385
15.2.3 使用消息源國際化JSP 386
15.3 在Spring Framework中配置國際化 387
15.3.1 創建消息源 387
15.3.2 瞭解區域設置解析器 388
15.3.3 使用處理攔截器修改區域設置 390
15.3.4 提供一個用戶Profile區域設置 390
15.3.5 包含時區支持 391
15.3.6 瞭解主題如何改進國際化 392
15.4 國際化代碼 392
15.4.1 使用標簽 393
15.4.2 以更乾淨的方式處理應用程序錯誤 395
15.4.3 更新客戶支持應用程序 398
15.4.4 直接使用消息源 399
15.5 小結 402
第16章 使用JSR 349、Spring Framework和Hibernate Validator執行Bean驗證 403
16.1 Bean驗證的概念 404
16.1.1 使用Hibernate Validator的原因 405
16.1.2 瞭解注解元數據模型 406
16.1.3 使用Spring Framework實現Bean驗證 406
16.2 在Spring Framework容器中配置驗證 406
16.2.1 配置Spring驗證Bean 407
16.2.2 創建錯誤代碼本地化 409
16.2.3 使用方法驗證Bean後處理器 410
16.2.4 在Spring MVC中使用相同的驗證Bean 411
16.3 在Bean中添加約束驗證注解 411
16.3.1 瞭解內建的約束注解 411
16.3.2 瞭解常見的約束特性 412
16.3.3 使用約束 413
16.3.4 使用@Valid實現遞歸驗證 415
16.3.5 使用驗證組 416
16.3.6 在編譯時檢查約束閤法性 417
16.4 為方法驗證配置Spring Bean 418
16.4.1 標注接口,而非實現 418
16.4.2 在方法參數上使用限製和遞歸驗證 419
16.4.3 驗證方法返迴值 420
16.4.4 錶示一個類是否適用於方法驗證 420
16.4.5 在Spring MVC控製器中使用參數驗證 421
16.4.6 為用戶顯示驗證錯誤 423
16.5 編寫自己的驗證約束 425
16.5.1 在自定義限製中繼承其他限製 425
16.5.2 創建限製驗證器 426
16.5.3 瞭解限製驗證器的生命周期 428
16.6 在客戶支持應用程序中集成驗證 429
16.7 小結 431
第17章 創建RESTful和SOAP Web服務 433
17.1 瞭解Web服務 433
17.1.1 最初的SOAP 434
17.1.2 RESTful Web服務提供瞭一種更簡單的方式 435
17.2 在Spring MVC中配置RESTful Web服務 442
17.2.1 使用原型注解分離控製器 442
17.2.2 創建單獨的Web和REST應用上下文 443
17.2.3 處理RESTful Web服務中的錯誤條件 446
17.2.4 將RESTful請求映射到控製器方法 449
17.2.5 使用索引終端改進發現機製 453
17.3 測試Web服務終端 454
17.3.1 選擇測試工具 454
17.3.2 請求Web服務 455
17.4 使用Spring Web Service創建SOAP Web服務 457
17.4.1 編寫契約優先的XSD和WSDL 458
17.4.2 添加SOAP派發器Servlet配置 460
17.4.3 創建SOAP終端 462
17.5 小結 465
第18章 使用消息傳送和群集實現靈活性和可靠性 467
18.1 識彆需要消息傳送和群集的時機 467
18.1.1 應用程序消息傳送的定義 468
18.1.2 群集的定義 470
18.1.3 消息傳送和群集的協作方式 474
18.2 為應用程序添加消息傳送支持 477
18.2.1 創建應用程序事件 477
18.2.2 訂閱應用程序事件 478
18.2.3 發布應用程序事件 479
18.3 在群集中分布消息傳送 481
18.3.1 更新事件以支持分布 482
18.3.2 創建並配置一個自定義事件多播器 483
18.3.3 使用WebSocket發送和接收事件 485
18.3.4 通過多播數據包發現節點 487
18.3.5 部署多個應用程序模擬群集 489
18.4 使用AMQP分布事件 490
18.4.1 配置AMQP代理 491
18.4.2 創建AMQP多播器 492
18.4.3 運行使用瞭AMQP的應用程序 494
18.5 小結 495
第Ⅲ部分 使用JPA和Hibernate ORM持久化數據
第19章 介紹Java Persistence API和 Hibernate ORM 499
19.1 數據持久化的定義 499
19.1.1 平麵文件實體存儲 500
19.1.2 結構化文件存儲 500
19.1.3 關係數據庫係統 501
19.1.4 麵嚮對象數據庫 501
19.1.5 無模式數據庫係統 502
19.2 對象-關係映射的定義 502
19.2.1 瞭解持久化實體的問題 503
19.2.2 O/RM使實體持久化更簡單 504
19.2.3 JPA提供瞭一種標準O/RM API 505
19.3 使用Hibernate ORM的原因 507
19.4 Hibernate ORM簡介 507
19.4.1 使用Hibernate映射文件 507
19.4.2 瞭解會話API 509
19.4.3 從SessionFactory中獲得會話 511
19.4.4 使用Spring Framework創建SessionFactory 512
19.5 準備關係數據庫 513
19.5.1 安裝MySQL和
MySQL Workbench 513
19.5.2 安裝MySQL JDBC驅動 515
19.5.3 在Tomcat中創建連接資源 516
19.5.4 注意Maven依賴 517
19.6 小結 517
第20章 使用JPA注解將實體映射到錶 519
20.1 使用簡單實體 520
20.1.1 創建實體並將它映射到錶 521
20.1.2 指示JPA使用實體字段的
方式 523
20.1.3 映射代理鍵 523
20.1.4 使用基本數據類型 529
20.1.5 指定列名和其他細節 532
20.2 創建和使用持久化單元 534
20.2.1 設計數據庫錶 534
20.2.2 瞭解持久化單元作用域 536
20.2.3 創建持久化配置 536
20.2.4 使用持久化API 539
20.3 映射復雜數據類型 543
20.3.1 使用枚舉作為實體屬性 543
20.3.2 瞭解JPA如何處理日期和時間 544
20.3.3 將大屬性映射為CLOB和BLOB 546
20.4 小結 548
第21章 在Spring Framework倉庫中使用JPA 549
21.1 使用Spring倉庫和事務 550
21.1.1 瞭解事務範圍 550
21.1.2 為事務和實體管理器使用綫程 551
21.1.3 使用異常轉換 552
21.2 在Spring Framework中配置持久化 553
21.2.1 查找數據源 553
21.2.2 在代碼中創建持久化單元 554
21.2.3 創建事務管理 557
21.3 創建和使用JPA倉庫 560
21.3.1 注入持久化單元 560
21.3.2 實現標準CRUD操作 561
21.3.3 為所有的實體創建一個基礎倉庫 563
21.3.4 在服務中標記事務範圍 568
21.3.5 使用事務服務方法 572
21.4 在DTO和實體之間轉換數據 573
21.4.1 為客戶支持應用程序創建實體 574
21.4.2 使用BCrypt保護用戶密碼 578
21.4.3 在服務中將數據傳輸到實體中 579
21.5 小結 581
第22章 使用Spring Data JPA消除公式化的倉庫 583
22.1 瞭解Spring Data的統一數據訪問 584
22.1.1 避免代碼重復 584
22.1.2 使用Stock倉庫接口 587
22.1.3 為搜索實體創建查詢方法 588
22.1.4 提供自定義方法實現 591
22.2 配置和創建Spring Data JPA倉庫 594
22.2.1 啓用倉庫自動生成 595
22.2.2 編寫和使用Spring Data
JPA接口 601
22.3 重構客戶支持應用程序 603
22.3.1 轉換現有倉庫 603
22.3.2 在支持票據中添加評論 605
22.4 小結 609
第23章 使用JPA和Hibernate Search搜索數據 611
23.1 搜索介紹 612
23.1.1 瞭解索引的重要性 612
23.1.2 采取三種不同的方式 613
23.2 使用高級條件定位對象 614
23.2.1 創建復雜條件查詢 614
23.2.2 在查詢中使用OR 621
23.2.3 創建有用的索引改進性能 622
23.3 使用JPA的全文索引 623
23.3.1 在MySQL錶中創建全文索引 624
23.3.2 創建和使用可搜索的倉庫 625
23.3.3 使全文搜索可遷移 630
23.4 使用Apache Lucene和Hibernate Search索引任意數據 630
23.4.1 瞭解Lucene全文索引 631
23.4.2 使用索引元數據標注實體 632
23.4.3 結閤使用Hibernate Search和JPA 634
23.5 小結 637
第24章 創建高級映射和自定義數據類型 639
24.1 JPA的相關內容 639
24.2 轉換非標準數據類型 640
24.2.1 瞭解特性轉換器 641
24.2.2 瞭解轉換注解 642
24.2.3 創建和使用特性轉換器 643
24.3 在實體中內嵌POJO 645
24.3.1 錶示嵌套的類型 645
24.3.2 使屬性成為可嵌入屬性 645
24.3.3 覆蓋可內嵌列列名 647
24.4 定義實體間的關係 648
24.4.1 瞭解一對一關係 648
24.4.2 使用一對多和多對一關係 650
24.4.3 創建多對多關係 653
24.5 處理其他常見的情況 654
24.5.1 使用修訂和時間戳版本化實體 654
24.5.2 定義公共屬性的抽象實體 655
24.5.3 映射基本的和內嵌的集閤 656
24.5.4 持久化含有鍵值對的Map 659
24.5.5 在多個錶中存儲實體 660
24.6 創建編程式觸發器 661
24.6.1 在CRUD操作之前或之後執行 661
24.6.2 使用實體監聽器 663
24.7 簡化客戶支持應用程序 664
24.7.1 映射附件的集閤 664
24.7.2 使用加載時織入延遲加載簡單屬性 666
24.8 小結 669
第Ⅳ部分 使用Spring Security保護應用程序
第25章 介紹Spring Security 673
25.1 認證的概念 673
25.1.1 集成認證 674
25.1.2 瞭解授權 682
25.2 選擇Spring Security的原因 685
25.2.1 瞭解Spring Security基礎 686
25.2.2 使用Spring Security的授權服務 686
25.2.3 配置Spring Security 687
25.3 小結 687
第26章 使用Spring Security驗證用戶 689
26.1 選擇並配置認證提供者 690
26.1.1 配置用戶細節提供者 690
26.1.2 使用LDAP和活動目錄提供者 700
26.1.3 使用OpenID進行認證 703
26.1.4 remember-me認證 705
26.1.5 學習其他認證提供者 706
26.2 編寫自己的認證提供者 707
26.2.1 以正確的順序啓動 707
26.2.2 創建和配置提供者 710
26.2.3 緩解跨站請求僞裝攻擊 715
26.3 小結 718
第27章 使用授權標簽和注解 719
27.1 通過聲明進行授權 719
27.1.1 在方法代碼中檢查權限 720
27.1.2 采用URL安全 722
27.1.3 使用注解聲明權限 725
27.1.4 定義方法切點規則 732
27.2 瞭解授權決策 733
27.2.1 使用訪問決策投票者 733
27.2.2 使用訪問決策管理器 734
27.3 為對象安全創建訪問控製列錶 736
27.3.1 瞭解Spring Security的
ACL 736
27.3.2 配置訪問控製列錶 738
27.3.3 為實體填充ACL 740
27.4 在客戶支持應用程序中添加授權 741
27.4.1 切換到自定義用戶細節 742
27.4.2 保護服務方法 746
27.4.3 使用Spring Security的標簽庫 750
27.5 小結 751
第28章 使用OAuth保護RESTful Web服務 753
28.1 瞭解Web服務安全 754
28.1.1 比較Web GUI和Web服務安全 754
28.1.2 選擇認證機製 754
28.2 介紹OAuth 756
28.2.1 瞭解關鍵參與者 756
28.2.2 起始:OAuth 1.0 757
28.2.3 標準:OAuth 1.0a 757
28.2.4 演化:OAuth 2.0 762
28.3 使用Spring Security OAuth 769
28.3.1 創建OAuth 2.0提供者 769
28.3.2 創建OAuth 2.0客戶端 773
28.4 完成客戶端支持應用程序 775
28.4.1 生成請求隨機數和簽名 776
28.4.2 實現客戶端服務 777
28.4.3 實現隨機數服務 780
28.4.4 實現令牌服務 782
28.4.5 自定義資源服務器過濾器 785
28.4.6 重新配置Spring Security 787
28.5 創建OAuth客戶端應用程序 791
28.5.1 自定義REST模闆 792
28.5.2 配置Spring Security OAuth客戶端 793
28.5.3 使用REST模闆 795
28.5.4 同時測試提供者和客戶端 796
28.6 小結 797
· · · · · · (
收起)