第1章 從一個簡單的Web應用 1
正所謂“工欲善其事,必先利其器”,在正式開始設計並開發我們的輕量級Java Web框架之前,有必要首先掌握以下技能:
使用IDEA搭建並開發Java項目;
使用Maven自動化構建Java項目;
使用Git管理項目源代碼。
1.1 使用IDEA創建Maven項目 3
1.1.1 創建IDEA項目 3
1.1.2 調整Maven配置 3
1.2 搭建Web項目框架 5
1.2.1 轉為Java Web項目 5
1.2.2 添加Java Web的Maven依賴 6
1.3 編寫一個簡單的Web應用 10
1.3.1 編寫 Servlet類 10
1.3.2 編寫JSP頁麵 11
1.4 讓Web應用跑起來 12
1.4.1 在IDEA中配置Tomcat 12
1.4.2 使用Tomcat的Maven插件 13
1.4.3 以Debug方式運行程序 13
1.5 將代碼放入Git倉庫中 14
1.5.1 編寫.gitignore文件 14
1.5.2 提交本地 Git 倉庫 15
1.5.3 推送遠程Git倉庫 15
1.5.4 總結 16
第2章 為Web應用添加業務功能 17
我們將在這個應用的基礎上增加一些業務功能,您將學會更多有關項目實戰的技能,具體包括:
如何進行需求分析;
如何進行係統設計;
如何編寫應用程序。
2.1 需求分析與係統設計 19
2.1.1 需求分析 19
2.1.2 係統設計 19
2.2 動手開發Web應用 21
2.2.1 創建數據庫 22
2.2.2 準備開發環境 22
2.2.3 編寫模型層 23
2.2.4 編寫控製器層 25
2.2.5 編寫服務層 27
2.2.6 編寫單元測試 28
2.2.7 編寫視圖層 31
2.3 細節完善與代碼優化 31
2.3.1 完善服務層 32
2.3.2 完善控製器層 59
2.3.3 完善視圖層 60
2.4 總結 65
第3章 搭建輕量級Java Web框架 66
我們需要這樣的框架,它足夠輕量級、足夠靈巧,不妨給它取一個優雅的名字——Smart Framework,本章我們就一起來實現這個框架。
您將通過本章的學習,掌握如下技能:
如何快速搭建開發框架;
如何加載並讀取配置文件;
如何實現一個簡單的IOC容器;
如何加載指定的類;
如何初始化框架。
3.1 確定目標 68
3.2 搭建開發環境 70
3.2.1 創建框架項目 70
3.2.2 創建示例項目 73
3.3 定義框架配置項 74
3.4 加載配置項 75
3.5 開發一個類加載器 78
3.6 實現Bean容器 87
3.7 實現依賴注入功能 90
3.8 加載Controller 93
3.9 初始化框架 97
3.10 請求轉發器 98
3.11 總結 109
第4章 使框架具備AOP特性 110
在本章中,讀者將學到大量有用的技術,具體包括:
如何理解並使用代理技術;
如何使用Spring提供的AOP技術;
如何使用動態代理技術實現AOP框架;
如何理解並使用ThreadLocal技術;
如何理解數據庫事務管理機製;
如何使用AOP框架實現事務控製。
4.1 代理技術簡介 112
4.1.1 什麼是代理 112
4.1.2 JDK動態代理 114
4.1.3 CGlib動態代理 116
4.2 AOP技術簡介 118
4.2.1 什麼是AOP 118
4.2.2 寫死代碼 119
4.2.3 靜態代理 120
4.2.4 JDK動態代理 121
4.2.5 CGLib動態代理 122
4.2.6 Spring AOP 124
4.2.7 Spring + AspectJ 136
4.3 開發AOP框架 142
4.3.1 定義切麵注解 142
4.3.2 搭建代理框架 143
4.3.3 加載AOP框架 150
4.4 ThreadLocal簡介 158
4.4.1 什麼是ThreadLocal 158
4.4.2 自己實現ThreadLocal 161
4.4.3 ThreadLocal使用案例 163
4.5 事務管理簡介 172
4.5.1 什麼是事務 172
4.5.2 事務所麵臨的問題 173
4.5.3 Spring的事務傳播行為 175
4.6 實現事務控製特性 178
4.6.1 定義事務注解 178
4.6.2 提供事務相關操作 181
4.6.3 編寫事務代理切麵類 182
4.6.4 在框架中添加事務代理機製 184
4.7 總結 185
第5章 框架優化與功能擴展 186
本章將對現有框架進行優化,並提供一些擴展功能。通過本章的學習,讀者可以瞭解到:
如何優化Action參數;
如何實現文件上傳功能;
如何與Servlet API完全解耦;
如何實現安全控製框架;
如何實現Web服務框架。
5.1 優化Action參數 188
5.1.1 明確Action參數優化目標 188
5.1.2 動手優化Action參數使用方式 188
5.2 提供文件上傳特性 191
5.2.1 確定文件上傳使用場景 191
5.2.2 實現文件上傳功能 194
5.3 與Servlet API解耦 214
5.3.1 為何需要與Servlet API解耦 214
5.3.2 與Servlet API解耦的實現過程 215
5.4 安全控製框架——Shiro 219
5.4.1 什麼是Shiro 219
5.4.2 Hello Shiro 220
5.4.3 在Web開發中使用Shiro 224
5.5 提供安全控製特性 230
5.5.1 為什麼需要安全控製 230
5.5.2 如何使用安全控製框架 231
5.5.3 如何實現安全控製框架 242
5.6 Web服務框架——CXF 261
5.6.1 什麼是CXF 261
5.6.2 使用CXF開發SOAP服務 262
5.6.3 基於SOAP的安全控製 278
5.6.4 使用CXF開發REST服務 291
5.7 提供Web服務特性 308
5.8 總結 329
附錄A Maven快速入門 330
附錄B 將構件發布到Maven中央倉庫 342
· · · · · · (
收起)
評分
☆☆☆☆☆
力荐此书,至少是前4章,作者有一个非常厉害的能力,能用简单的语言把复杂的技术娓娓道来, 感觉是个低配版的Bruce Eckel。本人想深入java,在图书馆翻到了此书,不得不说运气非常好。 此书从介绍一个简单web项目,让读者迅速上手,然后逐渐开始优化,例如使用threadlocal隐藏j...
評分
☆☆☆☆☆
看完了全书的前四章,后面一章有点难,没有耐心好好看,留着以后看。可能有人看到这里就是想知道值不值得读,我觉得还是比较值得读的,如果你对IOC和AOP,事务等的实现比较好奇,那就更好了。 这本书的优缺点都很明显,列举如下。 优点: 1. 附带代码有一定的价值,实现了IOC,...
評分
☆☆☆☆☆
P48 页, 作者说"为了确保一个线程中只有一个Connection, 我们可以使用 ThreadLocal来存放本地线程变量". 这句话本身没有问题, 但是示例代码中是通过 `DriverManager.getConnection` 来创建的连接, 也就是说每个连接都是全新的, 不是从连接池里取的, 也就没有线程安全问题, 没有...
評分
☆☆☆☆☆
不要被某些人的差评欺骗了,对于没有深入了解过Spring框架的同学,希望了解Spring IoC和AOP实现原理而不知道如何入手的人,感觉这本书给出了最好的指引,现在耐心地手把手教人写代码,介绍原理的书太少了,这是一本难能可贵的书。 至于说贴代码,对于新手来说,贴上完整代码不...
評分
☆☆☆☆☆
P48 页, 作者说"为了确保一个线程中只有一个Connection, 我们可以使用 ThreadLocal来存放本地线程变量". 这句话本身没有问题, 但是示例代码中是通过 `DriverManager.getConnection` 来创建的连接, 也就是说每个连接都是全新的, 不是从连接池里取的, 也就没有线程安全问题, 没有...