-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

輕量級Java Web企業應用實戰——Spring MVC+Spring+MyBatis整合開發

( 簡體 字)
作者:李剛類別:1. -> 程式設計 -> 網路編程 -> JSP
譯者:
出版社:電子工業出版社輕量級Java Web企業應用實戰——Spring MVC+Spring+MyBatis整合開發 3dWoo書號: 52489
詢問書籍請說出此書號!

缺書
NT售價: 695

出版日:3/1/2020
頁數:724
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121385001
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

經過多年沉淀,Java EE平臺已經成為電信、金融、電子商務、保險、證券等各行業的大型應用系統的首選開發平臺。在企業級應用的開發選擇上,.NET已趨式微,PHP通常只用于開發一些企業展示站點或小型應用,因此這些開發語言、開發平臺基本上已無法與Java EE進行對抗了。
目前輕量級Java EE企業開發平臺中最核心的框架是Spring,而MVC框架大致存在兩個選擇:Spring MVC或Struts 2。由于技術方面的原因,Struts 2也漸趨沒落;持久層框架則可選擇JPA/Hibernate、MyBatis或Spring Data。
一般來說,JPA/Hibernate屬于全自動的ORM框架,使用它可以非常方便地操作底層數據庫,開發者無須直接編寫SQL語句;而MyBatis則屬于半自動的SQL Mapping框架,它依然要求開發者自己編寫SQL語句。MyBatis的主要功能就是幫助開發者執行SQL語句,并將SQL查詢結果映射成Java對象。
由此可見,MyBatis有它自己的優勢:上手門檻低。即使是初級的Java開發者,上手MyBatis也很簡單——直接把MyBatis當成單表數據庫操作工具來用即可(在實際開發中確實有一些項目就是這么干的);而高級開發者依然可以利用MyBatis的關聯映射和繼承映射,而且可以靈活地對SQL語句進行優化,從而提高應用的數據庫訪問性能。
本書介紹的主要內容就是Spring MVC、Spring和MyBatis這三個框架,其中Spring是核心框架,Spring MVC是目前流行的MVC框架,MyBatis則作為應用的持久層框架。
雖然初級開發者可以把MyBatis當成單表數據庫操作工具來用,但這樣的開發者顯然并沒有真正掌握MyBatis的精髓,本書則會帶領讀者掌握真正的MyBatis。本書不僅詳細介紹了MyBatis框架的基本用法,而且詳細講解了MyBatis復雜的關聯映射、繼承映射,還詳細介紹了MyBatis的一級緩存、二級緩存的功能與用法,深入分析了這些緩存技術的優點和缺點,并對緩存技術的缺點提出了解決方法。
本書在講解這些框架時不僅深入介紹了各自的功能與用法,而且直接對這些框架關鍵部分的源代碼進行了解讀,閱讀框架源代碼既能幫助讀者真正掌握框架的本質,也能讓讀者參考優秀框架的源代碼快速提高技術功底。
比如書中介紹VendorDatabaseIdProvider的實現時,直接通過以下源代碼進行講解:

再比如講解MyBatis的插件實現機制時,本書深入到底層InterceptorChain類的源代碼層次進行解讀。在書中可以看到如下內容:

本書對框架的源代碼進行解讀并不是直接貼出框架中某個類的源代碼,相信這樣做的意義并不大——因為找到并打開這些開源框架的源代碼并不難。本書要做的是:帶著讀者找到各功能實現所對應的方法以及方法之間的調用關系,對方法實現的代碼進行講解,并分析框架在這些方法上的設計理念。
通過學習本書介紹的這種解讀源代碼的方法,相信可以消除讀者對閱讀框架源代碼的恐懼心理,讓讀者在遇到技術問題時能冷靜分析問題,從框架源代碼層次找到問題根源,從而真正提高自己的技術實力,盡快擺脫遇到技術問題就“面向百度編程”的入門層次。
本書有什么特點
本書不是一份“X天精通Java EE開發”的“心靈雞湯”,本書依然是一本令人生畏的“磚頭”書。如果你只想找一本讓你輕松、好過的圖書,請放過這本書,它不適合你。
只有當你真的想掌握Spring MVC、Spring、MyBatis,甚至希望學習這三個框架關鍵部分的源代碼實現時,才應該考慮選擇這本書。真正掌握本書內容的讀者,不僅可以學會Spring MVC、Spring、MyBatis的用法及整合開發,還能掌握這三個框架核心部分的源代碼實現。
總之,這不是一本“從簡單出發”的技術圖書,而是一本真正面向技術本身、全面深入編程的圖書。雖然本書在講解上力求簡單,并且為代碼添加了豐富的注釋,并用粗體字標出了程序中的關鍵代碼,但請記住:本書內容并不簡單,閱讀本書需要讀者具有較強的毅力。總結起來,本書具有以下三個典型特征。
1. 內容實際,針對性強
本書介紹的Java EE應用示例,采用了目前企業流行的開發架構,嚴格遵守Java EE開發規范,而不是將各種技術雜亂地糅合在一起號稱Java EE。讀者參考本書的架構,完全可以身臨其境地感受企業實際開發。
2.框架源代碼級的講解,深入透徹
本書針對Spring MVC、Spring、MyBatis框架核心部分的源代碼進行了講解,不僅能幫助讀者真正掌握框架的本質,而且能讓讀者參考優秀框架的源代碼快速提高自己的技術功底。
本書介紹的源代碼解讀方法還可消除開發者對閱讀框架源代碼的恐懼,讓開發者在遇到技術問題時能冷靜分析問題,從框架源代碼層次找到問題根源。
3.豐富、翔實的代碼,面向實戰
本書是面向實戰的技術圖書,堅信所有知識點必須轉換成代碼才能最終變成有效的生產力,因此本書為所有知識點提供了對應的可執行的示例代碼。代碼不僅有細致的注釋,還結合理論對示例進行了詳細的解釋,真正讓讀者做到學以致用。
本書寫給誰看
如果你已經掌握了Java SE內容,或者已經學完了《瘋狂Java講義》一書,那么你非常適合閱讀此書。此外,如果你已有初步的JSP、Servlet基礎,甚至對Spring MVC、Spring、MyBatis有所了解,但希望掌握它們在實際開發中的應用,或者深入掌握它們的原理、本質,本書也非常適合你。如果你對Java的掌握還不熟練,則建議遵從學習規律,循序漸進,暫時不要購買、閱讀此書,而是按照“瘋狂Java學習路線圖”中的建議順序學習。
內容簡介:

本書介紹了Java EE開發非常流行的三個開源框架:Spring MVC、Spring和MyBatis,其中Spring MVC、Spring用的是5.1版本,MyBatis用的是3.5版本。本書重點介紹了如何整合Spring MVC + Spring + MyBatis進行開發,內容主要包括三部分。第一部分介紹Java EE開發的基礎知識,以及如何搭建開發環境。第二部分詳細講解MyBatis、Spring和Spring MVC三個框架的用法,并從Eclipse IDE的使用上手,一步步帶領讀者深入三個框架的核心。這部分是本書的核心內容,因此也是重點部分。這部分并不是簡單地講授三個框架的基本用法,而是真正剖析它們在實際開發場景中面臨的挑戰及最佳實踐,并對其諸多關鍵技術實現提供了源代碼解讀,這樣既能加深讀者對框架本質的理解,也能直接提升讀者的Java功底。第三部分示范開發了一個包含7個表,表之間具有復雜的關聯映射、繼承映射等關系,且業務也相對復雜的工作流案例,幫助讀者理論聯系實際,將三個框架真正運用到實際開發中。該案例采用目前非常流行、規范的Java EE架構,整個應用分為領域對象層、Mapper(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 4.x和JavaBean及替代技術 5
1.2.2 Spring MVC及替代技術 6
1.2.3 MyBatis及替代技術 6
1.2.4 Spring及替代技術 7
1.3 Tomcat的下載和安裝 8
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插件 18
1.4.5 使用Eclipse開發Java Web應用 18
1.4.6 導入Eclipse項目 21
1.4.7 導入非Eclipse項目 22
1.5 Ant的安裝和使用 23
1.5.1 Ant的下載和安裝 24
1.5.2 使用Ant工具 25
1.5.3 定義生成文件 26
1.5.4 Ant的任務(task) 30
1.6 Maven的安裝和使用 32
1.6.1 下載和安裝Maven 33
1.6.2 設置Maven 34
1.6.3 創建、構建簡單的項目 35
1.6.4 Maven的核心概念 39
1.6.5 依賴管理 44
1.6.6 POM文件的元素 46
1.7 使用Git進行軟件配置管理(SCM) 47
1.7.1 下載和安裝Git、TortoiseGit 47
1.7.2 創建本地資源庫 49
1.7.3 添加文件和文件夾 51
1.7.4 提交修改 52
1.7.5 查看文件或文件夾的版本變更 53
1.7.6 刪除文件或文件夾 54
1.7.7 從以前版本重新開始 55
1.7.8 克隆項目 56
1.7.9 創建分支 56
1.7.10 沿著分支開發 57
1.7.11 合并分支 58
1.7.12 使用Eclipse作為Git客戶端 59
1.7.13 配置遠程中央資源庫 61
1.7.14 推送項目 64
1.7.15 獲取項目和拉取項目 64
1.8 本章小結 66

第2章 MyBatis的基礎用法 67
2.1 MyBatis是ORM框架嗎 68
2.1.1 何謂ORM 68
2.1.2 ORM的映射方式 69
2.1.3 MyBatis的映射方式 70
2.2 MyBatis入門 71
2.2.1 MyBatis的下載和安裝 72
2.2.2 MyBatis的數據庫操作 72
2.2.3 使用MyBatis執行CRUD 78
2.2.4 利用Mapper對象 80
2.2.5 在Eclipse中使用MyBatis 84
2.3 MyBatis核心API及作用域 90
2.3.1 SqlSessionFactoryBuilder的作用域 90
2.3.2 SqlSessionFactory的作用域 91
2.3.3 SqlSession及其作用域 92
2.3.4 Mapper組件的作用域 94
2.4 MyBatis配置詳解 94
2.4.1 屬性配置 95
2.4.2 設置配置 98
2.4.3 為類型配置別名 101
2.4.4 對象工廠 103
2.4.5 加載Mapper 105
2.5 類型處理器 106
2.5.1 內置的類型處理器 106
2.5.2 自定義類型處理器 107
2.5.3 枚舉的類型處理器 111
2.5.4 存儲枚舉值的序號 112
2.5.5 同時存儲枚舉值的名稱和序號 113
2.6 數據庫環境配置 116
2.6.1 環境配置與默認環境配置 116
2.6.2 事務管理器 117
2.6.3 數據源配置 121
2.6.4 配置第三方C3P0數據源 122
2.7 支持不同類型的數據庫 124
2.8 Mapper基礎 127
2.8.1 select的用法 128
2.8.2 insert的用法 130
2.8.3 使用useGeneratedKeys返回 自增長的主鍵值 131
2.8.4 使用selectKey生成主鍵值 132
2.8.5 update和delete元素的用法 134
2.8.6 使用sql元素定義可復用的SQL片段 134
2.8.7 參數處理 136
2.8.8 參數的額外聲明 142
2.8.9 字符串替換 142
2.9 MyBatis代碼生成器 144
2.9.1 提供配置文件 145
2.9.2 運行MBG 146
2.10 本章小結 149

第3章 深入使用MyBatis 151
3.1 結果集映射 152
3.1.1 簡單resultMap映射 152
3.1.2 構造器映射 154
3.1.3 自動映射 157
3.2 調用存儲過程 159
3.2.1 調用返回結果集的存儲過程 159
3.2.2 調用帶out模式參數的存儲過程 160
3.2.3 調用傳出參數為游標引用的存儲過程 162
3.3 關聯映射 165
3.3.1 基于嵌套select的一對一映射 165
3.3.2 基于嵌套select映射策略的性能缺陷 171
3.3.3 延遲加載的原理 175
3.3.4 基于多表連接查詢的一對一映射 176
3.3.5 基于多結果集的一對一映射 182
3.3.6 基于嵌套select的一對多映射 184
3.3.7 基于多表連接查詢的一對多映射 191
3.3.8 基于多結果集的一對多映射 192
3.3.9 多對多映射的三種策略 194
3.4 基于辨別者列的繼承映射 201
3.4.1 繼承映射的簡單示例 201
3.4.2 繼承映射的復雜示例 205
3.5 動態SQL 210
3.5.1 if元素的用法 210
3.5.2 在update更新列中使用if 216
3.5.3 在insert動態插入列中使用if 219
3.5.4 choose、when、otherwise元素的 用法 222
3.5.5 where與trim的用法 225
3.5.6 set與trim的用法 228
3.5.7 使用trim實現動態插入 230
3.5.8 foreach元素的基本用法 232
3.5.9 foreach實現批量插入 234
3.5.10 foreach實現批量更新 236
3.5.11 bind元素的用法 239
3.6 緩存 240
3.6.1 一級緩存 240
3.6.2 一級緩存的臟數據與避免方法 243
3.6.3 二級緩存 246
3.6.4 二級緩存的臟數據與避免方法 248
3.6.5 整合Ehcache實現二級緩存 252
3.7 用插件擴展MyBatis 254
3.7.1 攔截器接口及作用原理 254
3.7.2 可攔截的目標 256
3.7.3 為MyBatis開發分頁插件 260
3.8 本章小結 266

第4章 Spring的基礎用法 267
4.1 Spring簡介和Spring 5的變化 268
4.1.1 Spring簡介 268
4.1.2 Spring 5.x的變化 269
4.2 Spring入門 269
4.2.1 Spring的下載和安裝 270
4.2.2 使用Spring管理Bean 270
4.2.3 在Eclipse中使用Spring 274
4.3 Spring的核心機制:依賴注入 276
4.3.1 理解依賴注入 277
4.3.2 設值注入 278
4.3.3 構造注入 282
4.3.4 兩種注入方式的對比 284
4.4 使用Spring容器 284
4.4.1 Spring容器 284
4.4.2 使用ApplicationContext 286
4.4.3 ApplicationContext的國際化支持 287
4.4.4 ApplicationContext的事件機制 289
4.4.5 讓Bean獲取Spring容器 292
4.5 Spring容器中的Bean 294
4.5.1 Bean的基本定義和Bean別名 294
4.5.2 容器中Bean的作用域 295
4.5.3 配置依賴 299
4.5.4 設置普通屬性值 300
4.5.5 配置合作者Bean 302
4.5.6 使用自動裝配注入合作者Bean 302
4.5.7 注入嵌套Bean 305
4.5.8 注入集合值 306
4.5.9 組合屬性 311
4.5.10 Spring的Bean和JavaBean 312
4.6 Spring的Java配置管理 313
4.7 創建Bean的三種方式 316
4.7.1 使用構造器創建Bean 316
4.7.2 使用靜態工廠方法創建Bean 317
4.7.3 使用實例工廠方法創建Bean 319
4.8 深入理解容器中的Bean 321
4.8.1 抽象Bean與子Bean 322
4.8.2 Bean繼承與Java繼承的區別 323
4.8.3 容器中的工廠Bean 323
4.8.4 獲得Bean本身的id 326
4.8.5 強制初始化Bean 327
4.9 容器中Bean的生命周期 327
4.9.1 依賴關系注入之后的行為 328
4.9.2 Bean銷毀之前的行為 330
4.9.3 協調作用域不同步的Bean 332
4.10 高級依賴關系配置 336
4.10.1 獲取其他Bean的屬性值 336
4.10.2 獲取Field值 339
4.10.3 獲取方法的返回值 341
4.11 基于XML Schema的簡化配置方式 344
4.11.1 使用p:命名空間簡化配置 344
4.11.2 使用c:命名空間簡化配置 345
4.11.3 使用util:命名空間簡化配置 347
4.12 Spring表達式語言 349
4.12.1 使用Expression接口進行表達式求值 350
4.12.2 Bean定義中的表達式語言支持 352
4.12.3 SpEL語法詳述 353
4.13 本章小結 358

第5章 深入使用Spring 359
5.1 兩種后處理器 360
5.1.1 Bean后處理器 360
5.1.2 Bean后處理器的用處 364
5.1.3 容器后處理器 364
5.1.4 屬性占位符配置器 366
5.1.5 重寫占位符配置器 367
5.2 “零配置”支持 368
5.2.1 搜索Bean類 368
5.2.2 指定Bean的作用域 371
5.2.3 使用@Resource、@Value配置依賴 372
5.2.4 使用@PostConstruct和@PreDestroy定制生命周期行為 373
5.2.5 @DependsOn和@Lazy 374
5.2.6 自動裝配和精確裝配 374
5.2.7 Spring 5新增的注解 379
5.3 資源訪問 380
5.3.1 Resource實現類 381
5.3.2 ResourceLoader接口和 ResourceLoaderAware接口 385
5.3.3 使用Resource作為屬性 388
5.3.4 在ApplicationContext中使用資源 389
5.4 Spring的AOP 392
5.4.1 為什么需要AOP 393
5.4.2 使用AspectJ實現AOP 394
5.4.3 AOP的基本概念 401
5.4.4 Spring的AOP支持 402
5.4.5 基于注解的“零配置”方式 403
5.4.6 基于XML配置文件的管理方式 418
5.5 Spring的緩存機制 424
5.5.1 啟用Spring緩存 425
5.5.2 使用@Cacheable執行緩存 427
5.5.3 使用@CacheEvict清除緩存數據 431
5.6 Spring的事務 433
5.6.1 Spring支持的事務策略 433
5.6.2 使用XML Schema配置事務策略 436
5.6.3 使用@Transactional 442
5.7 Spring整合MyBatis 443
5.7.1 整合MyBatis的關鍵點及快速入門 443
5.7.2 配置SqlSessionFactory 448
5.7.3 通過工廠Bean配置Mapper組件 449
5.7.4 通過掃描自動配置Mapper組件 450
5.7.5 基于SqlSession實現DAO組件 452
5.7.6 繼承SqlSessionDaoSupport實現DAO組件 455
5.7.7 事務管理 457
5.8 本章小結 458

第6章 Spring MVC的基礎用法 459
6.1 MVC概述 460
6.1.1 MVC模式及其優勢 460
6.1.2 Spring MVC與Struts 2的區別 461
6.2 Spring MVC入門 463
6.2.1 在Web應用中啟動Spring容器 463
6.2.2 配置核心控制器 466
6.2.3 開發控制器 468
6.2.4 提供視圖資源 470
6.2.5 使用Eclipse開發Spring MVC應用 471
6.3 Spring MVC的流程 472
6.3.1 Spring MVC應用的開發步驟 472
6.3.2 Spring MVC的運行流程 474
6.3.3 DispatcherServlet詳解 475
6.3.4 mvc:annotation-driven詳解 480
6.4 靜態資源處理 481
6.4.1 靜態資源映射 481
6.4.2 配置默認Servlet 483
6.5 視圖解析器 485
6.5.1 UrlBasedViewResolver的功能與用法 486
6.5.2 InternalResourceViewResolver的功能與用法 491
6.5.3 XmlViewResolver及視圖解析器的鏈式處理 492
6.5.4 ResourceBundleViewResolver的功能與用法 496
6.5.5 BeanNameViewResolver的功能與用法 497
6.5.6 重定向視圖 499
6.5.7 將數據傳給重定向目標 500
6.5.8 ContentNegotiatingViewResolver的功能與用法 503
6.6 請求映射與參數處理 510
6.6.1 HandlerMapping與處理映射 510
6.6.2 SimpleUrlHandlerMapping的功能與用法 511
6.6.3 @RequestMapping注解及其變體 512
6.6.4 處理方法允許的返回值類型 515
6.6.5 @RequestParam注解與MultiValueMap 516
6.6.6 使用@PathVariable獲取路徑變量的值 520
6.6.7 使用@PathVariable處理正則 表達式 523
6.6.8 路徑模式 524
6.6.9 使用@MatrixVariable處理Matrix變量 526
6.6.10 使用@RequestHeader獲取請求頭的值 529
6.6.11 異步處理 530
6.6.12 使用DeferredResult支持異步處理 534
6.6.13 使用@ModelAttribute修飾方法本身 536
6.6.14 使用@ModelAttribute修飾方法參數 539
6.7 將數據傳給視圖頁面 541
6.7.1 Model、ModelMap和RedirectAttributes 541
6.7.2 使用@SessionAttributes添加session屬性 542
6.8 RESTful服務支持 544
6.8.1 RESTful簡介 544
6.8.2 @RequestBody與@ResponseBody注解 546
6.8.3 HttpMessageConverter與消息轉換 550
6.8.4 轉換XML數據 553
6.8.5 使用@RestController修飾RESTful控制器 557
6.8.6 @CrossOrigin注解與跨域請求 557
6.9 訪問Servlet API相關數據 561
6.9.1 處理方法可接受的形參類型 561
6.9.2 使用@RequestAttribute獲取請求屬性 562
6.9.3 使用@SessionAttribute獲取session屬性 563
6.9.4 直接訪問Servlet API 566
6.9.5 使用WebRequest和NativeWebRequest偽訪問 567
6.9.6 使用@CookieValue獲取cookie值 569
6.9.7 在處理方法中使用IO流 571
6.10 本章小結 573

第7章 深入使用Spring MVC 574
7.1 國際化 575
7.1.1 國際化到底怎么做 575
7.1.2 根據瀏覽器請求頭確定Locale 577
7.1.3 根據session確定Locale 582
7.1.4 根據cookie值確定Locale 586
7.2 異常處理 587
7.2.1 Spring MVC異常處理 587
7.2.2 傳統的異常處理機制 590
7.2.3 使用@ResponseStatus修飾異常類 594
7.2.4 使用@ExceptionHandler修飾異常 處理方法 596
7.2.5 使用@ControllerAdvice定義異常Aspect 599
7.2.6 使用@RestControllerAdvice定義異常Aspect 600
7.3 標簽庫 602
7.3.1 form標簽與普通表單域標簽 602
7.3.2 radiobutton和radiobuttons標簽 605
7.3.3 checkbox和checkboxes標簽 607
7.3.4 select和option、options標簽 610
7.3.5 htmlEscape和escapeBody標簽 612
7.3.6 url和param標簽 613
7.4 類型轉換與綁定 615
7.4.1 BeanWrapper簡介 616
7.4.2 PropertyEditor與內置實現類 618
7.4.3 自定義PropertyEditor 619
7.4.4 使用WebBindingInitializer注冊全局PropertyEditor 621
7.4.5 使用ConversionService執行轉換 623
7.4.6 處理轉換錯誤 626
7.5 格式化 629
7.5.1 使用格式化器 630
7.5.2 使用FormatterRegistrar注冊 格式化器 633
7.6 數據校驗 634
7.6.1 使用Validation執行校驗 634
7.6.2 基于JSR 303執行校驗 638
7.7 文件上傳與下載 641
7.7.1 使用MultipartFile處理文件上傳 641
7.7.2 基于Commons FileUpload組件 上傳文件 646
7.7.3 使用@RequestPart注解 647
7.7.4 文件下載 650
7.7.5 下載前的授權控制 652
7.8 攔截器 653
7.9 SSM整合開發 656
7.9.1 搭建項目 657
7.9.2 開發Mapper組件 659
7.9.3 開發Service組件 660
7.9.4 控制器與視圖 661
7.10 本章小結 666

第8章 簡單工作流系統 667
8.1 項目背景及系統結構 668
8.1.1 應用背景 668
8.1.2 系統功能介紹 668
8.1.3 相關技術介紹 669
8.1.4 系統結構 670
8.1.5 系統的功能模塊 670
8.2 領域對象層 671
8.2.1 設計領域對象 671
8.2.2 創建領域對象類 672
8.3 實現Mapper(DAO)層 677
8.3.1 Mapper組件的定義 677
8.3.2 實現Mapper組件 681
8.3.3 部署Mapper層 685
8.4 實現Service層 686
8.4.1 業務邏輯組件的設計 686
8.4.2 實現業務邏輯組件 687
8.4.3 事務管理 692
8.4.4 部署業務邏輯組件 693
8.5 實現任務的自動調度 693
8.5.1 使用Quartz 693
8.5.2 在Spring中使用Quartz 698
8.6 實現系統Web層 700
8.6.1 配置核心控制器和啟動Spring容器 700
8.6.2 控制器的處理順序 701
8.6.3 員工登錄 702
8.6.4 進入打卡 705
8.6.5 處理打卡 707
8.6.6 進入申請 708
8.6.7 提交申請 709
8.6.8 使用攔截器完成權限管理 710
8.7 本章小結 712
序: