我们可以就其中的三个sample项目进行举例分析。
struts2-blank-2.2.1.war
一般而言,名为xx-blank-xxx.war的sample项目是一个开源框架的一个最小可运行范例。所以,如果大家仔细学习这个war包中的内容,至少可以发现组成一个Struts2程序的最小元素到底有哪些。在其中的WEB-INF/lib目录下,我们能够找到Struts2程序运行所需要依赖的JAR包的最小集合(如图2-10所示),我们还能从中学习Struts2的各种基础配置的编写等。
| (点击查看大图)图2-10 Struts2所依赖的基本JAR包的最小集合 |
struts2-portlet-2.2.1.war
这个sample项目告诉我们在Portal环境下的Struts2的应用应该如何编写。通过与struts2-blank-2.2.1.war这个项目的比较,大家可以发现,Struts2在应对不同的应用服务器环境方面的不同。
struts2-showcase-2.2.1.war
这个sample项目是Struts2特性的一个大杂烩,包含了绝大多数的Struts2的特性示例。这个sample项目对于大家阅读Reference是非常有帮助的。比如说,大家在阅读文档时看到了“文件上传”的章节,那么大家就可以参考这个项目中的upload子目录中的相关的类和配置。这相当于一边看文档,一边已经有一个现成的可以运行的例子辅助你进行学习。所以,这个项目与Reference的搭配是相得益彰、互为补充的,可以作为大家学习Struts的最佳资源。
最佳实践 自己写一个sample项目亲身体验。
这一点其实不用多说,大家也应该明白。不过笔者还是见过不少程序员,眼高手低,整天吹嘘这个框架的优点,那个框架的优势,但如果让他自己动手用这些框架写一段程序,又变得手足无措。
实践是检验真理的唯一标准。只有自己亲自动手去实践,才能说明你真正掌握了某种技术,理解了某个框架的特性。在编写自己的sample项目时,大家可以针对不同的特性,人为设置好业务场景(例如,使用“登录”作为一个基本的业务场景),在实践中不断地重构你的代码,从而领悟框架开发中的最佳实践,提升自己的开发水平。
最佳实践 带着问题调试(Debug)开源框架的源码。
如果大家对某个开源框架的使用已经比较熟练,对其内部的原理也基本掌握,或许你就会对其中的某些设计原理和设计思想产生兴趣。这个时候,通过开源框架的源码来寻找问题的答案不失为一个很好的进一步学习的途径。
在学习开源框架的源码时,笔者的建议是当程序运行在Debug模式的状态下,对源码进行调试,在Debug的过程中,查看在开源框架的内部到底运行了哪些类,它们的执行顺序是怎样的以及这些类中临时变量的执行状态。笔者坚决反对逐个package地去阅读源码,这毫无意义。因为程序本身是一个整体,程序之所以成为程序,其本质在于它是动态的、运行的。如果我们逐一去阅读源码,就相当于把一个完整的整体进行肢体分解,那么我们将永远无法看到一个完整的动态执行过程。学习源码,最重要的一点在于抓住一个程序在运行过程中某一时刻某个关键类的运行状态和最终状态,而这些都能通过调试源码来实现,这才是阅读源码的最佳实践。
|