我的新書《struts2技術內幕》終於上市了。
寫一本書不容易,尤其是如果作者打定主意對讀者負責的話,那就更不容易了。所以這本書的創作過程還是比較艱辛的。這個帖子不僅是乙個上市告之,同時也是我自己的乙個自評,希望對讀者的閱讀有一些啟示和幫助。
書的整體結構分成3個主要部分:知識準備篇、核心技術篇和執行主線篇。
[b][color=blue][size=large]知識準備篇[/size][/color][/b]
這一篇以理論知識為主,並沒有涉及到非常具體的struts2的知識。因為在整個寫作的過程中,我發現理論知識實際上比框架本身更為重要。而框架的設計理念的出發點實際上都是基於這些理論知識的。
第一章,主要講和開發環境搭建有關的話題。這一章的內容對於相對有經驗的程式設計師來說幫助不大,因為在這一章中提到的一些觀點和內容都是在日常工作中的良好工作習慣的概括。我在這一章中所強調的內容核心是:[b]借助ide的幫助對於開源框架進行原始碼除錯,這是學習原始碼、閱讀原始碼的乙個最為重要的方法和學習途徑。[/b]
第二章,主要講和web開發相關的概念性話題。這一章的內容非常重要,在我個人看來是本書的精華部分之一。[b]尤其是在第二章起始對於物件導向概念的乙個分析,與大家在其他書中所經常看到的「封裝、繼承」這類的講解完全不同,而是選取了乙個獨特的視角:物件的語法構成分析。[/b]除此之外,我在第二章中還給出了一些web開發的基本概念和最佳實踐。這些內容的目的都是幫助讀者理順整個web開發的思路。
第三章,主要對struts2的方方面面做乙個概況介紹。這一章的內容比較基礎,並不涉及到很具體的原始碼解析。我個人認為[b]對於struts2的執行主線的劃分以及巨集觀元素和微觀元素的梳理應該能夠起到乙個提綱挈領的作用。[/b]
[b][color=blue][size=large]核心技術篇[/size][/color][/b]
這一篇主要涉及到struts2執行所依賴的核心技術,內容涵蓋有:struts2中最常使用的一些設計模式、xwork的容器設計、ognl相關的知識、xwork的設計原理和技術分析。這些技術主要圍繞著兩個struts2的核心依賴展開:ognl和xwork。雖然我們花了大量的篇幅在struts2以外的地方,但是讀者依然應該把這些內容看作是struts2不可分割的組成部分。
第四章,選取了5種struts2中最常用的設計模式進行分析。[b]從整本書的角度來看,這一章的內容應該是整書的敗筆。[/b]因為設計模式本身並不是struts2的核心內容,而且設計模式本身博大精深,也並不是本書的主要內容。其實我原本的目的是希望借助這些設計模式的講解,告訴讀者struts2在選擇實現模型的初衷到底是什麼,但是寫著寫著就有點一發而不可收拾,雖然在每個設計模式中,我都刻意強調了設計模式與struts2設計要點上的呼應之處,但是讀者讀起來還是會覺得非常乏味,有偏離主題之嫌。讀者可以權且當作一種知識性的介紹來讀。
第五章,話題轉到了xwork的容器設計。xwork的容器是整個struts2執行的基礎,所以在核心技術的介紹中,我把xwork容器的設計要點放在了比較前面的章節進行講解。這一章的內容比較深,涉及到了xwork最核心的容器實現,可以說是整本書中最難理解的部分。[b]不過其內部實現的原始碼分析部分,卻是至今為止市面上所有資料(包括書籍和網路資料)中獨一無二的。[/b]所以對於讀者來說應該還算有一些現實價值。[b]這一章的缺點在於,由於某些概念性的東西要講清楚實在不容易,所以我採取了一些個人的觀點加以解釋,而這些解釋可能和這些概念本身所表達的意思有所出入。[/b]例如,在這一章有關「控制反轉」和「依賴注入」的概念上,我並沒有明確區分兩者的差異,而是盡可能希望將兩者同質化。希望讀者在閱讀的時候,抓住本質,而不要糾結在一些用詞和概念表述上的差異。
第六章,主要向讀者介紹ognl的相關知識。[b]這一章的內容,是整本書中另外乙個精華之處。[/b]我在寫這一章時,也參考了網路上許多ognl相關的教程,但是發現它們的最大問題是無法將ognl提公升到乙個「web開發過程中的重要依賴元件」的高度來進行說明。因此,我在寫這一章時,首先就提出ognl成為struts2核心依賴的重要原因是它作為乙個表示式引擎的不可或缺性。[b]這一章的另外乙個特色是深入到了ognl的源**級別,對ognl的api進行詳細分析,這一點也是其他的參考書和網路教程所不具備的地方。[/b]
第七章和第八章,[b]是整本書最重要,也是最為精華的部分。[/b]這兩章的內容涉及到的就是xwork框架的來龍去脈。其中,[b]第七章偏重理論分析;第八章偏重原始碼分析。[/b]第七章中有關請求-響應模式的實現分析,不僅是我對於第二章物件導向分析的乙個補充,更是揭開了整個mvc框架的實現機理。因此這應該是本書中最為重要的部分。而第八章中,我採取了針對資料流、控制流以及他們之間的互動這三個不同的角度來進行原始碼角度的分析。應該說許多觀點都比較新穎獨特,讀者可以和其他的章節相互借鑑。
[b][color=blue][size=large]執行主線篇[/size][/color][/b]
執行主線篇的內容就涉及到struts2自身的執行主線了。讀者或許會比較奇怪,雖然這本書的書名是《struts2技術內幕》,實際上絕大多數的篇幅卻沒有在講struts2執行主線相關的內容。當然,這是由struts2自身的設計理念決定的。這種解耦的思想,也體現在了整本書的講解之中。
第九章,內容主要涉及到struts2的初始化主線。這一章的內容實際上有一些核心知識的依賴,讀者應該首先對第五章的內容有所了解之後再來看第九章。而第九章的特色在於,[b]我刻意地將原始碼進行的邏輯步驟劃分,並對每個步驟的要點進行了詳細的分析[/b]。
第十章,內容轉到了struts2的請求處理主線。這一章的內容實際上是第八章的「前傳」,因為根據struts2的設計理念,struts2只負責與web容器打交道的部分,而xwork才真正負責請求的實際處理。因此,[b]讀者將這一章的內容與第八章對應起來看,會起到比較好的效果。[/b]
第十一章,這一章的內容不屬於struts2的執行主線,卻是mvc模型的重要組成部分。這一章的內容以概念為主,[b]我希望向讀者傳遞的資訊是web框架與瀏覽器互動的設計思路[/b]。因此,在這一章節中,我並沒有像其他的網路教程那樣糾結在一些具體的實現元素,例如taglib上,而是將重點放在了蘊藏在實現背後的思想層面。[b]不過作為乙個web框架的重要組成部分,我卻沒有在書中對其中的taglib的實現進行詳細的分析,或許也是本書的乙個不足之處。[/b]
第十二章,是乙個非常重要的話題:框架的擴充套件機制。這一篇的內容相對簡單,沒有什麼值得說的閃光點。主要因為這一章的內容與第五章和第九章的內容聯絡過於緊密,幾乎是由於話題的重要性而單獨列出來的乙個章節,所以[b]讀者在閱讀時請體會設計上的思想而不是原始碼上的實現機制。[/b]
後續部落格:[url=尚未完成的話題[/url]
《Struts2 技術內幕》讀書筆記之二
第三章 提綱絜領 struts2 概覽 3.1 struts2 面面觀 結論 struts2 的執行環境是web容器。是乙個執行於web容器的表示層框架,其核心作用是幫助我們處理http的請求 執行環境 struts2 所支援的servlet標準的最低版本要求是2.4,相應的jsp標準的最低版本要求...
基於Struts2的核心技術
關於struts2的相關問題 1.1.首先當前端進行請求時,這個請求經過一系列的過濾器 filter 接著filterdispatcher被呼叫 filterdispatcher是控制器的核心,就是mvc中c控制層的核心。filterdispatcher的工作原理 1.1.1 filterdispa...
struts2 一些細微技術
1.defaultaction,一般用在請求不存在時,預設跳轉到defaultaction,例如主頁 default.jsp 2.模組包含 3.萬用字元配置 指第幾個 使用這種方法時約定要做得很好,記住一句話,約定優於配置 student success.jsp success.jsp 4.name...