`
downpour
  • 浏览: 713690 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
00a07ae5-264f-3774-8903-8ad88ce08cb0
Struts2技术内幕
浏览量:116795
4d8508f2-c0dd-3df8-9483-04cc612afbbc
SpringMVC深度探险...
浏览量:229912
社区版块
存档分类
最新评论

新书上市:《Struts2技术内幕》

阅读更多
我的新书《Struts2技术内幕》终于上市了。

china-pub地址:http://product.china-pub.com/198891

当当网地址:http://product.dangdang.com/product.aspx?product_id=22577578

京东地址:http://book.360buy.com/10898511.html

卓越地址:http://www.amazon.cn/Struts2%E6%8A%80%E6%9C%AF%E5%86%85%E5%B9%95-%E6%B7%B1%E5%85%A5%E8%A7%A3%E6%9E%90Struts%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86-%E9%99%86%E8%88%9F/dp/B006P7V7IQ/ref=sr_1_1?ie=UTF8&qid=1324909766&sr=8-1

写一本书不容易,尤其是如果作者打定主意对读者负责的话,那就更不容易了。所以这本书的创作过程还是比较艰辛的。这个帖子不仅是一个上市告之,同时也是我自己的一个自评,希望对读者的阅读有一些启示和帮助。

书的整体结构分成3个主要部分:知识准备篇、核心技术篇和运行主线篇。

知识准备篇

这一篇以理论知识为主,并没有涉及到非常具体的Struts2的知识。因为在整个写作的过程中,我发现理论知识实际上比框架本身更为重要。而框架的设计理念的出发点实际上都是基于这些理论知识的。

第一章,主要讲和开发环境搭建有关的话题。这一章的内容对于相对有经验的程序员来说帮助不大,因为在这一章中提到的一些观点和内容都是在日常工作中的良好工作习惯的概括。我在这一章中所强调的内容核心是:借助IDE的帮助对于开源框架进行源码调试,这是学习源码、阅读源码的一个最为重要的方法和学习途径。

第二章,主要讲和Web开发相关的概念性话题。这一章的内容非常重要,在我个人看来是本书的精华部分之一。尤其是在第二章起始对于面向对象概念的一个分析,与大家在其他书中所经常看到的“封装、继承”这类的讲解完全不同,而是选取了一个独特的视角:对象的语法构成分析。除此之外,我在第二章中还给出了一些Web开发的基本概念和最佳实践。这些内容的目的都是帮助读者理顺整个Web开发的思路。

第三章,主要对Struts2的方方面面做一个概况介绍。这一章的内容比较基础,并不涉及到很具体的源码解析。我个人认为对于Struts2的运行主线的划分以及宏观元素和微观元素的梳理应该能够起到一个提纲挈领的作用。

核心技术篇

这一篇主要涉及到Struts2运行所依赖的核心技术,内容涵盖有:Struts2中最常使用的一些设计模式、XWork的容器设计、OGNL相关的知识、XWork的设计原理和技术分析。这些技术主要围绕着两个Struts2的核心依赖展开:OGNL和XWork。虽然我们花了大量的篇幅在Struts2以外的地方,但是读者依然应该把这些内容看作是Struts2不可分割的组成部分。

第四章,选取了5种Struts2中最常用的设计模式进行分析。从整本书的角度来看,这一章的内容应该是整书的败笔。因为设计模式本身并不是Struts2的核心内容,而且设计模式本身博大精深,也并不是本书的主要内容。其实我原本的目的是希望借助这些设计模式的讲解,告诉读者Struts2在选择实现模型的初衷到底是什么,但是写着写着就有点一发而不可收拾,虽然在每个设计模式中,我都刻意强调了设计模式与Struts2设计要点上的呼应之处,但是读者读起来还是会觉得非常乏味,有偏离主题之嫌。读者可以权且当作一种知识性的介绍来读。

第五章,话题转到了XWork的容器设计。XWork的容器是整个Struts2运行的基础,所以在核心技术的介绍中,我把XWork容器的设计要点放在了比较前面的章节进行讲解。这一章的内容比较深,涉及到了XWork最核心的容器实现,可以说是整本书中最难理解的部分。不过其内部实现的源码分析部分,却是至今为止市面上所有资料(包括书籍和网络资料)中独一无二的。所以对于读者来说应该还算有一些现实价值。这一章的缺点在于,由于某些概念性的东西要讲清楚实在不容易,所以我采取了一些个人的观点加以解释,而这些解释可能和这些概念本身所表达的意思有所出入。例如,在这一章有关“控制反转”和“依赖注入”的概念上,我并没有明确区分两者的差异,而是尽可能希望将两者同质化。希望读者在阅读的时候,抓住本质,而不要纠结在一些用词和概念表述上的差异。

第六章,主要向读者介绍OGNL的相关知识。这一章的内容,是整本书中另外一个精华之处。我在写这一章时,也参考了网络上许多OGNL相关的教程,但是发现它们的最大问题是无法将OGNL提升到一个“Web开发过程中的重要依赖组件”的高度来进行说明。因此,我在写这一章时,首先就提出OGNL成为Struts2核心依赖的重要原因是它作为一个表达式引擎的不可或缺性。这一章的另外一个特色是深入到了OGNL的源代码级别,对OGNL的API进行详细分析,这一点也是其他的参考书和网络教程所不具备的地方。

第七章和第八章,是整本书最重要,也是最为精华的部分。这两章的内容涉及到的就是XWork框架的来龙去脉。其中,第七章偏重理论分析;第八章偏重源码分析。第七章中有关请求-响应模式的实现分析,不仅是我对于第二章面向对象分析的一个补充,更是揭开了整个MVC框架的实现机理。因此这应该是本书中最为重要的部分。而第八章中,我采取了针对数据流、控制流以及他们之间的交互这三个不同的角度来进行源码角度的分析。应该说许多观点都比较新颖独特,读者可以和其他的章节相互借鉴。

运行主线篇

运行主线篇的内容就涉及到Struts2自身的运行主线了。读者或许会比较奇怪,虽然这本书的书名是《Struts2技术内幕》,实际上绝大多数的篇幅却没有在讲Struts2运行主线相关的内容。当然,这是由Struts2自身的设计理念决定的。这种解耦的思想,也体现在了整本书的讲解之中。

第九章,内容主要涉及到Struts2的初始化主线。这一章的内容实际上有一些核心知识的依赖,读者应该首先对第五章的内容有所了解之后再来看第九章。而第九章的特色在于,我刻意地将源码进行的逻辑步骤划分,并对每个步骤的要点进行了详细的分析

第十章,内容转到了Struts2的请求处理主线。这一章的内容实际上是第八章的“前传”,因为根据Struts2的设计理念,Struts2只负责与Web容器打交道的部分,而XWork才真正负责请求的实际处理。因此,读者将这一章的内容与第八章对应起来看,会起到比较好的效果。

第十一章,这一章的内容不属于Struts2的运行主线,却是MVC模型的重要组成部分。这一章的内容以概念为主,我希望向读者传递的信息是Web框架与浏览器交互的设计思路。因此,在这一章节中,我并没有像其他的网络教程那样纠结在一些具体的实现元素,例如Taglib上,而是将重点放在了蕴藏在实现背后的思想层面。不过作为一个Web框架的重要组成部分,我却没有在书中对其中的Taglib的实现进行详细的分析,或许也是本书的一个不足之处。

第十二章,是一个非常重要的话题:框架的扩展机制。这一篇的内容相对简单,没有什么值得说的闪光点。主要因为这一章的内容与第五章和第九章的内容联系过于紧密,几乎是由于话题的重要性而单独列出来的一个章节,所以读者在阅读时请体会设计上的思想而不是源码上的实现机制。

后续博客:尚未完成的话题
分享到:
评论
25 楼 paladin1988 2015-06-25  
非常好的一本书,哈哈。支持一下。
24 楼 hanmiao 2014-09-02  
亚马逊的链接改成这样会简单些。http://www.amazon.cn/dp/B006P7V7IQ/
23 楼 hanmiao 2014-09-02  
我在亚马逊中国买了壹本,挺不错的书。
22 楼 xiaobinxiaobinaini 2013-12-07  
请问书中的代码在哪里可以下载到 啊?
21 楼 bin733 2013-05-20  
已经买了一本 支持楼主 
20 楼 lazy_ 2013-03-22  
lazy_ 写道
如果看书有问题,可以在哪里留言呢?

我已经读了8成了。
19 楼 lazy_ 2013-03-22  
如果看书有问题,可以在哪里留言呢?
18 楼 lazy_ 2013-03-22  
downpour 写道
其实我是一名程序员 写道
我就不明白了,明知道第四章是败笔,为什么不改呢,你不能一句“写着写着就有点一发而不可收拾”就当做理由吧。作者是不是应该对读者负责呢?


因为每个人看法不同,我认为是败笔,但是编辑和许多其他读者都反映不错,所以最终审稿时还是保留了下来。毕竟这章里面讲的设计模式和其他设计模式书讲得都不太一样,还是值得一看的。


我觉得还是讲得不错的啊,除了builder模式个人觉得没有完全讲清楚之外。

17 楼 wyfspring 2013-01-09  
其实我是一名程序员 写道
downpour 写道
其实我是一名程序员 写道
我就不明白了,明知道第四章是败笔,为什么不改呢,你不能一句“写着写着就有点一发而不可收拾”就当做理由吧。作者是不是应该对读者负责呢?


因为每个人看法不同,我认为是败笔,但是编辑和许多其他读者都反映不错,所以最终审稿时还是保留了下来。毕竟这章里面讲的设计模式和其他设计模式书讲得都不太一样,还是值得一看的。

看完了作者的这本书,实在是佩服作者的技术功底。可是我觉得这并不是一本好书,觉得整体的思路比较乱,没有去引导读者去发现问题,说明问题。觉得作者像在写文章一样,我一直认为书本应该是引导读者,解答读者心中的疑惑。而作者一直是以自己的角度在写文章,没有关心读者需要的是什么。真正的好书应该像王爽老师的《汇编语言》那样的,可以把一问如此乏味的语言讲得那么亲切。那么得深入读者的心,就像知道读者在想什么一样。

仁者见仁智者见智,读者能在一本书里得到自己想要的东西就行了。
16 楼 其实我是一名程序员 2012-12-21  
downpour 写道
其实我是一名程序员 写道
我就不明白了,明知道第四章是败笔,为什么不改呢,你不能一句“写着写着就有点一发而不可收拾”就当做理由吧。作者是不是应该对读者负责呢?


因为每个人看法不同,我认为是败笔,但是编辑和许多其他读者都反映不错,所以最终审稿时还是保留了下来。毕竟这章里面讲的设计模式和其他设计模式书讲得都不太一样,还是值得一看的。

看完了作者的这本书,实在是佩服作者的技术功底。可是我觉得这并不是一本好书,觉得整体的思路比较乱,没有去引导读者去发现问题,说明问题。觉得作者像在写文章一样,我一直认为书本应该是引导读者,解答读者心中的疑惑。而作者一直是以自己的角度在写文章,没有关心读者需要的是什么。真正的好书应该像王爽老师的《汇编语言》那样的,可以把一问如此乏味的语言讲得那么亲切。那么得深入读者的心,就像知道读者在想什么一样。
15 楼 downpour 2012-12-18  
其实我是一名程序员 写道
我就不明白了,明知道第四章是败笔,为什么不改呢,你不能一句“写着写着就有点一发而不可收拾”就当做理由吧。作者是不是应该对读者负责呢?


因为每个人看法不同,我认为是败笔,但是编辑和许多其他读者都反映不错,所以最终审稿时还是保留了下来。毕竟这章里面讲的设计模式和其他设计模式书讲得都不太一样,还是值得一看的。
14 楼 其实我是一名程序员 2012-12-18  
我就不明白了,明知道第四章是败笔,为什么不改呢,你不能一句“写着写着就有点一发而不可收拾”就当做理由吧。作者是不是应该对读者负责呢?
13 楼 zhouchaofei2010 2012-10-10  
zhouchaofei2010 写道
downpour前辈你好,我已经把《Struts2技术内幕》从头到尾都研读了一遍,但是对其中还是有很多疑惑的地方。其中一个问题疑惑了我好久,容器Container是一个全局单例的变量,这是在初始化主线中实现的,但是这具体是在哪段源代码中实现的呢?StrutsPrepareAndExecuteFilter 有变量PrepareOperations prepare 和 ExecuteOperations execute; 但是没有一个有对Container 变量的引用啊。疑惑中,希望能得到前辈的指点。



知道了,缓存在DefaultConfiguration 对象里
12 楼 zhouchaofei2010 2012-10-09  
downpour前辈你好,我已经把《Struts2技术内幕》从头到尾都研读了一遍,但是对其中还是有很多疑惑的地方。其中一个问题疑惑了我好久,容器Container是一个全局单例的变量,这是在初始化主线中实现的,但是这具体是在哪段源代码中实现的呢?StrutsPrepareAndExecuteFilter 有变量PrepareOperations prepare 和 ExecuteOperations execute; 但是没有一个有对Container 变量的引用啊。疑惑中,希望能得到前辈的指点。
11 楼 awakensandman 2012-05-25  
之前阅读楼主的文章,感觉很有收获。 必须买一本支持一下!
10 楼 g29times 2012-05-23  
强烈支持大牛!!
9 楼 ypfoo 2012-04-23  
支持下楼主
8 楼 pphqq 2012-03-13  
刚刚在京东上下单了,51.8。有点小贵哦……
7 楼 juedui0769 2012-03-04  
今天刚拿到手。
6 楼 ddkk 2012-02-22  
在亚马逊买的

相关推荐

Global site tag (gtag.js) - Google Analytics