深入解析SpringMVC與WebFlow

深入解析SpringMVC與WebFlow

本書是Spring MVC 和Web Flow 兩個框架的權威指南,書中包括的技巧和提示可以讓你從這個靈活的框架中汲取儘可能多的信息。書中包含了一些開發良好設計和解耦的Web 應用程式的最佳實踐,介紹了Spring 框架中的Spring MVC 和Spring Web Flow,以及著重介紹利用Spring 框架和Spring MVC 編寫Web 應用程式的最佳方法。本書還介紹了Spring 框架的設計模式,以及如何將同樣的設計和技術套用到讀者自己的代碼中。本書適合各層次Spring Web 程式設計師閱讀。

基本信息

目錄

深入解析SpringMVC與WebFlow

第1章 概述 1

1.1 閱讀順序 2

1.2 本書縱覽 2

1.3 導引 2

1.4 讀者對象 3

1.5 進一步的資源 4

1.6 升級到Spring的新版本 5

1.7 本章小結 6

第2章spring框架7

2.1 控制反轉 7

2.1.1 控制反轉實例 7

2.1.2 小結 10

2.2 依賴注入 10

2.2.1 Service Locator模式 12

2.2.2 依賴注入 13

2.3 Spring的ApplicationContext15

2.4 POJO歸來 16

2.5 對Web應用程式的影響 17

2.6 本章小結 17

第3章 Spring MVC應用程式架構 18

3.1 抽象層 18

3.1.1 層隔離 19

3.1.2java接口作為層的約定 20

3.1.3 Spring MVC應用程式中的層 21

3.2 選擇:條條大路通羅馬 32

3.3 本章小結 33

第4章 Spring MVC初體驗 34

4.1 用例 34

4.1.1 服務接口 34

4.1.2 用例1 35

4.1.3 用例2 37

4.1.4 小結 42

4.2 Web組件 42

4.2.1 JAR依賴 42

4.2.2 Controller類 43

4.2.3 View類 44

4.2.4 ModelAndView類 44

4.3 構建主頁用例 44

4.3.1 Spring MVC 組件 44

4.3.2 Web應用程式配置 49

4.3.3 啟動應用程式 52

4.3.4 請求處理順序 53

4.3.5 小結 54

4.4 構建航班搜尋用例 55

4.4.1 SimpleFormController 55

4.4.2 SearchFlightsController 56

4.4.3 表單視圖 59

4.4.4 Spring JSP標籤 61

4.4.5 成功視圖 62

4.4.6 小結 63

4.5 整裝待發 64

第5章 處理管道 65

5.1 處理請求 65

5.1.1 請求工作流 65

5.1.2 功能概覽 65

5.1.3 處理請求的各組件 67

5.2 本章小結 97

第6章 深入解析Controller 98

6.1 概述 98

6.2 Controller接口和實現 99

6.2.1 設計初探 99

6.2.2 AbstractController 100

6.2.3 BaseCommandController 104

6.2.4 綁定表單到bean 105

6.2.5 SimpleFormController和處理表單 128

6.2.6redirectAfter Submit模式 142

6.2.7 MultiActionController 145

6.2.8 AbstractWizardFormController 153

6.2.9 ThrowawayController 168

6.2.10 ValidatableThrowaway-Controller 170

6.3 HandlerInterceptor 171

6.3.1 HandlerInterceptor示例 172

6.3.2 小結 173

6.4 本章小結 173

第7章 視圖層 175

7.1 視圖中包含什麼 175

7.2 Spring的視圖接口 176

7.2.1 實現視圖 177

7.2.2 View和Controller:愉快的分離 180

7.3 ViewResolver 181

7.3.1 在上下文中解析視圖 182

7.3.2 ViewResolver的類型 183

7.3.3 使Dispatcher知道ViewResolver 186

7.4 重定向簡述 187

7.5 主題 188

7.5.1 ThemeSource 189

7.5.2 ThemeResolver 190

7.6 視圖層的國際化 190

7.6.1 區域解析 191

7.6.2 MessageSource Bean 191

7.6.3 視圖解析 192

7.6.4 主題解析 192

7.7 綁定支持 193

7.7.1 綁定和驗證順序的概述 193

7.7.2 視圖模板的綁定支持 193

7.8 本章小結 193

第8章 受支持的視圖類型 194

8.1 JSP和JSTL 194

8.1.1 模型暴露為請求屬性 195

8.1.2 展示模型 196

8.1.3 JSP標籤庫 197

8.1.4 表單 198

8.2 Tiles 202

8.3 Velocity和freemarker204

8.3.1 模板的優點和缺點 205

8.3.2 模板引擎的基本配置 205

8.3.3 暴露模型 206

8.3.4 模板語言 207

8.3.5 高級配置選項 208

8.3.6 表單和SpringBind宏 209

8.3.7 數字和日期工具 215

8.3.8 附加的Velocity視圖 216

8.3.9 小結 216

8.4 XML和XSLT 217

8.4.1 定義XSLT視圖 217

8.4.2 轉化XML原始碼 219

8.4.3 返回原始狀態的XML 220

8.4.4 XSLT的其他顯著功能 221

8.4.5 小結 222

8.5 PDF 222

8.5.1 配置應用程式以使用PDF視圖 223

8.5.2 用FOP創建模板PDF 224

8.6 Excel 224

8.6.1 創建模板 224

8.6.2 編程 225

8.6.3 配置應用程式 225

8.7JasperReports226

8.7.1 多種形式的視圖 227

8.7.2 填充報表 228

8.7.3 小結 229

8.8 創建新視圖 229

8.9 本章小結 229

第9章 驗證 230

9.1 編程式Validator 230

9.2 聲明式Validator 231

9.3訊息源241

9.4 Validator和業務邏輯 242

9.5 Errors接口 243

9.6 測試驗證器 244

9.7 本章小結 245

第10章 測試Spring MVC應用程式 246

10.1 概覽 246

10.1.1 單元測試 246

10.1.2 單元測試小結 262

10.1.3 集成測試 263

10.2 測試小結 267

第11章Spring Web Flow入門 268

11.1 Spring Web Flow的動機 268

11.1.1 servlet規範的問題 268

11.1.2 解決方案 270

11.2 不是萬能鑰匙 272

11.3 總覽 272

11.3.1 架構概覽 272

11.3.2 Spring Web Flow系統內部 273

11.3.3 不同的作用域 273

11.3.4 組成 274

11.4 第一個流 276

11.4.1 安裝Spring Web Flow 276

11.4.2 提出流目錄結構 276

11.4.3 Purchase Product流定義 277

11.4.4 實現第一步:視圖狀態277

11.4.5 過渡 277

11.4.6 動作 278

11.4.7 Action bean定義 279

11.4.8 測試流執行 280

11.4.9 擴展AbstractFlowExecution-Tests 281

11.4.10 決定狀態 282

11.4.11 動作狀態 283

11.4.12 結束狀態 284

11.4.13 Purchase Product流:接下來做什麼 285

11.4.14 Spring MVC部署 285

11.4.15 FlowController 286

11.4.16 FlowRegistry 286

11.4.17 附加配置 286

11.4.18 視圖模板解析 287

11.4.19 視圖模板要求 287

11.4.20 從瀏覽器中啟動流 288

11.5 本章小結 288

11.5.1 模型對話 289

11.5.2 允許擴展 289

11.5.3 可測試 289

11.5.4 鑑別流(簡單而自然的語言) 289

第12章 高級Spring Web Flow 290

12.1 業務邏輯和流 290

12.2 流粒度 291

12.2.1 子流 291

12.2.2 內嵌流 297

12.2.3 小結 299

12.3 管理FlowExecutions 299

12.3.1 與Web框架集成 299

12.3.2 FlowExecutionManager 301

12.3.3 FlowExecution 301

12.3.4 FlowExecutionListener 304

12.4 FlowExecution倉庫 306

12.4.1 延續鍵 306

12.4.2 FlowExecutionRepository實現 308

12.4.3 有狀態FlowExecution倉庫 309

12.4.4 無狀態FlowExecution倉庫 309

12.4.5 完成後對話失效 310

12.5 再次訪問的狀態和過渡 310

12.5.1 動作狀態 311

12.5.2 POJO動作 313

12.5.3 暴露POJO方法返回值 314

12.5.4 使用視圖狀態和結束狀態定製視圖選擇 314

12.5.5 決定狀態 316

12.6 異常處理 317

12.7 異常處理小結 319

12.8 本章小結 320

附錄A MVC應用程式的文檔 321

A.1 BeanDoc 321

A.1.1 安裝和構建BeanDoc 321

A.1.2 在配置檔案上運行BeanDoc 322

A.1.3 其他選項 323

A.1.4 控制輸出 324

A.2 小結 324

附錄B Ajax和DWR 325

B.1 Spring和DWR 325

B.2 套用的示例 326

B.2.1 配置和代碼改變 326

B.2.2 介紹檔案改變 328

B.3 無障礙 333

前言

Spring MVC和Spring Web Flow是Spring的開發人員和社區為我們帶來的兩個非常靈活和強大的兩個Web框架。Spring MVC是一個構建於Spring Framework之上的現代Web應用程式框架;而Spring Web Flow則是一個現在已經獨立於Spring Framework之外、用於配合Spring MVC的新項目,主要用於構建可重用的封裝了豐富的頁面導航規則的Web控制器模組。本書深入探討了這兩個框架。除了詳細分析代碼及其功能之外,我們還穿插了與這兩個框架以及一般意義上的Web開發相關的大量技巧。

我們寫作本書的目的是告訴讀者如何最大程度地發揮出這兩個框架的潛力。在本書的幫助下,你可以更清楚地研究原始碼,加深對框架的理解,開發出高質量的應用程式。

我們在開發Spring MVC和Spring Web Flow時充分運用了設計模式和許多面向對象的專家技術。本書不僅將解釋我們設計這兩個框架時的許多設計決策是如何做出的,而且還會告訴讀者如何在自己的項目中套用類似的設計思路和技巧。

我們花費了不少心血,力圖講清楚Spring MVC和Spring Web Flow兩個框架的每個細節,給讀者建立大局觀。除了它們最著名的特性之外,我們還講述了許多不為人知的技術亮點。但是我們深知,框架不可能解決所有問題,所以還詳細探討了如何正確和安全地擴展框架,得到靈活、更符合客戶需求的解決方案。

無論你是初學者,還是專家,通過本書,你可以更加自信地投入到Spring Web套用的開發中去。

致謝

一本書僅靠作者是不可能完成的,它是很多人的專業知識、辛勤勞動、寶貴時間和超常努力的成果。本書應歸功於參與其事的每個人。

首先我要感謝我的妻子,一個擁有天使般耐心的人。她的愛和支持陪伴我寫作的始終。

我也要感謝我的合著者,因為他們貢獻了獨特而無價的知識和洞察力,從而產生了比我單獨創作更出色的著作。感謝Darren、Steven、Keith和Colin!

如果沒有Apress出版社編輯們的才幹和專業知識,這本書不可能面世。具體地說,我衷心感謝Sofia Marchant和Beckie Brand協調各部門,並盡最大努力確保本書做到最好。我要特別感謝Stephanie Provines,沒有她的幫助,我們將很難完成Spring MVC的相關內容。她對細節的關注令人印象深刻,而且極具價值。我也要特別感謝Steve Anglin給了我這個機會。對於未提及的其他所有人,我永遠感謝你們。

我很高興由Rob Harrop 來做本書的技術審稿人。他的建議總是準確有用而且專業。謝謝你,Rob,我很榮幸有你作為這個團隊的一份子。

謝謝Erwin Vervaet、Dan Leuck和Colin Sampaleanu在審閱本書時提出的專業建議。謝謝Kathleen Fitzgerald的拍攝。最後,謝謝Spring框架的開發者和社區,從他們那裡我學到了極其多的關於軟體開發的知識。

相關詞條

相關搜尋

熱門詞條

聯絡我們